Friday, May 28, 2010

Dropping Perforce

In the last year, I’ve been using Perforce extensively and my opinion about it matured and radically changed with respect to what I expressed in one of my last posts.
Essentially, there are no faults in Perforce I was not aware of or some other problem inherent with Perforce. I just found out I’m far more productive with other tools.
The first problem is typical of my setup and has nothing to do with Perforce: my home server connection is faulty. Sometimes there is no way to access the server from outside and sometimes the 1666 port is not reachable because of firewalls. Of course, it is not Perforce fault: in this situations it is often the case I could not reach 22 as well (that is the port I use mainly with both git and mercurial through ssh). However, I’ve been able to place the repositories on an external server (where I can’t just install the Perforce server) and I could always use github.
The main advantage with both Mercurial and Git is that if I have connection problems, I can just go on and work locally. Perforce simply sucks in this situation. By the way, when I’m travelling it is quite frequent I’m offline. Both git and mercurial allow me to work with no burden added.
Perforce uses a model different from other modern Source Control Management Systems (SCMSs) which somewhat resembles old locking SCMSs. Essentially, if you have to edit a file you have to mark it for editing. This can have several advantages, however, I never got used to it. Moreover, since I used it to manage .configuration files in my home directory as well, to change a single bloody line of code I had to:
  1. cd to the Perforce workspace directory
  2. mark the file for editing
  3. edit the file
  4. commit
Actually, I found this rather cumbersome. I do prefer git/mercurial that do not set permission of all (most[0]) files as not writable.
Moreover, with my desktop computer, my apple laptop, my netbook (dualboot win+lin) and a workstation I had to test some software I already used all the workspaces the free version of Perforce allows me to have. This is rather unfortunate, as I often use virtual machines as well. Of course paying the bloody perforce license to do this kind of things is just stupid.
In the meantime, I found that distributed SCMs had none of those problems. Backup is regularly performed by Time Machine, so that was not an issue either, as long as I keep a clone of each repository on my MacPro. Moreover, the remote server where I keep some projects is very well managed and thoroughly backed-up.
I like the branching/cloning strategy superior (according to my needs) than the integrate stuff Perforce uses. I suppose we can prove them equivalent, however, I like git/mercurial better. I also changed my view on rebase and other commit editing stuff. Sometimes, I find them useful. After all it is my repository: I’m free to screw it up. This does not mean I will or should.
So I stopped moving projects from Mercurial to Perfoce. On the other hand I’m using git to extract projects from Perforce (git-p4, in fact). Well, it works nice. I will keep my Perforce server only for historical purposes, as imported git-p4 project may lose some branching information.

[0] Actually you can manually set an option in order to override the thing

Sunday, May 23, 2010

Back in Black 2

Some things happened in the last two years. Two more Pycon Italia took place in Florence.
I completed a M.Sc. in Computer Science (in 2 years and 2 months, research dissertation included, which is something rare in my former). Two days after I graduated, I won a scholarship to attend a Ph.D. Course in Information Technology here in Parma, in the Dipartment of Computer Engineering.

This blog "re-edition" is kind of an experiment. Don't know if I have the time to write regularly here, nor if I like this platform. Essentially, I would have preferred a least web oriented platform (that is to say, writing posts offline). Blogspot should support this (I did import some of my old posts this way). Howerver, it seems that all of them can be imported. I don't really know why.

I also tried to write my own blog platform. Lack of motivation doomed this projects to failure. Moreover, I would need a rather costly high quality hosting which, by now, is an overkill as I can place massive amounts of data both on mobile me ( and on Dropbox.

I considered mobileme as a host, however, I would have limited choices on the platform (static HTML only). Rapidweaver/iWeb are not my cup of tea, either.

Thus, I chose an online blogging platform. As I already have lots of stuff with Google and I severly dislike Wordpress, I moved the whole thing here.