В этой статье я хочу рассказать о том, как создавая
Чуть более года назад у меня появился Android телефон и сразу же передо мной встал вопрос, что использовать для путешествий, навигации. Как ни крути, но телефон с GPS и интернетом — очень удобен, особенно в незнакомых местах. Просмотрев все существовашие тогда приложения, был немного разочарован. Одно не работает без интернета, другое не поддерживает навигации, третье не ищет POI, четвертое не имеет векторных карт и т.д. Были конечно и
Стоит отметить, что в поисках приложений, открыл совершенно замечательный проект OpenStreetMap с отличной детализацией для Беларуси. Поэтому, собрав все силы и желание сделать что-то бесплатное, доступное и нужное, открыл на googlecode проект OsmAnd.
Начало
В первую очередь, когда начинаешь проект, надо определиться зачем его начинаешь. Большинство opensource проектов начинаются для себя и для личных целей. В принципе и этот был не исключение: очень не хватало мне offline навигации или хотя бы навигации по offline картам. Во-вторых, надо просмотреть существующие аналоги: как я уже сказал, покупать ничего не хотелось (не стоило оно того), а из бесплатного и свободного — Navit как-то не зашел. Самое сложное было решиться на такой объемный проект: навигаторы пишутся большими компаниями и все они работают по-разному, у кого-то хорошо, а у кого-то и не очень. Как оказалось потом, не зря этого боялся: есть в навигационных приложениях очень сложные алгоритмы.
Первая версия
С выбором методологии проблем вообще не было: модный в последнее время Agile. Есть время — работаю, заинтересовало — делаю, хочу — общаюсь с пользователями. Как многие пишут, начинать надо с чего-то работающего, выполняющего главную функцию. Поэтому сделал отображение, загрузку растровых карт и отображение POI. Какое это имеет отношение к навигации? Но это было только начало.
Вообще, создавая приложение для себя, я отметил, что иногда пользуюсь картами не только для навигации, поэтому в самом начале добавил избранные точки, поиск транспорта, анимационные переходы между точками и слайд эффекты, в общем все то, что требовало мало времени, но добавляло некоторый положительный эффект. Встретив большую поддержку OSM сообщества, я определенно решил, что приложение должно помогать улучшать OSM карты, поэтому добавил функциональность OSM bugs, редактирование POI прямо из Андроида и запись треков.
Первая версия, спустя месяц, получилась довольно веселая: она умела отображать растровые карты, как и все подобные, и делать кучу дополнительных вещей, используя офлайн данные, поиск по адресу, поиск транспорта, поиск POI. Этим приложением вполне можно пользоваться для специфических задач, но само по себе оно было лишено структуры — сложно было понять, что оно может, а что — нет. Это как раз недостатки Agile — на каждом этапе создавать максимальные business value за короткое время. Решение было только одно — рефакторинг.
Первая публикация
Честно говоря, приложение рекламировалось в узких кругах OSM сообщества (на Wiki Android OSM), специально ничего не проводилось. Именно поэтому, разместив на Android Market, сложно было ожидать большого количества загрузок. Но я радовался чуть ли не каждой из них, чувствуя гордость, что я делаю что-то полезное — особенное чувство удовлетворения получал от положительных комментариев. Где-то через 3 месяца количество загрузок достигло 1000 и я всерьез задумался, что проект стал известным и (!) бросить его будет не так уж и просто. Стоит отметить, что все это время был очень внимателен к критике и исправлял ошибки, добавлял функции за считанные дни. К сожалению, (некоторые!) люди, которые скачивают приложения через Market, не могут понять сущности opensource, гибкости, да и вообще не внимательно читают описание приложение, что оно кое-что не умеет. Чем иначе можно объяснить присвоение рейтинга 1-star за то, что нет двухпальцевого зума или вообще не запускается? Уже тогда приложение имело 40% функций, которыми 90% пользователи не пользовались, например загрузка карт на Android из WMS слоев. Конкретно проблема OsmAnd состояла в том, что картографические данные надо подготавливать (POI, Address), а для этого нужно запускать настольное приложение OsmAndMapCreator. В первое время, я даже не думал о хостинге, это же opensource, бесплатно,
Развитие проекта
Многие говорят, что начало проекта — это самое сложное, у тебя нет ничего, а надо получить что-то рабочее — позволю не согласиться. В начале у тебя есть идея и вера в то, что она рабочая. Самое сложное, я думаю, это конец проекта — уйти красиво. У меня он не наступил, но могу представить: надо будет найти людей, кому передать, подготовить документацию и т.д. Даже середина гораздо сложнее начала, потому как силы на исходе, количество времени на добавления функций растет, технический долг также, неясность целей, да и просто надоедает…
Спасало меня только одно, я сам пользовался приложением и не мог себе простить, почему оно так
Сообщество
Рано или поздно, создавая востребованный opensource проект, у вас появится сообщество. Его надо очень любить, но не угождать во всем, а самое главное надо точно определить людей, которые могут быть полезны в будущем. Касаясь OsmAnd, сообщество, конечно же, существует и 5-6 людей очень активно участвуют mailing листах, создают баги, комментируют их, создают офлайн данные. Но (!) по-прежнему 98% кода, пишется одним человеком. Так что, как правильно было подмечено, opensource проекты — это прежде всего инициатива одного человека. Мне кажется, что заболеть идеей гораздо проще, чем заразить (ну только если не дурной).
Монетизация
Наверное, многие уже не дочитали, а долистали до этого лакомого кусочка. Кнопка донейт существовала на сайте уже давно, но не приносила достаточно денег, чтобы мотивировать разработку. Скорее всего, она выражала любовь или сострадание отдельных людей к данному продукту. Потом появилась кнопка BidForFix, то есть пользователи делают ставки на некоторые фичи, а когда фича готова (предполагается), программист получает вознаграждение в качестве этих ставок. Насколько я видел ставок было сделано очень много, но ни одна из них не сработала. Большинство пользователей ставило на offline routing, который до сих пор в стадии разработке, но и сумма там относительно небольшая — навигацию оценивают порядка 200-250$ — я бы и сам отдал 500$ тому, кто сделает.
Исходный код проекта перевалил за 30000 строчек (это очень приблизительно) и количество проблем становилось гораздо больше, чем желания их исправлять. К счастью, кто-то подсказал гениальную идею — продавать! Немного перефразировав ее, получилась такая: все, кто хотят получать свежие обновления из Маркета, должны сделать донейт 3 евро, у кого этих денег нету, могут скачать такую же бесплатную версию, но с сайта. Как не странно, идея работает, люди покупают версию и энтузиазм вернулся.
Текущее положение
У OsmAnd по-прежнему есть главная цель — сделать opensource навигацию на уровне коммерческих и лучше! Уже сейчас OsmAnd прекрасно подходит для пешеходной, велосипедной навигации и обладает достаточно уникальными функциями, такими, как навигация по GPX файлу. Конечно, приложение не без проблем — думаю, что больше половины пользователей не знают, как наиболее эффективно использовать его, но ведется работа по улучшению юзабилити и разработка новых функций. В общем, будущее зависит от вас и от нас. Если есть вопросы по приложению или желание поучаствовать — пишите.
Интересные факты об OsmAnd
- OsmAnd участвовал в конкурсе Android Velcom с версией 0.3, но не попал даже в список призеров — победил
какой-токомпас. - В первое время большинство пользователей было из Беларуси, наверное, благодаря завезенным тогда Life Huawei.
- На текущий момент приложение установлено больше всего у немцев, русских и других европейцев.
- Многие удивляются, что не могут получить платную версию у разработчика и почему я ее не имею — да потому что я всегда собираю свою версию из кода.
- OsmAnd переехал на github в качестве основного репозитория, но все ресурсы хранятся googlecode, исходный код синхронизируется каждый день.
- Приблизительный список функций приложения на английском