jump to navigation

Version Control: Plug-ins vs Toolkits July 18, 2007

Posted by Ian Clatworthy in Bazaar, Collaboration, Software Architecture.
trackback

There’s no such thing as the perfect version control tool and there never will be. That’s why extensibility is #4 on my list of evaluation criteria for VCS tools. There will always be pressure on these tools to enable new ways of working, provide more information for decision making and provide smarter integration with other tools. Over and above that, extensibility is really important for both technical and social reasons.

Technically, trying to ship a tool which is all things to all people creates all sorts of problems particularly w.r.t. reliability, my #1 evaluation criteria. Bloatware takes longer to ship each time, quality typically drops regardless, and the extra features don’t necessarily hit the mark anyway. As Mozilla has shown with Firefox and Thunderbird in recent years, it is far better to produce a rock solid core product that supports plug-ins in a documented way. Done right, the result is higher quality, better performance, and extensions that better meet the needs of the user base anyway.

Socially, a plug-in architecture increases the engagement of the community that grows around successful products. Whether open source or commercial, it takes a community to raise great software and plug-ins let that community scratch their itches in a sanctioned way.

There are different ways of tackling the extensibility challenge but the best way in my experience is by explicitly supporting plug-ins as Bazaar and Mercurial do. Other tools like Git have gone down the well worn toolkit path, and while that’s much better than having a monolithic application, I believe the plug-in path is a wiser one for a host of reasons.

Firstly, toolkit products tend to get extensions and enhancements developed as Unix shell scripts or Windows batch files, reducing their portability across platforms and hence usefulness to the user community. Secondly, scripting needs tend to put a negative pressure on the UI in that a large amount of options begin appearing just for scripts. That only gets scripts so far though, so then the raw files tend to be parsed, making it increasingly difficult over time for those formats to evolve. (Encapsulation isn’t just good theory – it’s good practice.) Thirdly, a plug-in architecture puts a positive pressure on the product designers to have a rich, clean API for plug-in developers. Tools without that pressure are more likely to have internal APIs that expose physical design details instead of logical design ones. Once again, that leads to a fragile product where few are prepared to make desirable changes after a while in case something breaks. Compatibility dominates as a consideration – innovation grinds to a halt.

Of the new breed of VCS tools around, I think Bazaar leads the pack w.r.t. its plug-in architecture. http://bazaar-vcs.org/BzrPlugins lists over 60 plug-ins! And it is easy to write your own as explained here: http://bazaar-vcs.org/WritingPlugins. Mercurial also has a good plug-in architecture with 30 plug-ins listed on http://www.selenic.com/mercurial/wiki/index.cgi/UsingExtensions. Both Bazaar and Mercurial plug-ins can add new commands while Bazaar plug-ins also let you add options to existing commands. Useful stuff.

As well as plug-ins, pre and post command hooks are really useful for integrating VCS tools into your toolset. While Git is lacking in a plug-in architecture, its hook capability looks good and similar in scope to what Mercurial is offering. Bazaar also has a useful set of hooks both in the core and scattered across some commonly used plug-ins. The documentation on these needs some work though, an area sure to receive lots of attention as we push hard towards Bazaar 1.0.

Bazaar 0.18 is now available. Please download it and give the Bazaar team your feedback so we can make Bazaar 1.0 as good as we possibly can. Here is a sample of the Bazaar plug-ins you may wish to try with it:

  • BzrTools -a collection of useful extensions
  • BzrGtk – a set of GUI interfaces
  • BzrSvn – round-tripping to SVN repositories
  • difftools -display differences using the tool of your choice
  • extmerge – resolve conflicts after a merge using a GUI tool
  • dbus – automatically notify team members on your LAN re branch changes.
  • and many, many more.

Do you have a favorite Bazaar plug-in? If so, please add a comment below explaining why.

Comments»

1. Ian Clatworthy - July 18, 2007
2. Ian Clatworthy - July 18, 2007

Some feedback from Aaron Bentley on the bazaar mailing list …

“You’re selling plugins short by talking only about commands. bzr-svn
doesn’t add any commands, but it certainly increases the capabilities of Bazaar. Similarly, the email plugin doesn’t add any commands.”

That’s quite true. Plug-ins in Bazaar can be used for all sorts of things including providing experimental features and changing default file formats on Windows 98, say.

3. Daniel Watkins - July 19, 2007

Ian,
Just thought I’d drop a quick note to thank you for this series of posts. 🙂

Dan

4. John Reese - July 19, 2007

I think the biggest thing holding me back from adopting a DRCS, specifically Bzr or Hg, is the lack of user administration features for using the system in a centralized fashion. One of the greatest features of Subversion is that it can handle all of its own user authentication and security access, especially on a repository by repository basis. This means I don’t need to rely on other tools to deal with user authentication and access, such as Apache’s hideous .htpasswd scheme (for Hg), or setting up ssh accounts and keys for each project (for either).

When I’m hosting my projects and repositories, especially in a shared-hosting environment (specifically Dreamhost), I don’t like having to monkey around with a whole bunch of .htpasswd files, and I certainly don’t like the prospect giving community members ssh access to my server, regardless of how well I know them.

If one DRCS system could come out with it’s own authentication mechanism akin to Subversion, and preferably integrate into Apache as well, I would switch over in a heartbeat. But until then, Bzr, Hg, etc just create too many administration headaches for my taste, and they just aren’t feasible. I love the speed, flexibility, and offline abilities of Bzr and Hg, but I can’t swallow the nightmare of giving access to my co-developers. It’s just too much of a pain in the ass.

But still, good job on Bzr, it is still developing very nicely and quickly, and I look forward to the day I can switch over to it! Cheers.

5. Ian Clatworthy - July 19, 2007

John,

I posted your feedback to the Bazaar mailing list. Here’s the resulting thread: https://lists.ubuntu.com/archives/bazaar/2007q3/028229.html.

6. John Reese - July 19, 2007

Ian, I get a 404 error when I try to follow that link….

7. John Reese - July 19, 2007

Nevermind, just realized that the problem was the dangling period in the url. Cheers, and thanks for passing it on. Maybe I’ll be able to work with Bzr someday after all. 🙂

8. Josh - July 20, 2007

According to one analyst we spoke with, they referred to Accurev as ‘sheer architectural elegance.’ Perfect, probably not 100 percent, but is anything closer, doubt it. Oh, and did I mention it’s free for 2 users? 🙂

9. Joao Marcus - July 24, 2007

Damn, Bzr 0.18 is out and *still* with UnicodeDecodeError in Windows. It sucks, but it’s not the main reason why I’m still using SVN. The main reason is: GUI. I can’t convince my Win-only coleagues to use anything that doesn’t have a GUI. With SVN, I can show them Tortoise, RapidSVN, etc. I needed it to actually convince them to use a decent VCS, or else they would still be using SourceSafe (and then I’d rather have no source control)

10. flint-dude - July 28, 2007

insert instead of submit
break ” ” disconnect
pqm with a public ssh userfriendly even for new. Its looking great press on to the finished it works” not it gonna work. keep good morale. It is fun and safe. You guys have done some awesome work!!!

11. Sistema de Controle de versão distribuído: Bazaar « Beyond Click - November 1, 2007
12. kisyPeece - July 16, 2011

21 май 2011 Добро пожаловать на Форум о диетах. Если это ваш первый визит, рекомендуем почитать Какие медицинские последствия вызывают диеты?
JustLady – женский журнал: Милые девушки и женщины, предлагаем вашему вниманию статьи о самых эффективных диетах и способах похудения.
Различная информация о похудении, популярные диеты, как похудеть без вреда для своего здоровья, советы посетителей сайта, таблицы расчета калорийности блюд
В современной диетологии существует огромное количество различных диет, ставящих целью снижение веса. Автор одной из них, Вильям Бантинг, утверждает,
Чтобы не возникло проблем со здоровьем, настоятельно рекомендуем перед применением диет с нашего сайта, обратиться за советом к врачу.


Leave a comment