Offline Maps / Android Navigation

    OsmAnd screenshot
    In this article I want to talk about how creating a bright, kind, eternal opensource application can not only increase your karma, but also earn some money.

    A little over a year ago I had an Android phone and immediately the question arose in front of me: what to use for travel and navigation. Say what you like, but a phone with GPS and the Internet is very convenient, especially in unfamiliar places. After reviewing all the existing applications then, I was a little disappointed. One does not work without the Internet, the other does not support navigation, the third does not look for POIs, the fourth does not have vector maps, etc. Of course, there were free commercial analogs, but some of them let us down, others had reviews, but still when you pay, you want to get something you pay for.
    It is worth noting that, in search of applications, he opened a completely wonderful OpenStreetMap project with excellent detail for Belarus. Therefore, collecting all the strength and desire to do something for free, available and necessary, opened on googlecode project OsmAnd .


    Start


    First of all, when you start a project, you need to decide why you are starting it. Most opensource projects start for themselves and for personal purposes. In principle, this was no exception: I really lacked offline navigation, or at least navigation on offline maps. Secondly, you need to look at existing analogues: as I said, I didn’t want to buy anything (it wasn’t worth it), but Navit somehow didn’t go from free and free. The most difficult thing was to decide on such a voluminous project: navigators are written by large companies and they all work in different ways, for someone it’s good, but for someone it’s not. As it turned out later, it was not in vain afraid of this: there are very complex algorithms in navigation applications.

    First version

    OsmAnd icon
    With the choice of methodology, there were no problems at all: recently Agile. There is time - I work, I am interested - I do, I want - I communicate with users. As many write, you need to start with something working that performs the main function. Therefore, I made a mapping, loading raster maps and displaying POIs. What does this have to do with navigation? But that was only the beginning.

    In general, when creating an application for myself, I noted that sometimes I use maps not only for navigation, so at the very beginning I added selected points, search for vehicles, animated transitions between points and slide effects, in general, everything that took a little time, but added some positive effect. Having met a lot of support for the OSM community, I definitely decided that the application should help improve OSM maps, so I added the functionality of OSM bugs, editing POI directly from Android and recording tracks.

    The first version, a month later, turned out to be quite funny: she was able to display raster maps, like all the like, and do a bunch of additional things using offline data, search by address, search for transport, search for POIs. This application can be used for specific tasks, but in itself it was devoid of structure - it was difficult to understand what it can and what is not. These are just the flaws of Agile - at each stage to create maximum business value in a short time. There was only one solution - refactoring.

    First post

    OsmAnd main screen screenshot
    Honestly, the app was advertised in narrow circles of the OSM community (on the Android OSM Wiki), specifically nothing was done. That is why, posting on the Android Market, it was difficult to expect a large number of downloads. But I was glad for almost every one of them, feeling proud that I was doing something useful - I received a special feeling of satisfaction from positive comments. After about 3 months, the number of downloads reached 1000 and I seriously thought that the project had become famous and (!) Quitting it would not be so easy. It is worth noting that all this time he was very attentive to criticism and corrected errors, added functions in a matter of days. Unfortunately, (some!) People who download applications through the Market cannot understand the essence of opensource, flexibility, and generally do not carefully read the description of the application, that it doesn’t know something. What else could explain the assignment of a 1-star rating for that there is no two-finger zoom or does not start at all? Even then, the application had 40% of the functions that 90% of users did not use, for example, downloading maps on Android from WMS layers. Specifically, the problem of OsmAnd was that map data must be prepared (POI, Address), and for this you need to run the OsmAndMapCreator desktop application. At first, I didn’t even think about hosting, it’s the same opensource, for free,what else is needed , prepare the data and use it. Of course, I realized how inconvenient it is, but let the project develop, help, and don't put down the cons. At the same time, he even thought about removing OsmAnd from the market. In general, this was a wrong marketing move - to publish on the market a not-well-thought-out product, but I really wanted to. Therefore, you can still find on the Internet information that something is not working, although for a long time everything has been redone.

    Project development

    OsmAnd routing screenshot
    Many say that the beginning of the project is the most difficult, you have nothing, but you need to get something working - let me disagree. In the beginning, you have an idea and belief that it is working. The most difficult thing, I think, is the end of the project - to leave beautifully. He did not come to me, but I can imagine: it will be necessary to find people to whom to transfer, to prepare documentation, etc. Even the middle is much more complicated than the beginning, because the effort is running out, the amount of time for adding functions is growing, technical debt is also unclear, and it just bothers

    me ... Only one thing saved me, I used the application myself and could not forgive myself why it is so crookedStrange works. And I used voice navigation in Belarus, almost everywhere, though it required the Internet, but it worked. Correcting all the absurdities and shifting functions from the menu to A to B, every project accumulates sufficiently large features that allow you to bring the product to a new stage, but how difficult it is to take on them (especially if no one forces them). One such feature was vector rendering. The advantages for the application are obvious: the relatively small size of the maps, the ability to manipulate layers, rendering, getting information directly from the maps. But from the development point of view, this is a rather difficult task: implementation in the forehead did not work out in a certain way, it was too slow. I had to pick up booksask Google and find a way to store RTree, and cram all the data into its binary format so that it can be read from disk faster. Nevertheless, having invested hundreds of hours of development, it should be recognized that it works slowly. Especially for my old HTC Hero in a country like the Netherlands (osm pbf> 450 MB). Well, the implementation of offline routing is still in a deep endeavor. I did not build illusions that it would be easy to implement, but I did not expect that difficulties could be not only technical, but also creative.

    Community

    OsmAnd main screen screenshot
    Sooner or later, creating a popular opensource project, you will have a community. He must be loved very much, but not pleased in everything, and most importantly, it is necessary to precisely determine the people who may be useful in the future. Regarding OsmAnd, the community, of course, exists and 5-6 people are very actively involved in mailing lists, create bugs, comment on them, create offline data. But (!) Still 98% of the code is written by one person. So, as it was correctly noted, opensource projects are first of all an initiative of one person. It seems to me that getting an idea is much easier than infecting (well, only if not bad).

    Monetization


    Probably, many have not finished reading, but leafed through to this tidbit. The donate button has existed on the site for a long time, but did not bring enough money to motivate the development. Most likely, she expressed the love or compassion of individuals for this product. Then the BidForFix button appeared , that is, users place bets on some features, and when the feature is ready (assumed), the programmer receives a reward as these bets. As far as I saw, a lot of bets were made, but none of them worked. Most of the users put on offline routing, which is still under development, but the amount there is relatively small - they estimate navigation around 200-250 $ - I would give 500 $ to someone who does it myself.

    The source code of the project exceeded 30,000 lines (this is very approximate) and the number of problems became much greater than the desire to fix them. Fortunately, someone suggested a brilliant idea - to sell! Paraphrasing it a little, it turned out this way: everyone who wants to get the latest updates from the Market should make a donate of 3 euros, who don’t have this money, can download the same free version, but from the site. Oddly enough, the idea works, people buy the version, and enthusiasm is back.

    current position

    OsmAnd Yandex traffic screenshot
    OsmAnd still has the main goal - to make opensource navigation at the commercial level better! Already now OsmAnd is perfect for pedestrian, bicycle navigation and has quite unique features, such as navigation on the GPX file. Of course, the application is not without problems - I think that more than half of users do not know how to use it most effectively, but work is underway to improve usability and develop new functions. In general, the future is up to you and us. If you have questions about the application or a desire to participate - write.

    Interesting facts about OsmAnd

    • OsmAnd participated in the Android Velcom contest with version 0.3, but didn’t even get on the list of winners - it won some kind of compass.
    • At first, most of the users were from Belarus, probably due to the then imported Huawei Life.
    • At the moment, the application is installed most of all among Germans, Russians and other Europeans.
    • Many are surprised that they can’t get the paid version from the developer and why I don’t have it - yes because I always compile my version from the code.
    • OsmAnd moved to github as the main repository, but all resources are stored by googlecode, the source code is synchronized every day.
    • Approximate list of application features in English

    Also popular now: