[sugar] DS possibilities
Tomeu Vizoso
tomeu
Tue Apr 29 15:10:31 EDT 2008
On Wed, Apr 23, 2008 at 10:19 PM, Benjamin M. Schwartz
<bmschwar at fas.harvard.edu> wrote:
> Based on these options, I personally recommend that the priorities be:
>
> 1. Write a new datastore implementation to the same API.
> 1. Set up a datastore test system.
> 2. Improve logging.
> - --- Future ---
> 3. Write a new datastore implementation with a new API.
> 3. Notify the user when things go wrong.
>
> My recommendation is not very strong. I can see many other reasonable
> arguments. However, I prefer this one:
>
> After glancing at Michael's Simple Data Store code, I am convinced that it
> would be easy to turn it into a complete implementation of the current
> datastore API, with a backend that is simply individual files in the
> filesystem.
Where would metadata be stored?
> Search could be implemented by grep -R, or something of
> similar complexity.
Hmm, I see filtering and fulltext search as really important features.
Do we really want to grep instead of using some kind of index?
> I would be perfectly happy to replace the current
> datastore layer with this one (though the upgrade mechanism will take some
> careful thought). If some code from the existing implementation is still
> applicable, then it may of course be reused. Indeed, the rewrite vs. fix
> distinction is something of a false dichotomy; the major issue is whether
> or not to use Xapian and other advanced algorithmic designs.
I think that most of our problems come from using Xapian for storing
the metadata, but not from using it as what it is intended: a fulltext
search engine. I actually think that it has worked quite well for that
purpose.
> The principle objection to this path, it seems to me, is the possibility
> of introducing new (worse) bugs. A datastore test system would greatly
> increase confidence in any new implementation. If the test system can
> also reproduce crashes in the current implementation, then we may
> determine with some confidence whether the new implementation is more
> reliable (under those circumstances). Logging goes hand-in-hand with
> testing; it is needed in order to determine the results. Having better
> logging in production laptops will be a positive side benefit.
Agreed, but I would like to note that the DS is (to my knowledge) the
component in Sugar with most extensive unit tests.
> I recognize the importance of providing version control functionality
> within the datastore, but the deadline for this work appears to be July,
> pending an August release. It seems unlikely to me that any
> future-proofed version control system could be completed, and integrated
> with the rest of the system, in two months. If anyone wishes to argue the
> opposite point, I will be happy to listen, since I desire this feature
> greatly. If the version control project is sufficiently important, it may
> be acceptable to place an expert (presumably Scott) on this full-time
> targeting a December release.
I think that it depends on which features we wish to add. This scheme
may be enough to provide the user experience that Eben has devised:
- Store a version number as a metadata property. Create a branch every
time that a non-tip revision is resumed. Suggested format: 3.1.1.
- Use xdelta to store backwards deltas between versions of the same
file. Probably calculate a hash of the content so we can optimize out
the no-changes case.
- That's all ;)
See here for the last work from Ben Saller related to versions:
http://dev.laptop.org/git?p=projects/datastore;a=shortlog;h=version_prototype
> Notifying the user when critical system components stop working is a good
> goal as long as it doesn't distract from the more important work of making
> the critical system components work reliably. It seems to me that the UI
> team's work on the wide variety of frequent, user-interaction
> notifications is far more important, and also sets the stage for this work
> later.
Yes, the "journal full" notification is one example.
Thanks,
Tomeu
More information about the Sugar-devel
mailing list