WANdisco Blog

MultiSite Enables Agility For the Distributed Enterprise

The Agile methodology has become a wildly popular approach for software development with close to 50% of development teams using at least some agile techniques based on different surveys. The responsibility of an agile team is to deliver value in the software they are creating and meet the criteria or objectives that determine success for the project and a common set of development “best practices” have arisen that are crossdisciplinary. Adopting these best practices can be especially challenging for collaborating agile teams that are distributed or have distributed members.

The Agile principles state that successive short development cycles, popularly referred to as rapid iterations, be used to develop software quickly in little bits (pun ;) ) at a time. Different methodologies have arisen from the Agile principles like Scrum, XP, TDD, Crystal and others which define activities and process for agile teams. The process gets into the specific details for each discipline but agile teams enjoy a great amount of freedom for self organization as well as self definition which as a result teams may borrow one aspect of another methodology to apply to their own agile approach. Popular examples of this are the XP User Story or and the Scrum Backlog.

The common principles mixed together with the common practice of borrowing the best aspects of each discipline has helped popularize a set of software development best practices. These are practices which are good for any software development team but the popularity and nature of agile software development has led these practices to be commonly associated with agile specifically. Here is a list of the more common agile best practices:

  • Rapid Iteration
  • Continuous Integration
  • Parallel Development
  • Frequent Commits
  • Automated Testing
  • Code Review
  • Refactoring

If you are an enterprise considering a large scale adoption of agile software development practices then there are a number of challenges that you may be facing. Scaling Scrum is well documented in Ken Schwabers book “The Enterprise and Scrum” and he has special sections dedicated to the problems of distributed teams, distributed members and the scarce skills problem (eg: one DBA shared by many teams). Ken handles the issues associated with the organization and daily routine for Agile Scrum adopters, but what about the technical challenges especially those associated with the best practices I listed? This is an area where the value added services offered by WANdisco enter the conversation.

Using Subversion Multisite and Apache Subversion will enable teams to fully adopt an Agile practice like Scrum on an enterprise scale, especially where distributed teams or members are concerned. Here is how.

  1. Subversion Multisite instantly synchronizes development changes between locations. This means that distributed teams always work against a local source code repository, without which frequent commits, continuous integration, code reviews and parallel development might not be possible at all or at best will be severely hindered if users are required to connect across the internet to access the source code repository (for read or write activities)
  2. Multisite also supports local clustering option, an enterprise that sets up two or three load balanced Subversion servers will better handle the increased traffic from frequent commits and especially from continuous integration where automated tests and builds are being performed continuously and using up a lot of server resources.
  3. Multisite leads to improved team communication, imagine a tester working in Los Angeles getting the latest build locally almost immediately after a task is committed in New York (again locally). When each site has access to a complete replicated copy of the source code repository many things are possible and the usual downtime related to downloading a new build off a remote server or uploading a set of new changes to a remote server can be entirely eliminated.

An enterprise that is considering or has already adopted agile practices will also want to adopt the software best practices. Given the nature of agile development and rapid iterations adopting these best practices are critical and with Subversion Multisite many of the technical challenges facing distributed teams can be easily solved. There are of course other benefits to Multisite such as built in disaster recovery, guaranteed uptime that will also interest any enterprise and the value offered to Agile teams will be indispensable especially as the Agile usage scales upwards.

Subversion Tip of the Week

The Undo Button!

In the world of software development, client requirements change and new features can introduce more bugs than they fix – sometimes, you just need an ‘undo’ button! Thankfully, Apache Subversion remembers every change made to its files and directories, so you can roll back to a revision before it all went wrong! There are several methods for reverting to a previous version:

1) svn revert {filename} - this command overrides any local changes made to the working copy, with the code in the repository.

To run this command in TortoiseSVN, select ‘Revert…’ from the TortoiseSVN menu.

You will then be able to specify which changes you wish to implement. In this example, we are re-adding the ‘Help file.’

2) svn merge -r {revision number} – this command performs a reverse merge by rolling back to a change that has already been committed to the repository, and then applying it to the local working copy.
3) Alternatively, it is possible to simply delete your working copy and then checkout a fresh working copy from the repository.

Intro to Subversion Access Control 4.1

Big plans are brewing at WANdisco for 2012, and one project that has just been completed, is Subversion Access Control 4.1.

Access Control 4.1 includes a revamped user interface. The new look makes it easier for users to navigate through the security features offered by Access Control and setup new rules and permissions for Subversion repositories and paths.

The ‘Group’ concept has been replaced with “Teams’ and a new feature has been added to allow the designation of “Team Leader” who is then granted some administrator privileges. Specifically, the Team Leader is able to setup user access rules to a pre-defined repository path (or paths).

We are calling this new feature Delegated Admin since it allows granting of some administrator privileges to users. The context of how this feature could be used might be best described in terms of business units for an enterprise corporation. Consider the following scenario.

A company has 100 Apache Subversion users split into 10 teams, each associated with a separate BU, each team has its own Subversion repository. In the past, Access Control admin can go in and setup repository security rules that applies to all 100 users and repositories. With delegated admin the Access Control administration can create 10 new Teams and assign a Team Leader to each one, specifying the Repository that team should have access to. From there, the Team Leader can log into the system, add/remove the users for the team, and setup multiple rules needed to properly manage those Subversion assets.

Effectively what delegated admin does is allow Team Leaders, people in charge of their respective Business Units, to define and configure their own team rules. Access Control supports the concept of nested-teams which is called Sub-Teams (see screenshot) and this would even allow you to further organize teams from larger sections into multiple sub-sections (eg: West Coast Branch –> Plugins Team; West Coast Branch –> Application Team) and designate a team leader at each level to manage users and rules.

The role of the Access Control administrator now is to simply define Team Leaders and the resources which they can direct access over. Once defined the Team Leader can only create rules that affect their resources meaning the West Coast Branch won’t be able to setup access rules for the East Coast Branch’s repositories and vice-versa.

The ability to delegate some administrator functionality to Team Leaders, and in the context of specific Subversion paths and repositories, is a powerful new feature that will empower enterprise organizations and save time and money. Team Leaders are able to set access restrictions based on the need and requirements of their given team or business unit and no longer have to rely on a single administrator to do that for them.

WANdisco Updates Subversion Access Control

We’re pleased to announce a substantial update to our complete authorization, audit and access control solution for Enterprise Subversion, Subversion Access Control.

Subversion Access Control 4.1 is an innovative security solution for Apache Subversion that provides full audit, authorization and access control capabilities that go well beyond what Subversion offers on its own. Some of the key benefits to employing Access Control include:

  • Delegated administration option that allows the root administrator to create teams and delegate administration authority to team leaders.
  • Automatic synchronization of Subversion Access Control with LDAP user and group configuration. Subversion Access Control automatically picks up LDAP user and group membership changes and assigns new users to the Subversion team that corresponds to their LDAP group.
  • Comprehensive audit capabilities that report every repository access attempt down to the file level, showing user, Subversion command, date and time and whether access was allowed or denied. Security administrators receive immediate alerts for any access violations.
  • Can be implemented standalone or in combination with Subversion MultiSite 4.1 for distributed development teams. With Subversion MultiSite, security policy changes made at one location are immediately replicated to every other to enforce consistency across all sites.

Subversion Access Control 4.1 is a substantial update for the product, not only adding a list of new functionality, but completely overhauling the underlying access model. The access control lists previously required to maintain complex security policies, have been replaced by an all-new, streamlined approach that applies access rules to hierarchical teams. For more information on what’s new and noteworthy in this update, see the Release Notes.

WANdisco will be hosting a free hour-long ‘Introducing Subversion Access Control 4.1’ webinar on April 12th. Early registration is recommended, as space is limited.

Extending Jenkins with uberSVN

Installing Jenkins is made easy with our free, open ALM platform for Apache Subversion, uberSVN. But when installed through uberSVN, your Jenkins installation contains only the bare minimum; at some point you will want to extend your uberSVN and Jenkins installation with additional plugins. Thankfully, this is made easy with uberSVN, as any number of new plugins can be added without ever leaving your installation.

Start by going to the ‘Jenkins’ tab, followed by the ‘Manage Jenkins’ option on the left side of the screen, and finally selecting the ‘Manage Plugins’ link.

From here, click on the ‘Available’ tab, which will bring up a list of all the plugins you can add to Jenkins.

Scroll down to see the list of available plugins. If you need some more information on a particular plugin, clicking on the name of the plugin will take you to a product page where you can browse all the relevant information about the plugin in question, including the changelog, maintainers, and the date of the most current release.

If you wish to install the plugin, go back to the ‘Available’ page and select the tickbox on the left. When you have finished selecting plugins to install, scroll to the bottom of the screen and hit the ‘Install’ button.

The plugin will now be downloaded. Note that Jenkins will need to be restarted for these changes to take effect.

Once you have restarted Jenkins, go to the ‘Installed’ tab in the ‘Manage Plugins’ screen. You will see that the plugin you have just downloaded has been added to the Installed list.

Jenkins is available for free through uberSVN. Visit http://www.ubersvn.com/ now to download uberSVN. A professional support option for Jenkins is also available.

Using uberAPPS? Have your say on uberAPPS at the official forum!

Apache Subversion 1.7.3 Released

The first Apache Subversion release of 2012 is now available! Subversion 1.7.3 builds on the long-awaited enhancements of the recent Subversion 1.7 release, by introducing even more improvements. Subversion 1.7.3 improves the SASL error messages, allows committing the result of some copy operations, and fixes a source of possible FSFS corruption.

More information on what’s new and noteworthy in this release, is available at the Changes file. The latest binaries can be downloaded for free from the WANdisco website. As ever, our 1.7.3 binaries undergo the same rigorous quality assurance process as our Enterprise Subversion products.

Congratulations to Apache Subversion’s community of developers, contributors and users, on another great release!

Subversion Tip of the Week

Moving a Subversion Repository

Need to move your Apache Subversion repository? In Subversion, the recommended cause of action is to collect all of the data contained within your repository into a single, portable dump file, and then load the data from the dump file into a new repository. To create the dump file, either run:

svnadmin dump

Or, specify a particular revision to dump, or a range of revisions:

svnadmin dump myrepos –revision

Once you have dumped the data from the original repository, you will need to load the data from the dump file into your new repository. To load the dump file, run the following command in the new location:

svnadmin load {REPOS_PATH}

All your data will now be available in the new repository!

It’s useful to keep in mind that dump files are typically larger than the original repository. This can cause the shell to timeout when loading a dump file into a new repository. If this occurs, you can change the bash shell timeout to load indefinitely, with the following command:

export TMOUT =0

Unlimited Paid Vacation? Yeah Right!

This week we announced that rather than offering employees a set number of paid vacation days we would offer an unlimited number of paid vacation days. To many this sounds counter-intuitive.

“Doesn’t that mean nobody will come to work?”

“Yes but you don’t really mean unlimited…”

Just some of the common questions / comments I got when I ruminated the idea among friends. But I really believe we are on to something.

OK so here’s the logic. If we really trust and value our employees then this shouldn’t be a problem. We are not running some sort of Dickensian sweatshop where everyone clocks in at nine and is playing solitaire to bide time until the clock strikes five. I was walking back to our UK office late into the evening last week. It was dark but I could see the building in the distance. I was immensely proud to see that of the 3 or 4 floors, only 1 floor was still illuminated. Yes it was ours. Just about everyone was still there. Not because we were paying them to be there, not because anyone was forcing them to be there. They were there out of choice. They are a team that works together to get the job done.

It’s also a wonderful self-regulating mechanism. I was talking with someone from our excellent PR agency the other day about hiring. They ask the question are they “P-L-U’s?” an acronym for “People Like Us”. Now, more than ever, hiring managers at WANdisco will ask this question because for this to work everyone must be a P-L-U.

This is not some sort of fad or publicity stunt. It’s real. Actions speak louder than words: we value actual productivity more than biding time at the office, we trust each other to do the right thing, we recognize that work is not actually at the center of everyone’s universe, we have unlimited paid vacation days!

WANdisco Launches All-New uberSVN Starter Packs

Last month, we announced an exciting new partnership with our friends at uTest, bringing their software testing services to uberSVN’s uberAPPS store, and extended our partnership with CloudBees, to offer professional support for Jenkins to uberAPPS users. We’re following this with even more exciting new additions to the uberAPPS store, including a new approach to uberSVN support.

At WANdisco, we always appreciate your feedback, and after being contacted by organizations looking for short-term professional support for uberSVN, we’ve created the all-new, uberSVN Starter Packs. These packs give you access to three hours of support, with the option of purchasing additional hours as required.

We’ve also added professional support for TortoiseSVN to the app store, giving uberSVN users easy access to mail and phone support, feature enhancements, online case tracking, and more, all with guaranteed response times. Stefan Küng, the TortoiseSVN project’s lead developer since 2003, heads our team of professionals dedicated to delivering the support, development and enhancement you need, to get the most out of TortoiseSVN.

Existing uberSVN users can visit uberAPPS from inside their installation, for all the latest info on purchasing both professional TortoiseSVN support and uberSVN Starter Packs. Not yet downloaded uberSVN? Check out some of the feedback we’ve been getting from users, about this award-winning, open ALM platform for Subversion.

uberSVN is free to download and free to use – visit http://www.ubersvn.com/ now to get started.

Using uberAPPS? Have your say on uberAPPS at the official forum!

WANdisco Announces Unlimited Vacation Policy

At WANdisco, we like to do things a little differently, so we’re announcing our all-new vacation policy, by announcing that there is no vacation policy! Effective immediately, all WANdisco employees will be able to take as much paid vacation as they need to stay the same productive, enthusiastic employees who made this company what it is today.

As a software company, we’re dedicated to keeping our range of world-beating, Subversion-based products on the cutting edge, and we feel our company culture should be as forwards-looking as our products.

We’re sure you’ll agree that the way we work has changed forever – the Internet has made it possible to work without even being in the office, and has opened up a 24-7, worldwide market. The traditional Monday-Friday, 9-5 working day is a thing of the past. In this rapidly-changing working culture, we’ve been fortunate to have some of the most dedicated staff in the business. It’s time to give something back.

We realize that it’s becoming increasingly difficult to find the time to recharge, but we all know that down-time is essential to remaining productive and happy (not to mention sane!) in the workplace. So, we’re excited to give WANdisco employees the freedom to take as much vacation as they need, when they need it. After all, no-one knows when you need a break, better than you!

This is just the latest step we’ve taken to ensure WANdisco’s staff actually enjoy coming to work (we never really understood why this was such a revolutionary idea in the first place!) And what better way to let off some steam inbetween producing our award-winning open ALM platform for Subversion, than with a heated, office darts competition, a few rounds of table tennis, or a trip down the office slide?

As you’ve probably already guessed, at WANdisco we work hard, but we always find the time to have fun, and that extends to nights out. We don’t believe in stuffy, company enforced fun – that stuff makes us cringe! But we do believe that employees who socialize, and have a laugh together, work better together. With this in mind, every quarter we all get together and nominate a Social Captain, whose solemn duty it is to organize fun nights out and day-trip adventures – and of course, they get to wear the captain’s hat for a few months.

All in all, we think WANdisco is a pretty special place to work. We are lucky to be in a position where we can trust our employees to judge for themselves how much vacation time they need to remain productive, and continue contributing to WANdisco’s success. We want to thank our employees, for being such an awesome team!