blogroll tags

Some thoughts on proprietary software

Just now I read Bradley Kuhn's recent blog post entitled Proprietary Software Licensing Produces No New Value In Society. The argument made is, in essence, that by receiving money for a proprietary license, a developer is paid without doing any work. This argument is, in its simplicity, quite pre-industrial in nature and fundamentally flawed. Let me explain:

Bradley, in your post, you compared software development to constructing houses. The problem with this is that houses aren't copied - they're singletons. We need a better analogy.

Think suits

Let's say you want to buy a new suit. You have a couple of fundamentally different options: you can either contact a tailor, and pay them to make one. This is a very simple model: the tailor works on a suit, knowing that they'll be paid. In the end, you pay them for the actual work involved. It makes a lot of sense. This is akin to custom software development, where one is paid by the hour.

However, there is a cheaper alternative: go to a store and buy a ready-to-wear, off-the-shelf product. It's probably good enough, and you'll pay a lot less. You're actually getting value for money, I'm sure you'll agree that it's perfectly reasonable to pay for this. However, the way the money flows is a lot less direct and obvious:

At the beginning, someone designed the suit you're buying, without being paid (or being paid by a company that isn't getting paid yet). Someone set up a production line, without being paid directly, on the mere speculation that someone might buy the suit. And now, you, the customer, are (in addition to the manufacturing and distribution costs, which don't exist in software development) retroactively paying the designer for the work they might have done years ago.

Instead of clothing, I could have used any number of other examples, such as any kind of engineered hardware, or even books. However, nobody buys custom-tailored books.

With software, in addition to financing speculative work done in the past without direct remuneration, you're usually paying for support, for bug-fixes, and for future upgrades: You are, actually, helping to finance continued work. Here, I'm mostly thinking of small software development shops, not so much big corporations like Oracle or Microsoft. For more of an insider's perspective (I myself am a student and have experience only with custom (web) software development and free software projects), I can recommend a nice article by Virgil Dupras of Hardcoded Software, recently linked on the python-dev list.

There is an ongoing micro-discussion on identi.ca that might interest you.

As a small clarification: I support free software, but I think that a strict interpretation of freedoms 2 and 3 can have its problems in a world governed by markets and money.

Auto-poweroff that server in your cellar

Our cellar houses an old grey box that acts as a home server for the family. It's quite useful in a number of ways, as a file server, web server, database server, and so on. It also, traditionally, had a habit of wasting power—it's so much nicer to just have the machine running when you use it. But, with the wonders of Wake on LAN, even the “I'm too lazy to run into the cellar” argument has lost any validity it might have had.

So much for turning the box on, how about turning it off? Figuring out when nobody is using the machine and then remembering to turn it off as well is hardly a task for a mere mortal. So I wrote a script that does it for me. is_anyone_here.py checks whether anyone is logged in, and looks for any evidence of recent usage. It was written on/for a Debian GNU/Linux (lenny) system with vsftpd and samba, and may require some modifications to work properly in your environment.

Have a look at the whole script after the break.

Read more...

Bringing synergy to the table

Once again, my desk is rather clean (a state that doesn't tend to last for long, let's see how long it holds this time), and I have decided to reintroduce a multi-head setup at my workstation. I've done this twice, and always enjoyed the space, and now I've also seen what it's like to have only a 20in wide flat screen sitting in front of you. In addition to that, I made sure there was a place for my laptop, as the recent acquisition of a PCMCIA network card made it desktop-compatible once again.

my desktop

To spice things up a bit, and, I'll be honest, to spare myself the tedious labour of stretching toward my laptop whenever I want to use it, I've started using one quite magnificent piece of software called Synergy. What Synergy does is, quite simply, allow me to control my laptop with my desktop's keyboard and mouse (over the network). This feels just like having multiple X11 displays: I just move my mouse pointer off the left edge of my big screen and focus is on my laptop. This allows me, for instance, to have an IRC client running on the wee laptop screen without really being distracting :-)

By the way, the video deliberately placed on the right-hand screen in the photograph is one of Julien Doré's extremely arty «Les Limites»-clips. Grep Youtube for it if you will.

Where's that web SVG support ?

Scalable Vector Graphics (SVG) are a promising technology. We've all known for years that vector graphics are, scalable as they tend to be, a great thing and often more useful than raster-based image formats. SVG in particular is nice because it's

Web browsers like to boast about their SVG support, it being a hip technology pushed as a web standard by the W3C, and the support isn't bad. Recent versions of Gecko (Firefox etc), Opera, KHTML and WebKit have all implemented a working subset of SVG and are able to display simple images correctly. Some browsers (at least Firefox and Opera) have decent support for XSL-T style sheets, allowing you to display an XML data sheet graphically in a browser by linking a suitable style sheet at the top — I never expected this, but I was pleasantly surprised when I discovered that last year. Also interesting is the support of ECMAScript within SVG, making it possible to play tetris in a vanilla IceWeasel.

What was this stuff called again?

We're talking about scalable vector graphics within a WWW context. The fact that these things are scalable could be used to our advantage, n'est-ce pas ? Let's say you have a website styled with only ems for measuring distance, no pixels or other absolute stuff. Being nice and accessible, having the whole website scale when you hit Ctrl++ or Ctrl+-. Something like <img src="foo.svgz" alt="An illustration of bar" style="width:20em"/> should be just what you need. So, which browser supports that ? Bingo, not a single one !

There is a standard, portable way to include SVG in websites: you use the <object> tag, like so: <object type="image/svg+xml" data="foo.svgz" ...>. This works in pretty much all modern browsers (if you don't count IE7, but why would anyone call that bastard “modern” ?), but it doesn't do what I want it to do: it doesn't scale the graphic. At all. It stubbornly uses the size in the SVG file. If you're lucky, zooming with change the font size in the image, but only the font. What's the point of that, I ask you ? Why bother with scalable vector graphics support if you can't scale them ? Maybe we should call them scriptable vector graphics when using them on the web...