First the good, ClearCase :
- is very good at merging changes or at least, I think it is -- I was warned off branches (activities in UCM ClearCase)
- can show you, continuously, what the combination of arbitrary streams of development would look like (say, a development branch and a release branch)
- sometimes decides not to write changes to certain files to disk, so even though changes are hitting the filesystem in some files, they aren't in others. i.e., your editor sees one thing, your compiler and unit tests another. Get set to reboot and rewrite!
- will not let you make any change to any file that is not checked out; this doesn't sound too bad at first, but think about how many times you just want to crack open a file and put a couple of print statements in it to figure out if you need to change it. This also inhibits refactoring.
- is slow to perform common operations (checkout, refresh) and fast to perform uncommon ones (baseline, graph history)
- has many separate user interfaces for no particular reason, as far as I can tell. There's no equivalent of WinCVS or TortoiseSVN. Note, I'd probably rather be using the command-line interface (cleartool), anyway, but I am having such a difficult time grasping it (see next point) that I'm afraid to try it. In particular, the UI presented by the IBM Rational Software Development Platform, which is based on Eclipse, is abysmal. I actually find the ClearCase plugin for NetBeans far more usable, which is pretty amazing considering that the Rational SDP is a product sold / bundled by IBM and the NetBeans plugin isn't.
- causes everyone around to disavow any knowledge of it -- maybe some people do know it and just don't want to share because they're busy, but I doubt it. Nobody seems to get ClearCase and all mumble about using something easier.
I think I might just set up a Subversion repository, do all my work there, and check it into ClearCase when I'm done. I'd probably have a net time savings after the first 3 days of use.