What's your preferred development infrastructure stack?

Over the years, I've used many different source control systems, wikis, bug trackers and continuous integration servers. On many projects, I've been responsible for recommending and helping to install these systems. For the most part, they've often been disparate, meaning there wasn't a whole lot of integration between the various applications. Here's a list of all the different systems I've used:

I believe all of these applications are useful in supporting an efficient development process. When clients have asked me to help them build this type of infrastructure, I've often asked if they wanted to pay for it or not. If not, I'd recommend Trac (since it has a wiki, source viewer and bug tracker all-in-one) and Hudson. If they were willing to pay, I'd recommend the Atlassian Suite (Confluence, JIRA and Bamboo).

These stacks all seem to work pretty well and the Atlassian Suite certainly works great for AppFuse and other open source projects. However, I recently had the pleasure of working at Chordiant Software where we used Chordiant Mesh to collaborate and develop software. Their Mesh system is powered by Jive Clearspace and provides a wealth of tools for each project, including a dashboard, discussions, documents, notifications and widgets providing status + links to JIRA and Bamboo.

Even though Clearspace's rich text editor caused me some early frustration, I really enjoyed the fact that a solid development infrastructure existed. It made it much easier to collaborate, document and execute our development process. I realize that it's difficult to build and maintain a custom development infrastructure stack. Chordiant had a whole team that developed, enhanced and supported their environment. But that doesn't mean it's impossible and not worth striving for.

I think there's a number of best-of-breed applications you can use to build a sweet development infrastructure stack.

  • Source Control: Git
  • Source Viewer: FishEye
  • Wiki: Jive SBS
  • Bug Tracker: JIRA
  • Continuous Integration: Hudson

I've only used Git for a few weeks, but I can easily tell it's better than Subversion. I don't think it's easy to convince companies to switch their source control system, so it's probably not worth arguing if you're already using Subversion. I can also envision using Confluence instead of Jive SBS, but then you lose forum support and have to use something like Mailman or Google Groups. JIRA Studio looks close to my dream stack, except it doesn't support Git or a forum + mailing list system.

What is your preferred development infrastructure stack? Why?

Posted in Java at Jan 12 2010, 09:54:46 PM MST 30 Comments
Comments:

I am cautious about recommending Git to a broad audience. Git (and GitHub) work great for highly distributed teams and open-source or community-based development efforts. Windows support is getting better over time but there are still some sharp edges when using Git in a Windows-only or a mixed-OS environment. Git also has problems working with corporate firewalls. Many blog entries and how-tos are devoted to getting just the right setup to get the protocols to tunnel properly in specific network environments and configurations. After much pain and suffering I was finally able to get a setup that works most of the time for most operations, but it is still fragile and requires a cobbled-together set of tools (git, cygwin, putty, etc.). If part of the team is on the opposite side of a firewall from the master repository, I would stick with Subversion.

Another CI tool worth looking at is TeamCity from JetBrains (the makers of IntelliJ IDEA). I think it compares most directly with Bamboo, but it has one feature that as far as I know the others don't have: pre-commit test builds. From your IDE (IntelliJ or Eclipse), you can submit a test build to TeamCity before your changes are actually committed to source code control. If your build succeeds, your changes are then committed. If your test build fails, no one is the wiser and you don't have to wear the "I broke the build" hat all day. And, its free for small teams/projects.

Posted by Scott Frederick on January 13, 2010 at 01:24 AM MST #

Git is too hackish. mercurial gives a smoother migration from SVN. Try bitbucket.

Posted by afsina on January 13, 2010 at 02:09 AM MST #

[Trackback] @dirkriehle For you #softwareforge project this blog might be interesting: http://is.gd/6bdeB

Posted by kvoges on January 13, 2010 at 03:53 AM MST #

Hi,

We are using Redmine (http://www.redmine.org) which is Trac like in ruby (based on Rails) with multiple projects support, and in the next release there should be project hierarchy as well.

There is also some integration with Hudson.

Posted by ehsavoie on January 13, 2010 at 04:03 AM MST #

[Trackback] This post was mentioned on Twitter by mraible: What's your preferred development infrastructure stack? http://raibledesigns.com/rd/entry/what_s_your_preferred_development

Posted by uberVU - social comments on January 13, 2010 at 04:07 AM MST #

TeamCity is a fantastic CI tool and should make the list. We tried several of the open source tools and even purchased Bamboo and used it for a year, but we had constant problems with resource consumption, stability, and general ease of use. We eventually tried TeamCity and haven't looked back. It's intuitive to use, flexible, stingy with resources, and has great IDE integration with both Eclipse and Idea.

Posted by Matt W on January 13, 2010 at 07:29 AM MST #

I prefer mercurial and redmine in my best-of-breed list but that's ok.

Posted by Mary K on January 13, 2010 at 07:58 AM MST #

My List:

  • Source control: Git
  • Wiki: Atlassian Confluence
  • Continuous Integration: Jetbrains Teamcity
  • Bugtracker: Atlassian Jira

More on my blog.

Posted by Oliver Wehrens on January 13, 2010 at 08:33 AM MST #

My choice

  • Source Control: Git
  • Source Viewer: redmine
  • Wiki: redmine
  • Bug Tracker: redmine
  • Continuous Integration: Continuum

Redmine is a quick solution, it has everything already integrated, and looks better than Trac.

For an enterprise I'd definitely not use Git, the tools are not yet ready.

Posted by Carlos Sanchez on January 13, 2010 at 01:15 PM MST #

The two components I never want to be on the cutting edge with are DBMS and source control. I have a hard enough time convincing some clients to move from CVS to Subversion. No way I am going to push for Git.

For CI, I also have to recommend TeamCity. If you're going with the full Atlassian stack, makes sense to use Bamboo since it integrates the best and the cost is reasonable when bundled. Otherwise, TeamCity is great. All of the IntelliJ code inspections run server side and show up in my IDE via the IDE plugin. Pre tested commits, etc.

Posted by Ted Bergeron on January 13, 2010 at 02:26 PM MST #

My current stack:

  • SCM: Subversion
  • IDEA: IntelliJ IDEA or Eclipse
  • Wiki: XWiki definitely! (http://xwiki.org). It's IMO the most developer-friendly wiki out there (disclaimer: I'm one of the XWiki developers)
  • CI: Hudson
  • Issue tracker: JIRA

Posted by Vincent Massol on January 13, 2010 at 03:18 PM MST #

SVN + Trac + Hudson right now

Jira/Confluence/FishEye works too.

Recently switched from Continuum to Hudson. Hudson could use a system where some releases are designated stable since there are so many versions.

The question I have, that I am finding of particular interest just now, relates to Agile project management tools. The PMs are being weaned from MS Project for their planning. Tools like Rally and Version One are being considered. Jira has an Agile planning add-on, too.

Does any one have opinions or experience integrating the planning tools with the dev tools this blog entry concerns itself with? Which are good ones and which suck. Maybe this all depends on the way your project management works.

I look at it with two key parts these tools will help with which are of high importance:

1) We need to line up estimates with actuals just well enough to know how much work we can get done in an iteration with the existing team and similar stuff.

2) We have to communicate with folks outside the project team. Our bosses want to know when we will get done. Somebody wants to know how much its all going to cost. Some other teams may have to coordinate with our (to do stuff like get our hardware up and running, ready for us to install or to collect some data from other systems that have to be changed to add services or queues or new databases).

Posted by Lee on January 13, 2010 at 04:47 PM MST #

Regarding forum support in Confluence, there is Adaptivist's Community Bubbles plugin. It adds forums to Confluence and is free. I have not used it personally, but it looks reasonable at first glance.

Posted by Dan Grabowski on January 13, 2010 at 04:48 PM MST #

Glad to hear that you like JIRA Studio. It's definitely a great way to get a hassle-free tool stack that supports the entire team through the entire dev process.

We've heard a lot of demand to support Git, so we're working on it as we speak. No expected delivery date just yet, but rest assured that it's coming!

Posted by Jesse Gibbs on January 13, 2010 at 05:14 PM MST #

Glad to hear that you like JIRA Studio. It's definitely a great way to get a hassle-free tool stack that supports the entire team through the entire dev process. We've heard a lot of demand to support Git, so we're working on it as we speak. No expected delivery date just yet, but rest assured that it's coming!

Posted by Jesse Gibbs on January 13, 2010 at 05:15 PM MST #

Git is ready for enterprise if you use http://github.com/brennandunn/git-central and http://eagain.net/gitweb/?p=gitosis.git

Posted by FourDollars on January 13, 2010 at 08:39 PM MST #

Fisheye does not have very good git support, though. It does not distinguish commits between different branches, and you can't browse by branch. See http://jira.atlassian.com/browse/FE-1979

Posted by Dave Brondsema on January 13, 2010 at 09:45 PM MST #

we are using the following, and we enjoy the result

  • Source Control: Systems: Subversion
  • Source Viewers: Trac
  • Wikis : Trac
  • Bug Trackers: Trac
  • Continuous Integration Servers: CruiseControl
  • Mailing Lists: A private Group

Posted by hamed on January 14, 2010 at 12:57 PM MST #

I see a trend here of people commenting with their current development infrastructure stack, but not specifying why they think it's better than my preferences. If you're going to comment, please state why you prefer it. Thanks!

Posted by Matt Raible on January 14, 2010 at 01:24 PM MST #

For SCM you have to look at Mercurial.

It's a DVCS much like Git but with a usage paradigm very similar to Subversion and so is (allegedly) easier for people to pick up, whereas Git's extensive "command" space is a bit more intimidating (albeit that for everyday usage, they're about the same.)

We selected it in my work project because it has (had?) better Windows support than Git while providing a similar feature set and being easier to use and comprehend (for newcomers to DVCS).

It's been fantastic. It's made a substantial improvement to our capability to deliver (as Git would have too) -- the benefits have come from it simply being a DVCS and the ability to do very easy branchy development and simple merging. This makes things like feature branches that you can chose whether to deliver or not a breeze.

The main benefit over Git is probably its simplicity in use (and what you have to remember.)

Posted by Carl Fooks on January 15, 2010 at 01:55 AM MST #

I really enjoy using the Mantis Bug Tracker which can be found at http://www.mantisbt.org/

Posted by Mike Jennings on January 15, 2010 at 08:42 AM MST #

For a CI tool, consider AnthillPro.

My first CI tool was Continuum, which is nice for Maven projects (because it reads the pom for all the metadata), but really it is a Mickey Mouse tool... Hudson has certainly emerged to be the premiere open source CI tool, but what I don't see is the full Application Lifecycle Management (ALM) aspect.

With AnthillPro, we have configured it to not only kick of builds due to scm changes, but we can run workflows on those build artifacts -- like deploying them to servers, or kicking of a release build. We instituted workflows that enforce Separation of Duties, as well as sign-offs.

I admit that it isn't the prettiest of tools -- certainly Bamboo is nicer to look at. But the ALM piece (which we customized) is fantastic.

Posted by Anthony on January 15, 2010 at 01:39 PM MST #

Our stack:

  • SCM: CVS moving to Subversion
  • IDEA: Eclipse
  • Wiki: Confluence
  • CI: Hudson
  • Issue tracker: JIRA
  • Builder: Maven
  • Repository Manager: Nexus

I've added the last two ones, because, imho, these are major components of a development infrastructure. Our dev teams (and partners) need something to build applications (wether it is Maven, Ant, something else) and need something to manage what has been built.

All this can work fine together(except for confluence, which is completely disconnected from the other elements). What I'd like to have is a workflow tool that I could take from the OSS shelf to manage the steps from dev to prod. Today, we've built our own.

Thanks for your valuable blog.

Christian-Luc

Posted by houze on January 18, 2010 at 09:30 AM MST #

Take a look at http://intland.com/ and make sure you read their blog. They provide somewhat patched hgeclipse and codebeamer. At work we use IBM TeamConcert, CVS, SVN and ClearCase for version control. Other software we use: maven, JIRA, TRAC, hudson.

Posted by ilx on January 18, 2010 at 05:24 PM MST #

Mercurial. Currently best fit for cross-platform environments. Git is promising, but a nightmare on Windows, and don't even think about firewalls....

Posted by Val on January 19, 2010 at 02:21 PM MST #

It seems like most of the responders are from the Enterprise and/or Windows world. For those that think git is 'hackish' or a nightmare on Windows... I fail to understand.

git really is very good. It's featureset is very powerful, especially for complex projects with lots of team members. In addition, the utility provided by github is way better (IMO) than any other online scm tool.

I'm surprised it's not more popular among your readers. Seems it would be more acceptable in the enterprise as it's preferred transport is ssh.

I'm also shocked that no one has recommended FogBugz. Whether hosted or in-house, the features and overall quality of FogBugz 3 really kick the ass of any other bug tracker I've ever used. New features include built-in support for Mercurial (via another Fog Creek product, Kiln) and a plugin API that allows you to bend it to your will.

Posted by Yong Bakos on January 19, 2010 at 06:03 PM MST #

If it's hard to choose and you don't want to lock in or loose any investment, codeBeamer (mentioned above) and its free counterpart codeBeamer Managed Repositories supports Git AND Mercurial AND Subversion (plus some others). Can be a smooth way to transform from SVN to the DVCS world.

And they have wiki, trackers, forums, source browser and all that jazz built in an integrated package.

Learn more: http://intland.com/products/main.html

If you are an Eclipse user, just add the free HgEclipse and your team is good to go.

Posted by Aron on January 20, 2010 at 04:02 AM MST #

SCM: git IDEA: IntelliJ Wiki: Trac CI: Hudson Issue tracker: Trac Builder: Maven Repository Manager: Nexus

Posted by Sigmund Lundgren on January 24, 2010 at 09:13 AM MST #

My choice

  • Source Control: Git
  • Source Viewer: redmine
  • Wiki: redmine
  • Bug Tracker: redmine
  • Continuous Integration: CruiseControl.rb

Posted by Tyson Cung on January 27, 2010 at 02:20 AM MST #

My choice

Source Control: Subversion
Source Viewer: Fisheye
Wiki: Confluence
Bug Tracker: JIra
Continuous Integration: Bamboo (or Hudson)
Review Tool: crucible
Source Code Analyzer: Sonar

we have selected the atlassian stack. But soon we could switch to git, atlassian has released fisheye and other tools for git.

Posted by OneCent on February 21, 2010 at 01:59 PM MST #

Post a Comment:
  • HTML Syntax: Allowed