Working together and sharing code with TLA
TLA as your Version Control System
Download the whole article as PDF
- 2005-10-19
- Server side | Intermediate
-
Write a full post in response to this!
If you ever worked on a free software project or if you have ever worked as a developer, you probably know that managing source code, patches, and software release cycles is not the easiest task to perform. Things get even worse if lots of people are working on the same project: more code to manage, more people to coordinate, more patches to integrate and mainstream. Even if you don’t write software or have never worked on such projects, I’m sure that as an addicted computer user sometimes you felt like “hey, why didn’t I make a backup of that document”, or “hell… I liked it better before” or “wow… why was that change introduced? I can’t remember it…”. In this article, I won’t talk about the importance of backups, which should already be clear in every reader’s mind, but I will introduce a new and very powerful system useful for managing source trees, tracking down changes, and allowing many people or groups to work together or independently on the same projects: TLA, often referred as GNU Arch, a new generation Version Control System (VCS).
Version Control Systems and your happiness
If you don’t know about VCS’s or SCM’s (Software Configuration Managers), just close your eyes (maybe at the end of the paragraph) and start imaging a big software project: lots of developers, lots of source files, roadmaps to inspect closely, bugs to find and fix, patches to be released while new features are being introduced, developed and tested. And yes, all these things being done by different people, for different reasons as time goes on.
As soon as a project starts to grow and spread among your customers or users, it becomes very important to have the ability to track:
- When and why a particular change was introduced?
- Which version of the software each customer/user has installed?
- Which changes were introduced in each version?
- Who it was that actually introduced a given change (often, a given bug)?
- Where a version of the software, which is still in use and which needs a minor change, can be found?
This is where Version Control Systems come to rescue. The purpose of a VCS is to prevent a given project, whether it be a software project or anything else that can be saved as a tree of files on your hard disk, from becoming a nightmare. Once in use, it will take care of:
- Remembering which files a project or a particular version of your project is made of
- Remembering changes that made to any file, allowing you to “undo” those changes and to know who introduced them and why
- Conflicts – preventing different people introducing “incompatible” changes to the same files without knowing
- Introducing automatisms into your software release cycles, by providing “hooks”
- Allowing you to continuously develop two or more versions of a project (often called branches), easing the task of exchanging and sharing code among them
- Easing the task of integrating changes (patches) provided by third parties
Generally speaking, a VCS could be considered some sort of oracle which knows everything about each and every file of your project, which you can ask questions or delegate tasks to (like, “please, apply this patch to the whole project… or please, show me that file as it was 20 days ago”). Once you start using VCS’s you will become addicted, and will start using them for everything, even for simple documents or articles (like the article you are reading, and no, I’m not one of the most addicted).
A VCS could be considered some sort of oracle which knows everything about each and every file of your project
Version Control Systems and the Linux Kernel
Almost every project above a certain size is managed using a Version Control System (often called a Software Configuration Manager, or SCM, even if the two terms have slightly different meanings). One such project, is the Linux Kernel.
As many of you probably know, the sources of the Linux Kernel are managed using a proprietary and closed source product, BitKeeper.
Although this product has proven its reliability and usefulness over the course of several years, many have pointed out that its license, usage conditions and the fact it is closed source makes it incompatible with the development model behind Linux and the philosophy behind free software. These people suggest that the Linux Kernel development project should switch to using a Version Control System completely based on free software, and not rely on the free (as in free beer) availability of a closed source proprietary product.
This issue has been discussed in many occasions (flame wars?) on different mailing lists in the past. Linus Torvalds has explained on the Linux Kernel Mailing List in 2002:
“Would I prefer to use a tool that didn’t have any restrictions on it for kernel maintenance? Yes. But since no such tool exists, and since I’m personally not very interested in writing one, and since I don’t have any hangups about using the right tool for the job, I use BitKeeper… ”
His position has probably given an additional burst to the development of new, more powerful, and free (as in free speech) VCS’s, although the Linux Kernel sources are still (at time of writing) managed using BitKeeper.
On April 6, 2005, just a couple weeks ago, Linus Torvalds finally announced that due to a conflict over BitKeeper usage, the kernel team was looking for alternatives.
At the time this article was written, no choice was yet made upon which SCM to use, but candidates discussed on the mailing list were mainly monotone and bazaar-ng, based on the GNU Arch system.
TLA as your Version Control System
By now, you should be wondering why I felt such a strong need to talk about TLA in this article (no, the “Free Software Magazine” editor didn’t force me, and no, the upstream authors didn’t pay me), when so many VCS’s are available on the internet.
First of all, TLA is one of the few free (as in free speech) VCS’s available that comes with a decentralized development model in mind: it supports multiple archives, possibly managed by different people, created for the same project. It also provides support for archives to import/export patches and pieces of code from each other, without loosing track of who made them and where they came from.
Second, TLA is very powerful in what it does, still being extremely simple, both in its usage and in the way it works. For example:
- An archive is a simple hierarchy of directories, each one containing a .tar.gz with either the sources of the project or some sort of “diff” file and a couple of text files used internally by TLA (usually, the log entry and the checksums of the files). Other VCS’s use Berkeley DB databases, SQL backends, proprietary database formats, etc.
- It doesn’t need a dedicated server. TLA can store, access and write archives using standard protocols like SFTP, FTP or HTTP (using WebDAV for write support).
- TLA supports symlinks, renaming both directories and files, keeps track of privileges and file system permissions
- It supports GPG signed archives and operations, and more.
Choosing the right VCS is a matter of looking at the development model being used. Obviously, TLA doesn’t fit well with every development model. While there are limits that only TLA is able to overcome and models that only TLA fits, there are other VCS’s able to overcome some of TLA limits and that fit better with other development models. Be careful before taking any decision in any direction.
Choosing the right VCS is a matter of looking at the development model being used
Starting up with TLA
Without going into the details of the various commands, details you can find in any of the many TLA tutorials, let’s see what you need to do and how things work with TLA.
The first time you install TLA, you will need:
- To introduce yourself to TLA, by stating your name, email address, and the address that will be used by TLA to generate the changelogs
- To create your own archive or repository, a place where TLA will store all of your projects, or trees, and all of its own data
- To import one of your projects into TLA, and start working on it
Write a full post in response to this!
Similar articles
Do you like this post?
Vote for it!
Copyright information
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is available at http://www.gnu.org/copyleft/fdl.html.
Biography
Carlo Contavalli: Carlo Contavalli works as a full time developer for Masobit Corp. He also is an addicted free software activist. He has contributed to projects like PigeonAir, mod-xslt, Debian GNU, and many others, by writing code, submitting patches and writing documentation. He has also organized or taken part in various free software related events.
- Login or register to post comments
- 3822 reads
- Printer friendly version (unavailable!)




Best voted contents
-
Google App Engine: Is it evil?
Terry Hancock, 2008-04-24 -
The Bizarre Cathedral - 3
Ryan Cartwright, 2008-05-05 -
Free Software Magazine Awards 2008
Tony Mobily, 2008-04-22 -
The Bizarre Cathedral - 2
Ryan Cartwright, 2008-04-27
Similar entries
Buzz authors
All news
From the FSM staff...
- The Top 10 Everything (Dave). The good, the bad and the ugly.
- Free Software news (Dave & Bridget). A site about short stories and writing.
- Book Reviews: Illiterarty (Bridget). Book reviews, blogs, and short stories.
Hot topics - last 60 days
-
Installing an all-in-one printer device in Debian
Ryan Cartwright, 2008-05-05 -
What is the free software community?
Tony Mobily, 2008-03-29 -
Things you miss with GNU/Linux
Ryan Cartwright, 2008-05-01 -
How do you replace Microsoft Outlook? Groupware applications
Ryan Cartwright, 2008-03-20 -
Beyond Synaptic - using apt for better package management
Ryan Cartwright, 2008-04-03
Hot topics - last 21 days
-
Installing an all-in-one printer device in Debian
Ryan Cartwright, 2008-05-05 -
Things you miss with GNU/Linux
Ryan Cartwright, 2008-05-01 -
Digital Rights Management (DRM): is it in its death throes?
Gary Richmond, 2008-05-07 -
Open letter to standards professionals, developers, and activists
Pieter Hintjens, 2008-05-13
Dedicated server
Comments from the old system
Submitted by admin on Thu, 2006-03-30 08:44.
Vote!From: David Allouche
Url: http://ddaa.net/
Date: 2005-10-08
Subject: It's dead, Jim.
I only had a quick look at the introduction and conclusion of the article, and I did not see this very important datum mentioned:
TLA is end-of-life software. Its community has largely moved to Bazaar, and its developpers have scattered into the Bazaar2 and Mercurial communities. Tom Lord, GNU Arch's main author and maintainer has resigned and nobody has stepped up to take over maintenance of the software.
Though pioneering, the GNU Arch 1 model has some important flaws (most notably, a lack of distinction between naming and identity of revisions). Tom Lord started Arch 2, named revc. Just after the initial release, he rejected the first patch submission and resigned as a GNU maintainer.
In case that was drowned in all those words, I'll make it clear: GNU Arch is currently unmaintained, and will likely never see a new release.
Switching to Arch now, is very much a BAD idea. If you are interested in decentralised version control systems, I recommend you consider one of the newer general-purpose systems: Bazaar2 (bzr) or Mercurial (hg).
From: Gustavo Cordova A.
Url: http://rangerelf.is-a-geek.org/
Date: 2005-10-21
Subject: Using TLA, then Hg.
I cut my (scm) teeth on TLA, and can attest that it's an excellent piece of software, but like it's been said, TLA is at it's end-of-life right now; if you wish to stay on the GNU Arch bandwagon you can use Bazaar, which is compatible with TLA but with a different command structure, and is still under development mainly under the auspices of Ubuntu.
Another alternative, which I took, is Mercurial (Hg), which is a distributed scm tool much like TLA, but with a very important distintion: it's written in Python, and runs equally well under Linux and under Windows; so, I can remotely update my projects vÃÂa http: easily and automatically, with the same tool everywhere.
Hg is simpler to use than TLA, it's very quick about it's work, and you don't have to mess around registering archives, registering revision libraries, mirrors, and also it uses up less space than TLA, so it was a win-win situation for me; you might have other requirements, but it doesn't cost anything but a few hours to try it out.
A good scm tool is indispensable these days, for anything larger than a trivial 10-line shell script.
Good luck :-)
-gca
From: Dominique Orban
Url:
Date: 2005-11-29
Subject: It's not dead
As of October 31st, a new maintainer stepped up for Arch. See http://savannah.gnu.org/projects/gnu-arch/ for more info.