For them, donations are a simple way to support the project, and they’re definitely appreciated.
Not true anymore! \o/ I don't use Android anymore, but I agree a lot with the principles you've shared here, so it's a thank you for sharing that. And I know how difficult it is to get the first donations, and after you get the first, it's much easier to get the later ones. So best of luck, and I hope you'll remain steadfast with your principles when it'll matter! :)
I’ll definitely consider adding at least one of them going forward. Really appreciate the willingness to support.
Adding a magnetic compensation map sounds like a great fit for improving global accuracy without changing the app’s core goals. Thanks for the suggestion.
https://www.ncei.noaa.gov/products/earth-magnetic-model-anom...
Is a good starting point.
For a basic compass app, you can rely on the World Magnetic Model (WMM) instead: https://www.ncei.noaa.gov/products/world-magnetic-model
From that, you can pre-compute a low-resolution declination grid. NOAA even provides one here: https://www.ngdc.noaa.gov/geomag/calculators/magcalc.shtml#i.... That’s only a few KB of data and requires just a simple declination subtraction based on lat/lon, similar to how it’s handled on nautical charts. This works fine as long as you stay away from the poles (and Alaska).
- Waypoint tracking (with GPX import/export support)
- GPS speedometer
- Offline maps with offline POI search using GeoPackage (an OGC-compliant standard supporting spatial queries)
I’d love to hear your thoughts or suggestions your feedback is really appreciated!
People are always amazed when i show them my apps are 2-5 megs, and that's because there's 2-5 megs of assets.
People are often surprised by how much you can do in under 2 MB.
It has a fundamental issue, which is being single threaded (with exceptions), but it's truly lightweight and easy to extend, and the team behind it really know their business.
Let me indicate a location and point an arrow at it!
If you want to receive compensation for the work you put into making the app, then you need to start treating it as work and call it a payment and not donation.
As a FOSS advocate, I started this project as a community contribution to address the gap between user needs and available apps.
I can maintain it long-term without major contributions, but support really helps (especially maintaining in different apps stores). I’m planning a non-intrusive in-app prompt to remind users about donations something subtle, because many users forget once they start using the app, rather than only seeing the donation info in the README.
Beyond donating, the best way to support MBCompass is simply spreading the word. That helps more people discover it, contribute to it, and make it better for everyone.
MBCompass uses sensor fusion for accuracy, combining sensor data from the accelerometer, gyroscope, and magnetometer.
It is one of the most accurate compass apps. Don't trust my words, try it with different apps on Google Play and with some FOSS options like Compass by Philip Bobek: https://f-droid.org/en/packages/com.bobek.compass
And importantly, for true compass accuracy, I'd recommend you use the "true north" (magnetic declination) function, which requires location access. It takes some time to lock GNSS hold (the same goes for the current location button on the map view, default map location is Paris, France), but if you're moving, it locks pretty quickly and shows your current location with tracking (if you're moving.)
These all sound to me like "Further restrictions" which the GPL says:
> If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term.
It seems like if you want those clauses that GPL doesn't seem like the license you want?
Other than this notice, MBCompass is fully licensed under GPLv3 or later.
No, no, not at all as a FOSS developer.
> I’m planning a non-intrusive in-app prompt to remind users about donations something subtle, because many users forget once they start using the app, rather than only seeing the donation info in the README.
As I mentioned previously, the above approach seems to be well enough and good.
Have you had any luck using vector maps? I know for the web SDKs, vector maps are finally getting some love for OpenStreetMap, but I'm not sure what the situation is on Android or if something like https://openfreemap.org/ can be used.
I already done much research about it (the same as you've mentioned here) related to OSM vector maps. See:(https://github.com/CompassMB/MBCompass/releases/tag/v1.1.4), for Android, the available map rendering libs like Maplibre-Native are an excellent choice, but obviously, it is a high-level library that adds a huge binary to the APK itself, its usecase doesn't fit for MBCompass at least as of now. But thanks for your valuable suggestion :)
Works on most Android phones.
I discovered that when I figured out that a Web map without a position arrow is missing something.
Turns out, it was easy to implement. The Web has been so forgotten for the profit of app stores that entreprises don't even bother to check how capable it is.
I know offline maps (think Comaps) is possible on the Web, there just isn't anyone that did implement it yet.
miroljub•3w ago
Are you calculating the route or just pointing the user in the general direction?
nativeforks•3w ago
I’m actively working on features like waypoint tracking, offline maps, and a GPS speedometer. The goal is to keep MBCompass a useful navigation utility, not a full routing app.
Routing isn’t planned at the moment (maybe with plugins later), since adding it would shift the app away from its core purpose and increase complexity. The main priority is to remain fully functional offline-friendly and extremely lightweight (currently under 1.5 MB).
mastermedo•3w ago
By offline-friendly you're referring to the compass part only, right?
Otherwise users would have to download the map in advance which would take more that 2MB. Am I reading this right?
nativeforks•3w ago
For maps, it’s a bit different users initially see an online basemap (requires internet). Instead of forcing them to download an entire map upfront like some libraries (e.g., MapsForge), they can crop or select specific areas to download.
This makes it convenient to get only the map they need. Of course, if they prefer online maps, the app will cache tiles automatically. In remote areas, offline maps can be used as planned.