Configuration Managment, A long journey.

30 Jan 2017

The Evolution

The first group project I ever worked on was between me and a few of my friends. The code was mostly done in a similar space and was traded around using emails and jump drives. The project inevitably died but before it did it had its fair share of troubles.

At the time the group of us had only passingly heard of github. It was that website that everyone put their open source projects on. Not us, of course, but everyone else. The people we liked to watch and see what they coded. At the time we had very little understanding of it. Looking back on it now, a Source Code Control System would have made our lives infinitely easier. We, however, were young and naive and in being so lost most of our code to time and poor practice.

What is configuration Managment

Configuration Management is the process and act of recording changes or information that pertains to the software or hardware being developed. In software engineering it is usually the way files are shared between a team and how they are documented during this. In the case of GitHub, little notes and titles are enabled to standardize the way these changes are documented.

Strong configuration management plays with the same parts of the brain that comments work on. The small part of the brain that believes that the documentation isn’t necessary until someone has inevitably had a problem with it. Its a coming of age story for programmers. The day they learn that the code they write isn’t purely for them, or worse, for them in the future.

Why is it important?

Configuration Managment is important for almost the exact reason people often believe they are not. Configuration Managment allows people to tell what is changed, what files exist, how they are organized, and how they can be modified. A beginner intrinsically believes that they can take care of this. If my experience holds any merit, even small teams believe that they can mangage things without these notes but it quickly becomes overwhelming.

The human brain isn’t particularly adept at figuring out the smallest changes. Anyone who has spent time looking for a semicolon can tell you that there are obvious glaring flaws with the way we scan things. This compounds with the fact that users aren’t necessarily able to identify changes other people have made and the writing is on the wall.

Configuration Managment is a necessity.

How good is our solution?

For the average user i would consider GitHub the go to for Configuration Management. Its uniformity allows a format that most people will have to pick up in their lives. GitHub is based around Git, which I personally thought was a lightweight version of GitHub before learning the truth. Its simple enough. It allows users to make changes on nearly any machine, on or offline. These changes can be uploaded, noted, and changes are shown.

That being said the current methods for configuration managment just barely work (not in the same way that apple products “Just Work”). They seem like an artifact from older days, their functions seem primitive and unintuitive. From a “Human Computer Interactions” standpoint they don’t relate to anything physically and the UI’s people have built to manage them often seem lacking. GitHubs own desktop client requires the user to use the website to fork a project, even if it is their own. A major reform seems necessary.

Furthermore, from the outside Git isn’t very friendly seeming. I put off my own learning of it for a long time because I was afraid to fail at it. This all goes without even mentioning the troubles that can be caused by trying to merge a branch.

But all of those problems seem to be with humans.

Should the machine work by itself it would be perfect, but sadly that isn’t a solution. Bad comments, iffy commits, weird branching is all caused by people not knowing how to behave correctly.