Archive for November, 2004

Mars of the Future?

Sunday, November 28th, 2004

Two recent news articles about Mars and space travel have caught my attention.

Nature is reporting that microbiologist Charles Cockell and astrobiologist Gerda Horneck want to turn seven areas on Mars to be conserved in their almost touched glory. I have to agree with them: on Mars, rust has never looked so good. I just wonder whats going to happen when we finally start terraforming our neighboring planet.

One of the ideas that I found while researching science stuff for Shadow Conflict (yeah, my game that never got anywhere, but isn’t dead yet), I was looking for a useful, low environmental damage, and compact energy source. Helium 3 came up. I had originally planned on something like Gundam’s Jupiter Energy Fleet, but I think mining it from the moon would work as well. Now all we need is giant mecha powered minature Helium 3 reactors.

Darcs, a New Way of Source Management

Saturday, November 27th, 2004

Darcs is a decentralized source control manager (SCM) that is similar to GNU Arch, but without the complex command line syntax.

Simply, Darcs is the best SCM I’ve ever seen. I am a fan of decentralized SCMs (Subversion and CVS being examples of popular centralized SCMs), and when Arch was originally released I was quite excited. Decentralization allows developers on a project to work asynchronously, and allows developers to push and pull code changes around without anyone needing access to a central repository; you do not need to use the clunky diff/patch. Decentralization also allow changes to survive the death of any single user or repository. As long as someone else has them, chances are you can recover lost work with at least some useful meta data intact.

Darcs uses a concept called atomic commits. Subversion and Archs do atomic commits, but CVS does not; on CVS each file has its own revision history, which makes it very hard to watch fast and varied development. Darcs calls atomic commits: change sets.

Darcs is very simple to use: want to make a new code tree? mkdir ProjectName; cd ProjectName; darcs init and thats it. You add files using darcs add myfile, you make a new change set using darcs record -am "Description of change.", you display the ChangeLog using darcs changes.

You can grab changes from servers running darcs, web servers, or through email. Just use the darcs get command to get the full source tree, and then use the darcs pull command to grab new changes. To commit changes to a remote repository (such as one on disk or a server that runs darcs or through email) use the darcs push command. To use a web sever who doesn’t run darcs, use ftp or ssh/scp to update the copy on the web server.

Now, besides being simple to use, it also tracks context as a part of the meta data. In other words, it tracks the file itself, not the name or the directory it is located in. For example, lets say I have a complex program with hundreds of source files, and I decide to move all similar files into directories to group them together, and I additionally rename them all in the process. My fellow developer has thousands of lines of changes, but he is using the original file layout. He can push his changes into my repository, and everything is merged and preserved perfectly.

This goes well with the next feature I want to mention (though I implied of it’s existence above): being able to create new change sets without needing to push a change set to anyone else first. Each working copy is also a repository, so with the darcs record command I can create thousands of revisions, and my example fellow developer can grab all these revisions and merge them with his repository, and have all the meta data of my changes fully intact (ie, his repository is now thousands of revisions bigger instead of just one revision bigger).

Both of these features together means development is done by multiple developers at once without conflict, and each repository is its own fork. Not only can individual developers share code, groups of developers can push and pull tons of changes around without any other developer needing the changes; and, common in the CVS world, you no longer need to care about preresequite patches as they are included in the change set.

Example: My project now has dozens of developers, and one group wishes to work on Popular Feature A, and another group wants to work on Popular Feature B. Both groups can finish their features, and push A and B to each other or to me, and I can merge A and B even though they were independently developed and may have even edited the same files. (Note: Darcs has very fine grained change tracking. It does it per line instead of per chunk like CVS and other diff/patch-alikes use)

The above example is called parallel development, something that is very difficult with CVS or Subversion, and mildly annoying with Arch. As long as no one edits the same line, conflicts don’t happen.

Now, you’re probably asking, without a central repository, what is the main branch? The main branch, or trunk, is simply a repository hosted on the website or the chosen maintainer (such as the project lead), and only contains changes that are deemed safe to use and is a candidate for stable code release. This repository is simply a place for developers to start hacking on the most recent code, and it also serves as a group of changes that all developers should be using. The main trunk should only be altered by the chosen maintainer; or at the very least, people who can be trusted with the responsibility of not introducing lots of bugs or bad code.

With all these great features, it makes you wonder why anyone would CVS or Subversion: CVS has 15 years of inertia behind it; and Subversion, due to it’s CVS-like behavior, is just along for the ride. As for poor Arch, it has a much smaller user base than CVS or Subversion, and is loosing the majority of it’s user base to the much easier to use Darcs.

Unfortunately, not everything is perfect. Currently Darcs has issues with very large repositories, and will use a lot of memory and CPU time trying to process them. This issue is top priority on the TODO list.

Mozilla Firefox winning against Internet Explorer

Friday, November 26th, 2004

According to a recent study by OneStat.com, our favorite -zilla named red atomic monster has had a 5% gain in the browser market since May, due to the 1.0 release of Mozilla Firefox. However, this in itself is business as usual for the Mozilla Foundation, since the browser wars have always been about who produced the better product, not who had the most users.

However, as interesting as that sounds, thats not the greatest part. Indeed, the greatest part is that Microsoft apparently is also using Firefox for internal development of their new search engine; this screenshot was provided by Microsoft to the Associated Press. I wonder if it is time to start taking gecko-based Internet Explorer 7 rumours seriously.

Template Stabilization

Friday, November 26th, 2004

Well, I’ve cleaned up the template a lot, and I think I like the layout now. It fits my usual minimalistic style I have of web design. I’ve also added an unintrusive ad ‘tower’ (as Google AdSense calls them) at the bottom of the right column. Remember, click on those ads to help fund FLOSS.

FSF Europe is now a WIPO Observer

Thursday, November 25th, 2004

Trying to avoid sounding cliche, the good guys are winning: Free Software Foundation Europe has become a WIPO Observer, in hopes to make information more free. If information is more free, then software becomes less proprietary.