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:
- Source Control Systems
- Source Viewers
- Wikis
- Bug Trackers
- Continuous Integration Servers
- Mailing Lists / Forums
- A private Google Group
- Jive Forums
- Mailman
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?
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 07:24 AM MST #
Posted by afsina on January 13, 2010 at 08:09 AM MST #
Posted by kvoges on January 13, 2010 at 09: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 10:03 AM MST #
Posted by uberVU - social comments on January 13, 2010 at 10:07 AM MST #
Posted by Matt W on January 13, 2010 at 01:29 PM MST #
Posted by Mary K on January 13, 2010 at 01:58 PM MST #
My List:
More on my blog.
Posted by Oliver Wehrens on January 13, 2010 at 02:33 PM MST #
My choice
For an enterprise I'd definitely not use Git, the tools are not yet ready.
Posted by Carlos Sanchez on January 13, 2010 at 07: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 08:26 PM MST #
My current stack:
Posted by Vincent Massol on January 13, 2010 at 09: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 10:47 PM MST #
Posted by Dan Grabowski on January 13, 2010 at 10: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 11:14 PM MST #
Posted by Jesse Gibbs on January 13, 2010 at 11:15 PM MST #
Posted by FourDollars on January 14, 2010 at 02:39 AM MST #
Posted by Dave Brondsema on January 14, 2010 at 03:45 AM MST #
we are using the following, and we enjoy the result
Posted by hamed on January 14, 2010 at 06:57 PM MST #
Posted by Matt Raible on January 14, 2010 at 07: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 07:55 AM MST #
Posted by Mike Jennings on January 15, 2010 at 02:42 PM 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 07:39 PM MST #
Our stack:
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 03:30 PM MST #
Posted by ilx on January 18, 2010 at 11:24 PM MST #
Posted by Val on January 19, 2010 at 08: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 20, 2010 at 12:03 AM 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 10:02 AM MST #
Posted by Sigmund Lundgren on January 24, 2010 at 03:13 PM MST #
My choice
Posted by Tyson Cung on January 27, 2010 at 08: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 07:59 PM MST #