People Hacking Again
Today I was introduced to an area of Montreal that actually has streets with special bus lanes. This is actually funny for Montreal, which has great public transit (including a subway we call the Metro, as all good Franglish speakers will do) but such generally bad road systems - I personally suspect they are deliberately bad to discourage automobile traffic - that buses tend to move rather slowly.
These bus lanes are in the usual North American style, in which they paint little diamonds on the pavement and you're not supposed to drive your car there during peak hours. But there are two minor surprises involved. First, the lanes are the two center ones (one in each direction) instead of the outside ones. Second, and this is the fun part, in order to discourage people from driving their cars in them during peak hours, the bus lane on your side of the street is going the opposite direction from your car. That is, the left lane goes forwards, and the right lane goes backwards, if you see what I mean.
Aha. You see what I mean by "deliberately bad." It's obviously a great way to keep drivers out of the bus lanes - in that they're going to have a head-on collision with a bus if they drive there. But on the other hand, well... this scheme has actually been put out of service recently, "due to too many accidents."
There's a twist: the accidents were actually not cars having head-on collisions with buses. They were pedestrians getting run over by buses, because they would only look one way, run towards the median, and then get hit by a bus coming from the wrong direction.
Why am I telling you this story? Well, because it just struck me that there was a completely obvious reason that this scheme shouldn't have worked, and that problem didn't happen. Drivers just spend too much time staring in front of them to not notice an oncoming bus on the rare occasions where they're driving in the bus lane illegally. Instead, the scheme was doomed for a reason we didn't expect, just like a perfectly valid-sounding scheme could have been. So the moral is: don't judge a book by its cover? Theory vs. practice? Don't be afraid to try new things, because they'll fail anyway? I don't know, you tell me.
Supposed USB GPL Violations
In other news, hub mentioned someone accusing Silicon Labs of "blatantly" violating the GPL by writing a binary-only Linux USB driver. The theory goes that to do this, you "obviously must have" included the Linux USB header files, which are GPLed, and are therefore creating a derived work.
But actually, this is not necessarily such a "blatant" license violation. There are special copyright exceptions for things that "could only be useful if written in a particular way". For example, most legalese cannot be copyrighted, because there is theoretically only a limited set of ways that you could use to objectively say what you need to say about a particular legal problem.
It has been argued that the same could apply to C header files, because if you want to talk to the Linux USB layer - a perfectly legal thing to want to do, unless someone wrote a DMCA-enabled license stopping you from doing so (and that surely wouldn't be GPL compliant!), you have to use the structs and code defined in that header. You could reverse-engineer the interface, but some people would say you don't have to. Similarly, to write any Linux driver you pretty much end up including at least some of its headers. This has always been declared okay up to now - at least, I'm pretty sure Linus has said so explicitly.
(This all doesn't apply to "normal" code. There are lots of ways to write a program that does something. There may be only one sensible way, in C, to talk to another particular program. Remember those people who compare "interfaces" to "contracts"?)
What's the legal standing of all this? Beats me, the GPL has never been tested in court.
By the way, IANAL, YMMV, and so on. Please don't sue me.