Polifesto now has comments

You can now comment on a policy in Polifesto. Here's a policy with a couple of comments. This policy, 'Citizen's Income' is also the highest rated policy, with 300 points. One of the next things to do is a notification system where you can received email notifications for new versions and comments for a particular policy. As ever, let me know what you think...


Polifesto Using Creole

Polifesto used to use a subset of HTML5 to mark up policies. I thought that this might be a bit unforgiving for users because there'd be an error if the markup wasn't valid XML. Influenced by a blog post, I thought I'd give Creole a try. Let me know what you think.


BrowserId Better Than OpenId

I've been a long-time fan of OpenId, but I now think BrowserId is better. Here are the two main reasons why:
  • With BrowserId the user enters an email address, whereas with OpenId the user enters a URL. Most users already have an email address that they remember, and can type easily. With OpenId and its URLs, it's more complicated.
  • With OpenId, you had to work out whether you had an OpenId or not. If not then you had to go and obtain one at a separate web site. With Mozilla Persona (an implementation of BrowserId) any email address you have will work.
So I've put my money where my mouth is and replaced OpenId with Persona on Polifesto. Let me know what you think.


Git versus Mercurial

I know very little about the religious war of Git versus Mercurial, but ignorance has never stopped me from having a firm opinion.

I come down on the side of Git for these reasons:

Local Version Numbers

Mercurial has the idea of local version numbers as well as universal hashes. I don't like these extra local version numbers because it's an additional feature that muddies the waters without really contributing anything. Git uses hashes that are universal. You can specify versions locally in an easy way using the tilde notation.

Approach To History

Okay, local version numbers is just an annoyance. The big difference for me is that for Mercurial, history is literal, but for Git, history is a story. If you ask someone what they did yesterday evening, they'll say something like, "I watched Holby City", they don't say "I sat on the bean bag next to the sofa at 20:00 and put the TV on and changed the channel to BBC1 and then watched the screen for approximately 1 hour...". The first is the Git answer, where you summarize the salient points after they occur. The second is the Mercurial approach where you give a verbatim replay of the events as they occurred. So with Git you're encouraged to tidy up your history before you push to a public repository. With Mercurial you're encouraged to view history as immutable, and however you got to the point you're at, that's what you make public.

Indiscriminate Push

With Git you get to explicitly push individual branches to a remote repository. With Mercurial, the push command pushes all branches to the remote repository, which isn't necessarily what you want. Mercurial tries to get round this with bookmarks, but I feel that this is a hack, and that Git's branches are more elegant. With Mercurial, branches are part of the commit, but with Git, branches are references held outside the commit. The Git approach turns out to be the way to go.