Привет! Я терпел четыре года, и таки решился написать о своем хобби проекте. Если коротко о себе, то я типичный разработчик подсевший на макбуки в эру, когда ноутов с хорошей батареей толком и не было.
Мой проект — программа для ведения заметок в markdown и plain text. Возможно вы слышали о FSNotes, а если нет, то можете сами взглянуть, весь код лежит на GitHub, под MIT лицензией.
Хочу рассказать о больных моментах, о которых ты не думаешь ввязываясь в новый проект, как инди разработчик.
Модерация в AppStore
Начну с самого больного — модерации. Так как выгружать кроме как в AppStore приложения у Apple нельзя (будет нельзя в случае macOS), то ты по факту становишься заложником команды ревьюеров.
В самом начале мне неоднократно отказывали в публикации.
Самый последний раз мне вставили палки в колеса почти на три месяца. Я поднял восстание открыв issue https://github.com/glushchenko/fsnotes/issues/695
Apple удалось продавить, так как заметка попала в топ на Hacker News и её прочли десятки тысяч человек. Через неделю мне дали добро, но какими усилиями?
Лимитированные API
Я переписал движок синхронизации файлов раза четыре, пока удалось добиться нужного результата, это месяцы работы. Вы не найдете примеров трекинга переименованых файлов в iCloud Documents.
При синхронизации файлов через iCloud Drive метаданные теряются, так мне пришлось переписывать систему управления тегами, что точно не понравится вашим пользователям.
Доступ к файловой системе в iOS ограничен, и вроде как мы получили послабления в iOS 13, но API для отслеживания изменений во внешних директориях до сих пор нет.
Deprecated класс WebView, который я использую для печати документов. Его использовать уже с одной стороны нельзя, а с другой в WkWebView до сих пор нереализован метод print.
И многое многое другое, с чем вы обязательно столкнетесь.
Мобильное приложение
Когда ты начинаешь новое приложение, ты не задумываешься о постоянно расширяемом парке устройств.
Но так как телефон очень глубоко засел в современной жизни, то мне пришлось написать программу и для iOS. Но несмотря на одну кодовую базу и наличие в арсенале разработчика SwiftUI, все не так просто.
Плавная анимация в iOS это боль в случае необходимости отображения двух View одновременно на одном экране.
Обработка задач в фоне в случае с большей части API — невозможна.
Пользователи хотят поддержку iPad, зоопарк телефонов с челкой, разными dpi и т.д, все это очень сложно поддерживать. А если облажаешься рейтинг твоей программы утопят за считанные часы.
Локализация
Когда база пользователей начала расти в глобальном масштабе первое с чем я столкнулся, это просьба сделать локализацию. Программа изначально была на английском, но я владею русским и украинским. Это были первые языки на которые я сделал перевод.
Дальше подтянулись китайцы, арабы, японцы, французы и т.д. На данный момент пользователи сделали перевод на 12 языков, и это потянуло за собой свои проблемы.
У японцев, корейцев и китайцев ввод иероглифов сделан по своему, мы должны учитывать все события которые они делают на клавиатуре, и они отличаются от привычной латиницы или кириллицы. Это привело к многочасовым попыткам отловить баги.
После японцев пришли арабы, и как вы уже догадались они попросили, чтобы приложение отображало арабскую вязь справа налево.
Арабов починил, пришли хитрые европейцы, которые аллилуйя пишут на латиннице, но! Я узнал что есть люди, которые используют Dvorak и Colemak. И все шоткаты, которые я придумал для них не работают
Это конечно не все. Дальше в ишью трекер пришли шведы и немцы, их амлаут в верхней части букв тоже нужно учитывать, я узнал что такое диакритика.
Тут не хватает только русских, и да они тоже пришли... И рассказали, внезапно, какой у меня плохой английский :D
Деньги
Самое табуированное, разговор про деньги. Мое приложение сейчас в топ 5 категории Productivity, и это приносит скромные деньги. Если бы у меня не было основной работы, то на жизнь мне точно бы не хватило.
Я тащу проект сам, но если все это разделить на команду квалифицированных разработчиков/тестировщиков/маркетологов, то я не представляю как это продавать и не вылететь в трубу.
Перед тем как влезть в эту авантюру, тысячу раз подумайте, а нужно ли оно вам? Разработка для Apple это не про деньги — это фан для фанатов своего дела.
Автор:
madflux