Neun Jahre eines Solo-Entwicklers am Texteditor „Paper“
- 2015 war er als gewöhnlicher Full-Stack-Webentwickler weit von der Apple-Entwicklungswelt entfernt.
- Während er einen Mac nutzte, faszinierte ihn die Apps unabhängiger Entwickler, und inspiriert von iA Writer, einem einfachen und eleganten Markdown-Editor, beschloss er, eine ähnliche App zu bauen.
- Um einen nativen Texteditor für den Mac zu entwickeln, begann er, einen neuen Tech-Stack wie Xcode, AppKit und Objective-C zu lernen.
- Er gab der App den Namen Paper und gestaltete den Editor als simples Rechteck, ganz im Sinne eines extremen Minimalismus.
- 2017 erschien die Mac-App im Mac App Store, 2019 folgte die iOS-App.
Warum eine native App gewählt wurde
- Statt einer Electron-App fiel die Wahl auf eine native App, weil das Ziel war, die bestmögliche User Experience zu bieten.
- Native Apps sind leichtgewichtig und schnell und bieten mehr Möglichkeiten, einzigartige textbezogene Funktionen umzusetzen.
Warum Objective-C gewählt wurde
- Als Swift 2015 noch in einem frühen Stadium war, kompilierte er jeweils ein leeres Xcode-Projekt in Objective-C und Swift und verglich die
.app-Pakete.
- Die Swift-App war durch die enthaltene Swift-Runtime etwa 5 MB groß, während die Objective-C-App mit rund 100 KB sehr leichtgewichtig war.
- Weil er eine schlankere, besser verteilbare App wollte, entschied er sich für Objective-C.
Third-Party-Abhängigkeiten
- Paper hat keine Third-Party-Abhängigkeiten.
- Er hat alles selbst gebaut und sich damit einen kleinen Vorteil gegenüber Wettbewerbern verschafft.
- So ist zum Beispiel die Markdown-Parsing-Engine von Paper maßgeschneidert und unterstützt weniger Markdown-Syntax als traditionelle Markdown-Editoren.
Vision
- Die ursprüngliche Vision von Paper war, die Kernfunktionen von iA Writer in ein noch eleganteres und minimalistischeres Paket zu bringen.
- Der Fokus lag darauf, Ablenkungen für Nutzer auf ein Minimum zu reduzieren und so die Konzentration zu erhöhen.
- Mit der Zeit fand Paper seine Position im Markt, indem es den Minimalismus beibehielt und zugleich schrittweise Funktionen ergänzte.
Architektur
- Der Code von Paper besteht aus zwei Scopes: Application Scope und Document Scope.
- Für jeden Scope wurden Storyboards definiert, die Views und Widgets beschreiben und Module innerhalb des Scopes verbinden.
- Module sind Objective-C-Klassen, die einen Teil der Funktionalität innerhalb der App übernehmen und Funktionen an einem Ort bündeln, der sich auf ein bestimmtes Feature bezieht.
Cross-Plattform-Code
- AppKit und UIKit sind einander ähnlich, unterscheiden sich aber in vielen Punkten.
- Um diese Unterschiede aufzulösen, wurden Makros und Kategorien von Objective-C genutzt.
Debugging
- Bei Apple-Frameworks muss man eher die Dokumentation lesen als den Code, und mit Breakpoints kompilierte Stack-Traces analysieren.
Bezahlfunktionen
- In den Jahren 2015–17 waren Abonnements noch nicht weit verbreitet, und in den App Stores waren Einmalkäufe üblich.
- Um Bezahlfunktionen nutzerfreundlich anzubieten, wurden nur kosmetische statt funktionaler Upgrades kostenpflichtig gemacht.
Preisgestaltung
- Anfangs startete er mit zwei Sets von Pro-Funktionen zu je 5 Dollar als Einmalkauf.
- Heute ist das Modell als ein einziges Paket für 10 Dollar pro Monat oder 100 Dollar lebenslang bepreist.
- Durch Preisexperimente stellte er fest, dass Nutzer bereit sind, für die App eines unbekannten Entwicklers bis zu 100 Dollar zu zahlen.
Schwierige Punkte
- Texteditoren sind komplex, und mit jedem OS-Update kommen neue Methoden zum Einfügen, Aktualisieren und Interagieren mit Text hinzu.
Gimmicks
- Es wurden unterhaltsame Funktionen hinzugefügt, etwa ein von der App Things inspirierter Window-Resize-Bounce.
Meinung von GN⁺:
- Innovativer Ansatz: Beeindruckend ist, dass der Entwickler Paper trotz fehlender Erfahrung in der nativen App-Entwicklung mit klarer Priorität auf die User Experience gebaut hat. Das zeigt, wie wichtig nutzerzentriertes Design in der Softwareentwicklung ist.
- Lernen und Wachstum: Der Prozess, einen neuen Tech-Stack zu erlernen und daraus ein Produkt zu schaffen, kann auch für angehende Software Engineers inspirierend sein. Er unterstreicht, dass kontinuierliches Lernen und neue Herausforderungen essenziell für die Entwicklung als Entwickler sind.
- Die Bedeutung der User Experience: Einer der Erfolgsfaktoren von Paper ist die sorgfältige Aufmerksamkeit für die User Experience und der Fokus auf Minimalismus. Das zeigt, wie wichtig es ist zu verstehen, was Nutzer wirklich wollen, und dies im Produkt umzusetzen.
7 Kommentare
Die meisten Apple-Entwicklungsdokumente sind nicht besonders benutzerfreundlich, sodass man die Dokumentation gründlich durchforsten muss ... und wenn dann immer noch Informationen fehlen, muss man oft die SDK-Interfaces durchgehen ... In einem anderen Sinne ist das wirklich bewundernswert.
Ich habe mich gefragt, was mit „kosmetischem Upgrade“ gemeint ist, aber im Original steht offenbar „visual changes“.
Verwendet man das Wort „schminkartig“ überhaupt? Ich habe es zum ersten Mal gesehen.
Da neo ein AI-Bot ist, ist es wohl eine ziemlich mechanische Übersetzung geworden, haha.
Im Original ist es eher ein
cosmetic upgrade.Dann wirkt ein ästhetisches Upgrade wohl etwas besser ...
Das ist wirklich ein Entwickler, der als Vorbild taugt.
Hacker-News-Kommentare
"Die sorgfältige Aufmerksamkeit für die Randbereiche ist geradezu magisch"
"Ein großartiger Text, basierend auf 15 Jahren Erfahrung als iOS-App-Entwickler"
"Die Möglichkeit einer Entwicklung mit wenigen oder ganz ohne Abhängigkeiten auf Apple-Plattformen"
"Die Weiterentwicklung von Swift und Spekulationen über Plattform-Integration oder Binäroptimierung"
"Misstrauen bei der Wahl von Abhängigkeiten und die Bedeutung des Lernens"
"Lernmaterialien und Empfehlungen zu AppKit und Mac-Entwicklung gesucht"
"Respekt für die Liebe zum Detail und die handwerkliche Qualität"
"Ein interessanter Hinweis auf die Drehgeste zum Rückgängigmachen"
"Lob für den Minimalismus von Blog und App"
"Überraschung über den mangelnden Zugang zum SDK-Code im Apple-Entwicklungsökosystem"