On 04/01/2011 09:09 PM, Vincent Massol wrote:
> Hi devs,
>
> I see Sergiu has started the git migration, cool. However could we list the 
> different actions to be done and when they'll be done by whom.
>
> I'll start listing some questions:
>
> * Can we continue commit in svn? Has it been put readonly? If not, shouldn't 
> this be done first step?

No SVN commits from now on for the XE/XEM related repositories. I didn't 
move the following projects:

- xoffice
- xeclipse
- curriki
- contrib

> * Can we commit in the git repos created on github right now? If not when?

Yes. Right now.

> * Are we going to continue having the git repos synced with the svn repo and 
> if so for how long?

Depends on what we want to achieve:
1. commit in either of them and automatically mirror in the other repo
2. commit only in git, but the read-only svn repository should mirror github
3. keep the svn repo as a backup, without any other commits in it
4. hide the svn repo
5. delete the svn repo

Personally I'd go for 4, since it doesn't require maintainance (I don't 
know how git branches and merges will integrate in svn), and it avoids 
confusion from users downloading sources from the wrong place. I 
wouldn't delete it completely, though, since the github experience might 
turn out bad enough to push us back to svn, although I doubt it.

> * I've done a commit on git earlier today but didn't see any email 
> notifications on the notifications list? Can this be set up quickly so that 
> we can see what's happening?

GitHub offers an automatic mailing hook, which is nice, but doesn't show 
the full diff as our notification mails used to do. Personally I'd like 
to have diffs back, even if it means more work. The best option would be 
to patch the official mail hook so that it has an option to send the 
diff inside the mail, but it will take a while to learn how to do that. 
Does anybody know ruby?

> * I'm surrounded by git users for the week end and they're telling me there 
> are several ways to use git (one master repo, 2 repos, etc) and that we need 
> to define best practices of how we want to use git since there are lots of 
> ways to use it. Any idea about this?

Yes, I've been thinking about that as well. I'll send a second mail with 
proposals, and continue this one with status/roadmap points. For the 
moment, until we define a new strategy, we can continue working as if it 
were a central repository, like we did so far with subversion, by 
pushing changes to the master branches on the official repositories.

> Ok enough question to get started.

So, right now I have two more projects to synchronize, skins and the old 
xwiki-tools, which should be ready in an hour or so. After that, all the 
repositories should be in place.

== Repositories vs. projects/modules

For the moment, I kept one repository for the main top projects which 
used to have a trunk/branch/tags structure:
- platform/core, platform/web, enterprise, manager, watch, rendering, 
commons-core, commons-pom, commons-tools, and they should stay this way 
since all the submodules are released together, so tagging them together 
makes sense; we'll decide later if they should be split if we want to 
release each submodule individually
- platform/skin and platform/xwiki-tools are also in one repository 
each, although I'd like to split them into individual repositories 
sometime later

I split+merged xwiki-applications and xwiki-plugins into one repository 
per extension, holding together the plugin and the related application 
where both modules make up an extension (for example the tag plugin and 
the tag application). Although this might seem like there are a lot of 
repositories, IMO it's a lot better since:
- it's not possible to checkout just one subdirectory from a repository, 
as can be done in subversion; with only one big repo with all the 
extensions in it, people wanting to fork an extension to patch it would 
also have to fork unrelated and unused/deprecated extensions like the 
selenium application
- each extension has its own lifecycle, while tagging/branching is done 
per repository; it wouldn't look nice to have one repository with a 
thousand different tags, each one actually relevant to only one of the 
extensions
- putting all the extensions together is easy with a parent repository 
including all the extensions as submodules (similar to svn externals), 
so it will still be easy to have all the extensions checked out

== More setup work needed

There's still some work left to do after all the repositories are in place:

- Make parent poms for the extensions made of plugin+app
- Finish setting up the aggregation repositories by adding the recently 
migrated submodules and writing parent poms
- Update all the poms with the new scm information
- Update dev:Community.SourceRepository and related pages
- Send an announcement
---------------- I hope that this should all be done by Monday morning
- Configure Jenkins with the new repositories
- Configure all the GitHub repositories:
-- remove the wiki and issue tracker offered by github
-- enable the mail notifications
-- add descriptions and homepage URLs for all repositories
- Swallow the delay introduced by learning the new tools :(

Later steps:
- See how to write notification emails with the diff in them
- Add README files in each repository, to be displayed on the github page
- Decide what to do with contrib

== Ideas for Contrib

We should migrate contrib as well to github, either under the xwiki 
organization, or under a related xwiki-contrib organization. I don't 
have a strong opinion about this choice.
- Keeping them together seems like the right thing to do, since they are 
all related to XWiki
-- it's easy to find incubating or retired projects
-- it's possible to give rights to users only on some repositories, so 
there's no technical reason not to do it
- Keeping them separate makes sense since:
-- we mention that contrib projects don't have to be that closely 
related to XWiki, so contrib could host personal projects not related to 
the main goal of the XWiki projects
-- it could dilute the focus on the main projects by polluting the 
organization dashboard

Thinking more about it, I think the contrib as it is right now doesn't 
make sense as a whole:
- /people/ shouldn't be at all under the xwiki organization, since each 
committer can have their own repositories on github now
- /sandbox/ projects could go under their maintainer's repository
- /retired/ and small /projects/ could be repositories under either the 
xwiki or the xwiki-contrib organization
- big /projects/ (wiki30 and concerto) could go under their own 
organizations, since they aren't 100% XWiki and they have different 
committers, goals, lifecycles

As per granularity, IMO one repository per module is again the right 
approach; GitHub was designed with many repositories in mind, we don't 
have to keep their number to a minimum.

== Git help

I'll be available on IRC to answer questions. Git has good 
documentation, many tutorials, and I think it has good and intuitive 
support in all modern IDEs (I'm a console user myself).

-- 
Sergiu Dumitriu
http://purl.org/net/sergiu/
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to