A number of jboss.org projects have moved from svn to git (generally hosted at github), due to the benefits that can be obtained from using a distributed version control system.
Its possible this could benefit the Scribble project, in that it could more easily allow different research groups to maintain their own forks, without having to necessarily (1) provide changes through patches, or (2) sign a contributor agreement and be given commit rights to the svn repository.
As the work of these separate groups mature, it can be pushed back to the master repository to become part of the main distribution.
I don't have a great deal of experience using git at the moment, but recently migrated the Savara (version 2) codebase to github. So this change does not necessarily have to be considered at the moment - but as Scribble will integrate into Savara and also as part of JBoss Tools, and both of these projects are now hosted on github, it may be a good idea.
One issue is the tooling for git is not as well established as svn - however the merging capabilities are apparently significantly better.
I'm already using Mercurial, and I find distributed VCS much more convenient than SVN generally. Apart from merging, other advantages include offline operation, low-cost branching, and easy cleanup of history. This encourages frequent small commits, making it easy to manage individual changes as indiidual commits.
In short: +1!
Ok then the other aspect of this is whether to split up the current Java code base into smaller repositories.
- The pro for this is that then each repository is smaller and more focused on a particular need.
- The con is that we may end up with many repositories if we start to expand the languages supported.
For Savara, which used to have a similar layout as Scribble, I divided the code into the following:
Core - included the OSGi bundles that were environment independent, and would be deployed to Nexus as their primary mechanism for release
Eclipse tools - provides the Eclipse plugins. Release is via generating an update site
Server integration - builds a distribution that can be deployed into a server (currently just JBossAS), to integrate core capabilities into the server
So the only difference I see with Scribble is that instead of integration into a server, it provides a command line execution. Therefore for scribble we could have:
Scribble-core - core bundles deployed to Nexus
Eclipse tools - integration with Eclipse, provided via update site
Command line tools - provided as a zip distribution
These would be language specific, although as these are the first repositories, possibly they don't need to explicitly state 'java' in the repo name - with subsequent languages adding the language as necessary?
Core modules have now been ported to https://github.com/scribble/scribble-core
Hudson build job is here: http://hudson.jboss.org/hudson/job/scribble-core-master/
Other parts of the code (Eclipse and command line integration) will be ported soon.
All repositories are now ported, see the scribble organisation here: https://github.com/organizations/scribble
There is also the beginings of an article describing a development workflow - currently documented against the Savara project, but the same applies for Scribble. There are still some outstanding questions to be answered, so may change over time, but when stable will be linked/copied for the Scribble project: http://community.jboss.org/wiki/SavaraDevelopmentWorkflowwithGIT