I have been trying out Crucible Code Review
software from Atlassian (halfway through the trial) with a number of teams in my department. The competition in this area is pretty sparse, and each one has its other issues:
- Kiln only works for Mercurial (which we may move to some day, but for now we are using SVN so we need a solution that works with that as also)
- Review Board seems to be very popular, but just looking at the list of the dependencies gives me indigestion when considering an install on our Windows Server environment.
- Code Collaborator is way too expensive without giving much extra (50 users in Crucible = $2200, 50 named users in Code Collaborator = $24,450)
- Code Review Tool doesn't have a very professional looking site, hardly any documentation and no plugin potential and no Mercurial support
- Specatare's and Parasoft's websites are even sparser and gives almost no info (aside from a few screenshots) - not enough to make me spend the time trying it out.
On the other hand, thus far Crucible has delivered on the main functionality: establishing a medium for easily performing code reviews. The price
is very fair and there is very decent documentation
. We will probably go with it, just for those reasons alone.
That said, I have a number of issues with Crucible - posting them here in the hopes that someone from Atlassian will see this and can do something about some or all of them.
- Design: The marketing website is professionally designed, from a usability perspective. The software is not. It looks like I (or someone with their head in code all day) designed it. For new users, it is just not so intuitive to use. What is the difference between Source and Projects? Where do I need to go to get things done? Where are the important items? After spending some time, we can figure it out, but a better design would go a long way. If you need some hints, just check out Team City. They have figured this out pretty well.
- Installation: I was able to get it running on Windows Server with Sql Server as a backend, without too much pain (note: there was some pain involved). However, thus I am only able to launch it from the command line. Instructions for setting it up as a Windows Service did not work. If we end up purchasing a license, I will have to bite the bullet and get it working somehow. But this needs to be fixed. Both Team City and Fog Creek (and I am sure, many others) have figured out how to bundle the installation of a windows service into an Installation Setup routine. Please see to this (and for upgrades as well). Same with documentation relating to getting Crucible to bind to the domain name properly. I eventually figured it out, but more guidance around this could have been given (hint: HTTP bind to the IP address on port 80, set the Proxy Host to the domain name without "http://" and set the site url to the domain name with "http://").
- Repository Administration: A lot of little things here could be changed to make this easier (again, check out Team City - they have nailed this). Off the top of my head:
- Why can't I change the name of a repository after it has been created?
- Please give me some concrete examples about how Include/Exclude paths work in a repository. I want to use these but don't want to put in a couple of hours trying it out (especially when the only way to try it is to re-index the whole repository, something that can take a really long time).
- Why can't I create a new repository based off of the settings used in a different repository, or better yet, have one base repository root, from which I define other repositories based on their relative paths (like in TC)? We have one big SVN repository, and Crucible, our individual repositories are all subdirectories somewhere down from this root. Right now it is really annoying to create new repositories - this could be made less painful.
- Workflows & Permission Schemes: Bit of a learning curve here - so many options. Some more explanation and help with setting these up would be good. Maybe more default setups available out of the box. And the one preset Permission Scheme that was given (agile) was setup by default to make the contents and reviews of all associated projects public to all users, including users who have not logged in (not so cool).
- Better Notifications: Right now it is easy for notifications to get lost in the different dashboards. I want to be able to set up a way for notifications regarding certain types of SCM updates to be elevated in prominence. For example, let me give a path or pattern match within a repository so that whenever code is committed to this path, I will get some loud notifications about these. Or when a specific user commits code to a specific project. There are so many commits, that I am not always able to review every single one - this is something to strive for, but I am not there yet. However, there are some areas in my projects (or some users) where I always want to review every line of code that they put in. I don't want to lose these in the haystack. Give me a way to do this better and I will be very appreciative.
Looking at the market for code review software, it definitely seems like it is a third-class citizen, not getting as much attention as its bigger cousins in the realm of Continuous Integration or Bug Tracking (it is obvious even from looking at the list of different Twitter accounts used by @Atlassian
, or the popular tags on their blog
- Crucible or Fisheye are naught to be seen). Still, this lower status can also present an opportunity to really claim the mantle as the best in the business (and a note to competitors, existing or potential: not a high barrier to entry right now).