Git Migration Proposal

Proposal

A proposal to see uPortal's source code moved to git and hosted on GitHub. There have been quite a few folks that have been working on uPortal 4, uMobile or are otherwise interested that have asked about using git. After looking into it a bit more I think it would be a very valuable change for uPortal.

For those not familiar Git is a distributed source control tool. What that means is there is no true central repository like there is with SVN. Developers don't really checkout some version of the code, they clone the entire project when doing work. That doesn't prevent the convention of a central repository which is what a site like GitHub provides. A place to host a clone of the project that by convention we agree is the master copy of the project.

GitHub adds some very nice social-coding aspects to git. Primarily it provides a VERY easy interface that allows anyone to clone a project, make changes and commit them to their clone, then make a pull request on the master project. Once that has happened a simple click of a button is all it takes for any developer with commit access on the master to accept the changes and merge them in. This process makes it very easy for people without direct commit access to commit changes that are reviewed by a core developer before merging in and significantly simplifies the work of the core developers.

When there was first talk among about switching I solicited feedback from the Fluid project which recently moved from SVN to Git. I highly recommend reading the resulting thread which highlights a lot of the pros and cons http://old.nabble.com/Perspectives-on-Git-td31852449.html

There is an eclipse Git Plugin, a TortiseGit client which is a clone of TortiseSVN and I believe most other IDEs have either built in or plugin support for git.

Migration Details

  • The entire history of uPortal including all maintenance branches would be copied to GitHub, all new development and maintenance would take place via git.
  • The uPortal code in subversion at source.jasig.org would be left in place. The entire /uPortal directory would be made read-only. There would be a process that mirrored all post-migration commits to the git repository to the uPortal directory in Subversion allowing deployers using SVN specific integrations to continue using those processes.

Test Migration

A test migration of the uPortal source code has been completed and is available: https://github.com/edalquist/uPortal-GitTest If anyone would like access to play with this throw-away repository email Eric Dalquist.

Concerns

  1. Developer Familiarity
    • Primary concern with speed for applying critical fixes for a 4.0.1 release
  2. svn:externals
    • Used by some deployers as an alternative to a vendor drop import
    • This should be addressed by the read-only SVN mirroring that will be maintained
  3. Local deployments using Subversion (if Subversion is their institutional repository)
    • Process to merge fixes into local repository directly from the uPortal repository?
    • This should be addressed by the read-only SVN mirroring that will be maintained
  4. Sakai-Jasig merger 
    • How will this relate to the merger and any broader SCM/Release management strategy? (http://groups.google.com/group/jasig-sakai-collaboration)
    • Projects under a merged Jasig/Sakai Collaboration will still be responsible for setting their own SCM and release management strategies just as it is now under Jasig

Audiences

Active Committers

The folks that have had a commit to uPortal in the last 6 months.

Non-Committers Contributors

Folks that are providing patches but don't have commit access.

uPortal Deployers

People that use the uPortal SVN repository as a source for local deployments.

Username Mapping

For the final migration a mapping of Subversion usernames to GitHub usernames is needed to retain as much history as possible. Please add your GitHub account information to: https://github.com/Jasig/svn2git-migration/blob/master/mappedAuthors.txt