On Jul 1, 2011, at 6:29 AM, Laurens Van Houtven wrote:

As some of you may already know (either through a backchannel or because you talked to me at Europython), there has been some talk about moving Twisted way from Trac+SVN to somewhere that isn't Trac+SVN.

A lot of the devs do like SVN. My guess is that that's mainly because they don't actually use SVN, they use Combinator, or something. On the other hand, I do think that Trac is pretty universally loathed, and it would be a good idea to get away from it.

There's a few existing hosting solutions:
  1. Launchpad (+ Bazaar as the default vcs)
  2. Bitbucket (+ Mercurial as the default vcs)
  3. Github (+ Git as the default vcs)
Although I've hated git for a long while (and I still don't like it very much), I firmly believe Github is the right thing for Twisted. My incredibly unscientific poll amongst people who like Twisted but aren't devs is that they all love or at least like Github, and a surprising number has a distaste for Launchpad (unfamiliarity with Bazaar, perceived developer-unfriendly UI, slowness).

Unless someone is going to go all "NO GITHUB IS TERRIBLE AND YOU ARE A BAD PERSON FOR EVEN SUGGESTING IT" on me, maybe we can talk about planning the transition? :)

As Itamar has already suggested, I think that this is a solution in search of a problem.  Aside from occasionally saving a contributor the trouble of typing 'review' in the keywords field every so often, what is this actually going to accomplish?  We have too many pending patches already, with not enough sustained interest to either review them or fix them; what we need are more sustained contributors, more reviewers.  Is this going to help us sustain interest?  In my opinion, the main frustration with this process is simply responsiveness of the site.  I think a better investment to address those issues would be in faster hardware to run Trac on (and possibly to communicate the acceptability of using a DVCS mirror).

But, if you're going to contemplate a transition, here are a few prerequisites.  Perhaps some of this should be added to the WorkflowRequirements page for posterity.

If you want me to take this effort seriously, please finish twisted.positioning first and get it reviewed and landed on trunk.  That's just a patch, after all, a much smaller effort than a attempting to migrate the project onto entirely new infrastructure, with implications for testing, version control, and issue tracking. :-)

Less controversial, I think, would be to produce a viable official github *mirror*, a-la <https://github.com/django/django>, rather than a migration, since this is a necessary prerequisite and useful in its own right.  <https://github.com/twisted> still has no public repositories, and I've been bugging people (including you specifically, lvh) to take this over for the past couple of weeks.

If we migrate somewhere, I would like all the data to be mirrored and presented on twistedmatrix.com with a custom stylesheet.  Ideally, I would like to avoid Twisted's users interacting with a different site for issue tracking.  A heavily-used, custom-styled web presence was an important part of fundraising.  No, I don't have any strong empirical data to present to justify that sentiment, but salesmanship is an art, and when I was talking to potential sponsors I felt that our site made us look like a "serious" project that sponsors were comfortable contributing to. The only person who I think has done enough interacting with sponsors to credibly disagree with this is exarkun - although he may well do just that.  For me, tens of thousands of dollars of focused sponsored development is going to win over random patches from people on github for a loooong time coming.

The fact that Django still maintains their own Trac instance is a point in favor of this, as well.  Those guys know a thing or two about image management :-).

Of course, anyone may easily refute this point at any time by simply raising about $30,000 for the TSF.

Pages like <http://www.sitemeter.com/?a=stats&s=sm7twistedmatrix&r=19> give us interesting information about our developers, and have previously informed discussions about efforts put towards platform support.  None of the sites listed above appear to offer independent web analytics, or the ability to embed custom HTML.  This is not, strictly speaking, a requirement, but any potential advocate of migrating somewhere should be aware that this would be one of the things we'd lose with a hosted solution.

You'll need to port <http://twistedmatrix.com/highscores/> to whatever system we switch to, and hopefully also preserve the ease of development and experimentation with ticket data.

We will need a staging deployment so that the new system can be evaluated and any tools to migrate can be tested without actually switching to it.  This would appear to disqualify github immediately, as we can't run our own instance for testing, and I don't want people thinking that we've switched and starting to file bugs into a botched public test migration.  I echo Itamar's concerns about a proprietary, remote code host.

Even in the case of an open source host, there are practical considerations.  I have the utmost respect for the developers at Launchpad, but the UI for that site is, frankly, a horror.  Trac's bad, but it is at least simple, and fairly static, and reasonable to override when it's doing something silly, if you care enough.  Once we've got all of our data ported over to Launchpad, I don't have a lot of confidence that the workflow or the UI will become _more_ suitable to our purposes, and if it's changed to become worse, will we really have any recourse?  Will we have to update our project documentation?  Our front page is already bad enough, but I think it still presents more useful information to the average reader than <https://launchpad.net/twisted>'s "Series and milestones", "configuration progress", or "packages in distributions" sections.

Of course, you'll also need to rewrite all of the relevant wiki pages; ContributingToTwistedLabs, TwistedDevelopment, ReviewProcess.  (And it took like 5 years to get this right for our current setup.)

Finally, any code-hosting service should also have a good option for migrating away.  We currently control twistedmatrix.com and can easily change the links from our current tickets to a new URL scheme or domain.  But, when we decide that Github or Launchpad is no longer workable for whatever reason, will we be able to do the same with the ticket links under their control?  We inhabit a hell now, to be sure, but it is a hell of our own design which we may hypothetically escape at any moment.  I don't want to trade that for something slightly better that we could never leave.  What are the non-hosted contenders?  If trac is really so bad, where's the better, competitive software we could switch to?  (Don't say redmine, I already know about that trick.)

Sorry that this post is so long, but I've tried to incorporate the majority of my objections into this one post so that the discussion doesn't drag on too much.  I am hoping to abstain from much more participation unless something is really unclear.  My single biggest concern is the potential of this topic to waste a huge amount of core developer time, so I'll try to do my part and not fan the flames further.  Although, the other questions raised in this thread, about what parts of our workflow are problematic, are worth talking about separately.