The anatomy of distributed development - a full catalog of do's and don'ts Tuesday, July 09, 2013 Pablo Santos distributed 0 Comments

As version control developers we meet teams transitioning to different development patterns on a daily basis.

In the enterprise world many are scared to jump into distributed development since they think it will mean a total loss of control. They also tend to think "distributed doesn't fit here".

Others think they're already distributed because they use some sort of connection to a central server :-P

We posted about DVCS myths before but this time we're going to share a full list of typical cases trying to figure out how different types of teams look like... while having some fun.

We will be covering all these topics on our upcoming webinar on July 10th

We'll also check which "myths" are real or ... busted! :D

The DVCS crowd

There is really not much to say about this group other than they're the ones really getting the most about distributed version control. Early adopters, enthusiasts... contributors to open source projects, git and mercurial users most of them, they truly understand what pushing and pulling is all about, merging and all that.

The social coders The wild ones... The small team on cloud DVCS You live in the cutting edge of the dvcs trend: you contribute to cool projects on GitHub and others… You push and pull on a daily basis… you’re a true social coder... You guys DO KNOW what distributed means: you push and pull to each other, no central server, no central authority… true wild distributed fashion… Your team works from different locations and you all benefit from a cloud private repo. Easy to setup, no admin, full dvcs...

The “distributed for the enterprise”

This is the group where we really focus with our product. The challenge is to get the best of the DVCS world and put it together with the needs of the teams developing commercial and corporate software, which don't always match the ones in the pure DVCS world.

dvcs-powered multi-site If your team is an enterprise one you can benefit from true multi-site (beyond old-school mastership based) using DVCS and getting rid from slow and cumbersome proxies. Developers at each site can still checkin to a local server (depends on the DVCS) and then push/pull between sites. Some developers can work distributed if needed, gradually getting adapted to the DVCS paradigm. Tip: oftentimes enterprise teams think DVCS “forces” them to have a repository on each machine, to loose control, to change the way in which they develop software, but that’s not the case.

The "wannabes"

Here comes the fun part. These are the folks who *believe* they're already fully distributed and cool and all that... but they don't realize reality is slightly different :D

The “long distance” centralized The centralized + VPN The “old-school” multisite You’re centralized and you know it… The only advantage you’ve over the “locally centralized” is that everything is *slower* for you… ouch! Having a poor guy slowed down over a VPN doesn’t turn your team into “distributed fashion” either… ouch! Ouch! You’re “almost there” but with 20 years old technology... Setting mastership, deciding which server is able to touch a branch, taking hours to set everything up… it was fine in mid 90's… Almost there weren’t even cell phones back them :P

The "proxyheads" The “proxyheads” live a wonderful illusion: they think they’re distributed (slow, painful at times, but distributed somehow)… They benefit from a local cache server (proxy) which speeds things up at their site... Then if the network goes down (or slows down) they get back to the crude reality: they’re centralized, they were just living a dream that turned out to be a nightmare :P

The outsiders...

They don't embrace distributed development because they still don't need it or maybe because they even care!

The lonesome cowboy The lonesome cowboy... dvcs style The locally centralized It just you and your version control… you’re not distributed, you’re alone ... Ok, now you have your own repo, but you’re still alone :P You just checkin to your local server at the office… This is not distributed, it can still solve all your problems but this is not distributed As the song goes: to be distributed you need a repo (somebody) to push (love)... The “why you did this to me, guys?” You used to live so well just checking in to your version control and now some cool kids decided to bring this stuff and now you’re “confused” at best... :-D

Learn more in our webinar

We're hosting a webinar on Wednesday July 10th and we will be covering all these topics and more, so please do not forget to join! :-)