-
-
Notifications
You must be signed in to change notification settings - Fork 72
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[FEATURE] Implement an SQL-based backend (to avoid ObjectBox) #167
Comments
Hi @hatch01, ObjectBox was chosen as it is currently one of the better options available for Dart that provided the tools needed - namely about multi-Isolate access. One point of experimentation for me is to see whether using Isolates for database operations actually makes a difference. Isar was moved away from as it had too many stability issues - of course, now it turns out ObjectBox has some stability on iOS as well. Hive isn't suitable, and also seems undermaintained alongside Isar by the same maintainer. The IO filesystem from <v6 was too slow and now wouldn't handle the relations required. And performance is also relatively important. The potentially plausible alternatives are Floor (which is pretty much just a layer over SQL libraries), or using an SQL library directly (probably sqllite3), both of which require manual SQL statements. I'm not new to SQL, and I could probably do it, but I'm certainly not an expert in doing things efficently or the more advanced parts etc. Luckily, I did it properly (hopefully ;)) when I rewrote FMTC, so it should not be possible just to write a new database backend for a new database library without messing around with all the other code again - much easier. Especially if I can figure the Isolates thing out. You may be able to write a backend yourself. You can use the existing one as a base, but I believe all the necessary components are exported under the special import. At the moment, I don't have massive amounts of time to invest into FMTC, especially for things that won't necessarily bring new features or fixes. If I get time, which hopefully won't be too long, I will look into making another backend. It's worth mentioning that the issues with f-droid and ObjectBox licensing are fairly complex. I'm not a license lawyer by any means, but it seems f-froid imposes some heavy restrictions to keep things 100% open source entirely, even beyond build time. It's a valid approach of course, and ObjectBox's licensing situation is somewhat confusing at the least. AFAIK the build time dependencies are open source, but the runtime native dependency is not. Again, not a lawyer, and both f-droid and ObjectBox have perfectly valid approaches in their own ways. |
Hi, |
Do you want me to close the issue, or may it stay opened for a hypothetical future development? |
It's not a totally unreasonable amount of work, I was planning that it may need to be done, and there's some other issues with ObjectBox as well. I am just unfortunately a little short of time at the moment. If flutter_map_cache meets your needs (you don't need bulk downloading or advanced store management), then it's a great option as well! I'll note this discussion on the documentation. I'll leave it open but change the title. |
What do you want implemented?
Now, the package uses objectbox which is blacklisted by fdroid, so I can't deploy my app to fdroid.
For curiosity, why did you moved to objectbox ?
What other alternatives are available?
Juste using a fork or an alternative could also be a solution, but it seems to be a lot of work to maintain a fork with a different database.
Can you provide any other information?
No response
Severity
Obtrusive: No workarounds are available, and this is essential to me
The text was updated successfully, but these errors were encountered: