Hi devs,

Just wanted to share my vision of how we should tackle migrating to the new 
Model. I see the following steps:

* Step 1: Define new model interfaces (status: in progress)
* Step 2: Implement a "bridged" version which uses the oldcore (status: in 
progress).
* Step 3: Start moving code to use the new API as the new API and its 
implementation progress. Note: we should start using the produce of step1 and 
step2 ASAP to tune the details (status: not started)
* Step 4: At the same time, start a new implementation based on a RDBMS 
(probably hibernate-based, to be decided) (status: not started). I'd also like 
that we start other implementations not based on a RDBMS just to prove that it 
works with other storages. Ideally I'd like some NoSQL impl (Caleb maybe?) and 
I'd also like to try a Git-based implementation (using jgit)
* Step 5: Deprecate all our search apis located in XWikiHibernateStore and make 
everyone use the new QueryManager module. This needs some tuning on the 
QueryManager for missing stuff but that's doable (I need to send some proposal 
on missing stuff). (status: in progress). The idea here is to decouple search 
from storage. Note that we'll need to write some translator from HQL to XWQL or 
the new search query language.
* Step 6: As we progress in step 2, 3, 4, introduce a configuration parameter 
to decide which implementation to use ("bridged", etc) so that users can start 
playing with new implementations (status: not started)
* Step 7: Rewrite a new Importer/Exporter that exports everything (all the data 
in the current DB) + all configuration files/data. To see what we are currently 
not exporting, see 
http://platform.xwiki.org/xwiki/bin/view/AdminGuide/Backup#HUsingtheXWikiExportfeature
 This new exporter should probably be based on the XWiki Streams module being 
developed here: https://github.com/xwiki-contrib/wiki-stream (status: in 
progress but not active)
* Step 8: When users want to migrate from one implementation ("bridged" for ex) 
to a new implementation they export their wiki, set the new implementation in 
the configuration file and reimport. (status: not started)

For me Step3 can almost begin (I probably need one or 2 more weeks to be ready 
to have some use cases implemented and I'll send a vote to merge my work in 
feature-newmodel branch in master - Would be good if you guys start looking at 
it and give comments to be ready for this).

Then we need volunteer for Step 4 for:
* new RDBMS implementation. Who?
* noSQL impl. Cassandra? other? Who?
* git implementation. Vincent

WDYT about the plan?

In term of time required it's probably going to take us about a year to have a 
first working version for all the steps by working at a leisurely pace.

Thanks
-Vincent

_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to