title | date |
---|---|
Seven Years Under A Palm Tree |
2016-04-24 |
The last time I wrote on this blog was June 2013 as I geared up to launch Capistrano v3 which was a complete ground-up rewrite. The rewrite had been "finished" and working for a while, but given that it was a ground-up rewrite in the spirit of Capistrano, but shared nary a single line of code with its forebear, the release dragged up a bunch of mixed emotions, was Tom and I being frauds writing new software and releasing it under an existing "brand name", or was it a violation of some unwritten Netiquette - what right did we have to make that decision in any case?
Today I'm reflecting at the end of a weekend where many things seem to be aligning. My son is 18 months old today, my company Harrow.io (more below) will release its Capistrano integration on Monday, and one of the most significant releases of Capistrano since the rewrite in 2013 will be released.
Serendipitously this also marks seven years to the week since my first commit
in Capistrano core landed, trivial as it was. Before I ever had code in
Capistrano I'd spent countless hours working to help people in IRC, and on the
then infantile StackOverflow (it was less than a year out of beta!), I'd also
written the tremendously popular capistrano-handbook
which I finally uploaded
to Github on the same day that my code landed in Capistrano. I don't recall
those two milestones being related, apparently it was just a coincidence!
Capistrano 3.x, as brutally different though it may have been, was incredibly well received, through the rewrite we lost thousands of lines of custom DSL code, gained a lot in speed and pluggability and an immeasurable amount in maintainability. Of course we also quietly dropped some seldom used features and added them back as people identified a will to upgrade but noticed something lacking.
So, tomorrow (2016-04-25) I'm releasing Capistrano 3.5 which includes
tonnes of new features, nearly all community contributed and some that will
really, really help us to deliver more, better improvements in the future and
help us clean up some of the lingering issues about inaccurately written
documentation that predates Capistrano 3.x which confuses people. Matt's cap doctor
command will report unused variables, out of date plugins, list the
resolved variables for a given stage, etc. We're excited about this, it was
great achievement of Matt's to get that into 3.5!
Another huge part of Matt's work is the change to the default Capistrano
output formatter. This will likely be as controversial as the original
rewrite, it's inarguably better looking, more concise and easier to pick the
important information out of, but people can be resistant to change, so it's
super easy to set back to the previous pretty
formatter!
Another important part of the 3.5 release is the integration with Harrow.io. Harrow is a platform, service and company that I founded with some friends to make my work on Capistrano more sustainable by making it into my day job. We built something that you can understand as being a "Continuous Integration" tool but with a really distinctly different design to anything else you might have come across.
It's designed to feel like a web-enabled extension of Capistrano's principles. With stages, and sets of environment variables, designed to make the tooling it wraps better, faster, and easier to use.
Like most things I've contemplated doing with Capistrano over the years, not least rewriting it from scratch, the decision to promote Harrow from within Capistrano was not taken lightly, it's important to strike the right balance between offering people a better experience with their software, without forcing them into something they might come to resent.
The scope of the Capistrano/Harrow integration is a simple in-terminal prompt
(well behaved, presuming "no" if no answer is given within a few seconds or no
facility to prompt is available) when running $ cap install
which happens
once and only once per project. We may expand the scope of this integration in
the medium-term future depending on the community feedback. The integration
does make one anonymous HTTP request to allow us to toggle things off
in case
things go badly, which can be opted out of by simply setting $ git config harrow.disabled true
which will stop the integration doing anything. (We
designed the integration to be so discreet that it doesn't even write a
dot-file with configuration!)
Capistrano will always remain open source and liberally licensed. Harrow is closed-source (for now) platform with a cloud subscription model, and an on-premise "enterprise" version which are offered as paid commercial services. With that said, I'm still curious to see how the community reacts.