-
Notifications
You must be signed in to change notification settings - Fork 6
Release planning
Check the releases page to discover the current state of godless.
v0.21.0 will look into expanding use cases for Godless.
It would be very nice to use godless in a short lived process (think apt-cache) rather than in a long running one (think bittorrent)
I am not at all sure how well this would work, but the following tools are not hard to write and will be revealing:
- One shot index replicator
- One shot namespace sync (ipfs pin)
v0.20.0 will boost performance so the demo can process a lot of data without the user getting bored. This release may be delayed so that we can get the demo in the first place :)
These all require investigation. Should make before/after charts and see if the change is worth it. There has not been much effort to make the current design fast, so it has the advantage of being quite simple (or basic perhaps :)
- Memory image tracks namespaces. Currently, every call to join data will write to IPFS before returning to the client. We should instead write the new namespace to the memory image, just like we do for the index now. However, some people might actually want us to write every piece of data to IPFS, because then we can return a hash pointing to their data. Through decoupling the IPFS adds from the query-response workflow, finding the hash of the data would become much harder. It might make sense to have this be configurable via an option on
api.Request
. Call itAddNow
? Of these ideas, this is the only one where I am already certain it will have a big impact. - Index tracks rows. Index currently only tracks tables. We should do more complex indexing to enable faster lookup. This also requires more complex query analysis and is likely to be expensive wrt development time.
- Improve namespace copy performance
- Improve namespace iteration performance
- Reduce bandwidth use for downloading index from IPFS. The obvious way is to make the index smaller somehow, but we could also try a tighter integration with IPFS.
At alpha 18, making the demo will be a little painful but doable. v0.19.0 will make the Godless API more friendly to enable cleaner code in the demo.
It should be possible to add new matcher functions into godless. Functions need a clean, simple, API and an easy way to hook them into the system via the root package.
Up to alpha 18 only provides exact match or not-exact match searches. We must provide wildcards and regex so that people can find packages and versions.
Would be very nice to have a string-difference search function. So that people can search for things they don't exactly know the name of.
Delayed until the future.
A lot of stuff in Godless is written from the perspective of a long running server. Should investigate any API improvements for the case of calling Godless directly from a transient user process.
This will allow the demo to embed godless and provide a service interface.
Done in v0.18.0
Since we use a relatively grown up approach to parsing, this should not be too difficult. Need to add a placeholder ('?') to the grammar. The AST type for literals will be modified so it could be a placeholder. These placeholders will also contain source code line and character position, so they can be ordered. At query compile time, swap the placeholders for given parameters.
I'm beginning work on a demo app on top of Godless and the idea of reflecting on the app domain by sending godless query plumbing
commands was dreadful.
If you've run alpha 17 you'll have noticed the periodic writes to IPFS. This pulsing should only occur under load.