Roadmap

v7 is now in development!

Please see this PR for the latest changes and keep an eye on the pub.dev page for prereleases.

The information below was written before I started v7 implementation, so may be outdated.

I maintain this to the best of my ability given my relatively limited spare time. However, I do have some plans for improvement in the future!

Please do contribute (code or just opinions) if you would like to and have the time to!

Migrate to database format internally

Before v2, this plugin used an 'sqflite' database to store tiles. However, I removed this in order to add support for multiple stores.

Whilst this impacted both functionality and performance positivley at the time, there are now bottlenecks caused by the reliance on the native filesystem. These include, but are by no means limited to:

  • Struggles with sanitizing the tile name to convert it to a file name that is suitable on every device - harder than you might think, given the large number of differing restrictions set by differing filesystems/operating systems.

  • Limitations to the speed of the import/export functionality: stores must first be compressed (and uncompressed on the other side) into a ZIP format. For a larger number of tiles, this can be quite slow!

  • Limitations to the speed of statistic fetching: reading each tile to find its length (size) and summing this up doesn't sound like it would take long, but it does. It's also quite memory inefficient. This was partially resolved by the statistic caching introduced in v5, but is not ideal.

  • The whole storage structure being easily edited and broken by a curious user. This also includes the fact that the bulk download functionality can very easily lead to copying: whilst keeping them as blobs in an SQL table won't stop this, it will make it significantly more difficult.

Migrating to a database won't be easy and will take time. Currently, I'm evaluating Isar (see this discussion I opened).

Last updated

© Luka Stillingfleet (JaffaKetchup)