Archive for June, 2009

h1

Basic Branching

June 23, 2009

This article lays the foundation for a series on branching and the development management techniques it enables.

Versions and Delta

Versions and Delta

A simple linear development progresses by building one version on another. So, version one is updated to produce version two, version two is changed to make version three, and so on. This form of version progression is well understood whether the thing being controlled is a document, source file, or an entire system.

The diagram on the right shows a simple linear version line. Versions one and two are separated by the change (or delta) ‘a’. This can be read as version ‘1′ with changes ‘a’ becomes version ‘2′.

If all development work could be relied upon to be this linear then this would be a very short series. Fortunately for us, this simple linear model cannot be relied upon for anything but the simplest development work.

Bring on the branch

Suppose we have released version two of our product to formal user testing and have begun development of version three of the product. Formal user testing will last for at least six weeks and after that we expect that the product will be in use for some time before version three is ready.

During testing we expect to find some defects and the users will undoubtedly request some ‘fine tuning’ of version two.

This situation cannot be accommodated with the simple linear development process described above. What we need is some means to manage the corrections to version two while version three development is carried out.  Of course, any changes we make in version two must eventually be included in version three (otherwise defects corrected in version two will suddenly reappear when we release version three). However, we do not want changes made when developing version three to be included in version two maintenance (otherwise we would find partially implemented version three changes suddenly causing problems in the user test version one systems).

Basic Branch

Basic Branch

The diagram above shows a simple branch. Our main development (the work developing version three of our product) continues, while maintenance work is branched off from version two of the product (shown above as version ‘a1′).

Any changes made between version ‘2′ and ‘3′ in the main line development have no effect on the branch.

The branch is used to make changes such as defect resolution during the testing of version two. Any changes on the branch (between version ‘a1′ and ‘a2′) must be integrated back into the main line development before version ‘3′ is released for testing. This ensures that any defects fixed during version two testing are also fixed in version three.

Branching really is that simple. However (there’s always a ‘however’ in there somewhere), while this is schematically correct and simple, in real life things can get more complicated. I leave dealing with these complications for another day.

As always, any questions can be addressed to me directly or through the comments on this post.

h1

Subversion Repository Quick Start

June 23, 2009

A very quick introduction to setting up a Subversion repository and protecting it with Subversion’s own server and built in authentication system.

You’ll want to watch this full screen and in HD to get the best view.

This video is part of the upcoming Subversion Guru training course.

h1

Why Wikis Won’t Work

June 23, 2009
MediaWiki
Image via Wikipedia

Received wisdom among many development team with whom I have worked over the years is that a development wiki is a good idea. Experience suggests that this is not a universal truth and on some projects the wiki may actually be harmful.

The main benefit, and problem, with Wikis is that they are maintained by technicians who are expert in their field but not necessarily good at presenting written information. Most wikis are opened when the project is young and these technical people find they have time on their hands before the heavy lifting on the project starts. Creating a wiki seems like a useful way to employ their time until the project proper kicks off. As the project progresses the wiki is maintained less and less as these technicians become increasingly involved in the project and have less time to maintain the content of the wiki.

Failing to maintain a wiki is worse than not having one in the first place. If the information cannot be relied upon then this devalues the wiki and people will tend to be distrustful of anything on it. This in turn means people are increasingly unwilling to update the wiki because no one wants to spend time maintaining something that is not used.

When wikis work, they work well. Providing a useful communication channel for project information.

Wikis work well when:

  • Contributors are all, at least, competent at communicating through writing. (We don’t need Tolstoy, just clear concise writing.)
  • The project experts have time to both create and maintain the wiki content.
  • Someone is assigned to ensure that key project information on the wiki is always available and accurate.

Wikis won’t work when:

  • They are nothing more than a collection of notes.
  • They are not maintained.
  • They are not clear and concise.

Should you use a wiki on your next project. Definitely, providing you realise that it takes some effort to maintain it as a useful tool.

Reblog this post [with Zemanta]
h1

Installing Subversion on Windows

June 22, 2009

Installing Subversion on Windows could not be simpler. The CollabNet installer is demonstrated in this short presentation.

Reblog this post [with Zemanta]
h1

Permanently removing paths from a Subversion repository

June 20, 2009

This post is an extended discussion covering removal of paths from a Subversion repository, covered more succinctly in the Subversion FAQ.

Before you start removing paths from your repository consider this: Subversion was not designed to have paths removed. That is why you cannot remove paths using the standard client interface, in fact you need to be an administrator and have direct access to the repository’s physical file system. Removing paths from a repository is a last resort. (There is a suggestion for an svn obliterate feature to provide path removal through the standard client, for which a functional specification has been placed in the Subversion development notes, but until this is implemented the following is the only mechanism available for permanently removing paths from a repository.)

Why might you want to permanently remove a path from your repository? Legitimate reasons include:

  • Archive old material from a very large repository to save space.
  • Remove sensitive information from a repository (perhaps added accidentally)

Strictly speaking we do not actually remove paths from a repository, we build a completely new repository. To do this we use three commands; svnadmin dump, svndumpfilter, svnadmin load. Read the rest of this entry ?

h1

Making the CM Business Case: Part 3 – Audiences and data

June 19, 2009

In the last part we looked at the basic outline of a fairly generic business case. I also stressed the importance of preparing your audience, especially for something that will be new to them – something like configuration management. I also stressed the importance of targeting your executive summary at the decision maker (the person who will make the final decision as to whether your project is done or not).

In this part I will look at the most important audience, the people on whom the decision maker relies for advice. Read the rest of this entry ?

h1

My current activities

June 17, 2009

In response to an enquiry on the CM Crossroads’ General forum.

The book, let me see. The, now four volumes, on IT system lifecycle management has been on and off for a few years. Lots of research. Lots or writing. Very little product. I can’t realistically see that being done in the next two year.

The last four months I’ve spend developing an on-line course for Subversion (and an accompanying book and DVD). That’s all on schedule for a November release. (Still got a few more chapters to write though.) Online course and DVD are on track for November(ish) release. My reasoning being that there is probably a wider audience for this than the ITSLM books. If this pays off (that is, makes any money) I may have time to work on the main books without needing contract work, which is just distracting :)

I plan to do a course, book and DVD on version control next, because this can reuse some of the stuff from the Subversion course and it should be shorter :) .  That’s assuming the Subversion stuff works out :)

h1

Essential Release Planning

June 17, 2009

Release planning is, in essence, very simple. I am speaking here of planning what changes are to be made for each software release. The planning of a release into an operational environment is a different type of release planning entirely!

Here is a simple way to think about releases and release planning.

Read the rest of this entry ?

h1

Release identity and scheduling

June 17, 2009

This entry was prompted by this post on the CMCrossroads General CM forum.

I see nothing fundamentally wrong with Victor’s definition of release management.

Software Release Management Process is the process through which proper versioned software is made available (Released) to the Client

It is unclear from this definition precisely what scope Victor anticipates release management will have, but I will assume the scope to include the planning, scheduling and control of software builds (and consequent baselines) through the various development and test environments, and ultimately preparation for delivery to the client. I shall exclude the release into an operational environment because this is a quite different type of release management to that being addressed in the thread.

I see no conflict between Victor’s definition of release management and the possibility of multiple releases with potentially complex relationships.

I disagree absolutely with Victor’s contention that “If we go forward as above, we are breaking the fundamental principals of configuration management.” This is simply wrong. There is absolutely nothing in the “fundamental principals of configuration management” that demands release identities proceed in an contiguous fashion. At best, one might make the case that in the best of all possible world, it is desirable that release identities progress in a contiguous sequential fashion. Hopefully this article will make my reasoning clear.

Read the rest of this entry ?

h1

Making the CM Business Case: Part 2 – The Simple Stuff

June 13, 2009

Okay, where was I? Last time I pointed out that you are not going to convince anyone to introduce configuration management if you just present a business case. There’s much more to it than that. This time I’m going to discuss what goes into a business case.

Hang on! Hold the phone! Didn’t I just say that the business case was not going to swing the deal? Sure I did, but I also said you have to have a good business case because sooner or later you’re going to need it. Besides, if you can’t make a business case why are you so convinced CM is a good idea?

Read the rest of this entry ?