Storage Layer and Sync System
2008-01-04 14:58:18 GMT
First of all, Happy New Year! I hope you've all enjoyed the holidays and wish you (and Mira!) all the best for the coming year.
I was thinking about the sync system and had an idea. This may seem a bit rash, but I think it will bring the 0.1 release date much nearer and also help us to tackle the sync system in steps.
For the 0.1 release, I propose that we have *no synchronisation system*. I know that the whole point of this project is to allow people to communicate and collaborate over a network, but perhaps we should "neuter" this release in order to focus on building the data storage and retrieval system as effectively as possible.
I think we should design and implement a storage system (with version control support, as discussed) for the Mira Client for the 0.1 release and provide two very basic Utilities: Files and Notes. Files will use the version controlled storage and Notes will use the database storage, allowing us to test both modules. The version control system should be implemented baring in mind the fact that the storage system will later be adapted to synchronise with other computers, so it should be designed in such a way that it can be adapted for both client-server and P2P sharing support at a later date.
What I'm essentially saying is that the 0.1 release will be useless. Mira Client will communicate with the Server for authentication, etc, but the synchronisation system will not work. Mira Client will store Workplace data locally and not share it with any other computers. It may disillusion some of us, but I believe that it will set us up perfectly for the next stage, 0.2, in which we can adapt the storage system and its version control functions to operate with other networked Clients via the Server.
What do you think? As an Open Source project, we need to be realistic about our goals and not aim for too much in too short a time because we will not accomplish it. However, if we attack this challenge using a step-by-step approach, I think we will get much further and work more efficiently.
Please discuss this proposal - do you think this is a good idea or a bad one, and why? Is this dumbing down the 0.1 release too much or does it make it a more realistic target for Q2 2008, our original intended release date (which is of course flexible, but if we can focus on a target then our releases should be faster and better)?