A lot of people I know share my opinion that we should seriously consider abolishing patents that apply to the software industry.  But I also know a lot of people who think patents serve a legitimate purpose.

What puzzles me is that most of the people in the pro-patent camp are usually fairly smart people.  In my opinion there is a disconnect between the stated purpose of patents and observable reality.  Surely smart people should at least feel uneasy about these disconnects?

Sharing knowledge

As a means for sharing knowledge, patents are an obsolete mechanism.  If you have ever worked for a large corporation you know that patents are treated like toxic waste.  Not only will you be strongly disinclined to base important technologies on (someone else's) published patents, but even acknowledging their existence is often frowned upon.  If you talk about, analyze or even just mention the existence of a patent that is somehow related to what your company does, chances are that you will get a telephone from the patent lawyers of your company instructing you that it is verboten to discuss patents in any medium that can later be subject to subpoena.  Repeat offenses can lead to disciplinary action.

When was the last time you trawled through the patent databases in search of solutions for your technical or scientific problems?  Well, most likely the answer is "I don't".  You only ever check the patent databases when you need to figure out how much risk you are exposing yourself to.  And even then, you don't talk about it because you don't want anyone to be able to prove that you willfully infringed on their patents if it should ever come to that. 

Knowledge is shared in scientific journals, books and articles as well as less formal channels such as blogs, open source code and online discussion.

Patents do not represent repositories of usable knowledge -- they represent repositories of forbidden and dangerous knowledge.

Providing protection

Patents themselves do not protect your invention -- litigation protects inventions. 

This means that unless you have substantial resources to fight costly and year long battles in court, and a large patent portfolio of other patents that can be leveraged against any threat, your patent is virtually worthless.  This means that patents are mostly the domain of large companies or well-funded patent trolls.  Which again means that patents do not benefit the independent individual innovator.  Nor does it favor startups and other financially constrained entities.  Patents protect incumbents.  As a mechanism for rewarding independent innovation it does not work.

This largely invalidates the stated purpose of patents:  to encourage sharing knowledge while providing a head start for innovators.

Other areas

Recently I have read a lot about the pharmaceutical industry and its relationship to patents.  Since I have never worked in these industries I can't really tell you how this affects practical engineering in these industries.  I would expect that engineers are just as uneasy around patents as in the software industry.  Perhaps even more so.

The numbers suggest that patents can possibly be blamed for the stagnation in development of new drugs to address health problems of the poor.  The industry spends most of its budgets on marketing, lobbying and administration -- and what little is spent on actual R&D seems to focus on finding replacements for drugs that already have the desired efficacy.  Curing the ailments of the poor, in particular those in jurisdictions where intellectual property rights are tricky, isn't good for shareholder value.

It would appear that the main purpose of pharmaceutical patents is to protect shareholder interests to the detriment of public health.

And we haven't even touched on the horrible mess that is patents as applied to agricultural intellectual property.

In all seriousness: I really doubt that preserving patents is in the public interest.


Oracle/Google lawsuit hinting at Microsoft opportunity?

Oracle's flatfooted approach to Java may present an opportunity for Microsoft.  Before Oracle rather clumsily decided to use their Sun acquisition to shake down Google (and god knows who else) for protection money, Android was the one thing that was poised to make Java the dominant technology for the mobile market.

There are a few things to note here:
  1. Sun never managed to capture the mobile market due to their inept J2ME platform which wasn't usable for anything and which never represented a single target with its gazillion divergent implementations.  J2ME did more harm than good.
  2. The mobile market is both bigger than the desktop market and it is still a long way from being anywhere near the saturation point.  The mobile device is believed to be the computing platform of choice for emerging markets, and the cost of devices is plummeting.  Thus, any argument that smart phones are "too expensive" is at best misguided.  These are not phones.  They are primarily mobile computers.
After running in with Sun and being hassled for money, Microsoft developed their .NET platform and the C# language to create their own ecosystem.  The problem was that Microsoft took a rather myopic view of this so they fell short of the Java promise of being everywhere

I've never really understood why Microsoft would hamper their efforts by limiting themselves to Windows.  Really, it never made sense to me.

Microsoft now have a unique opportunity to end the experiment that was .NET with severely limited portability and go after the same scope that Java has:  be everywhere.  They also have the opportunity to make some adjustments to the stewardship of .NET, to make it safe for others to build on.

If Microsoft were to remove any doubts around their .NET platform, aggressively push interoperability and openness, and work with the developer community on ever better terms than Sun did before Oracle bought them, Microsoft could end up making Java irrelevant.  Microsoft have thus far lost the battle for the operating system on mobile devices and I am not sure they will ever produce a decent OS for mobile devices.  But their development platforms could still play a role if Microsoft are smart enough to realize what it takes.

The actions of Oracle does not only affect Google.  It affects the entire Java community.  Oracle has, in one blow, devalued the entire Java platform by injecting a generous helping of FUD, and alienated everyone who could have helped Oracle go for a vastly bigger, ongoing payoff further down the line.

I can't believe I am saying this, but then again, I had no idea Oracle were going to go nuclear on themselves and effectively cast the entire future of Java into doubt.


Rebel Alliance.

With Oracle filing suit against Google over alleged patent violations (which may or may not have merit) it has become abundantly clear that Oracle is not serving the best interest of the Java community.  This action injects a large dose of Fear, Uncertainty, and Doubt into the Java community which, for all practical purposes, puts Java on an equal footing with .NET.

Just as the future of mobile Java started looking really bright, Oracle is sabotaging the future of its own technology an clearly demonstrating that they are not worthy of trust.  Something needs to be done and it probably needs to be dramatic.  Ellison, who sees himself as a latter day Djengis Khan, doesn't do "reasonable".

This makes me wonder if the Java community is big enough to free itself from Oracle.  Would it be at all possible to create a Java community, with its own VMs, libraries and toolchains that can exist separate from Oracle?  With companies like Google and IBM, there should be enough heavyweight players to form a consortium that can pool their resources (and patents) and build a platform that makes no use of any Sun-derived code.  And with a large enough portfolio of patents to give Oracle a bloody nose if they attempt to leverage any of the Java-related patents against this consortium.

I'm pretty sure that even Microsoft would be interested in joining.  Not so much because they care about Java, but because they would probably be only too happy to beat Ellison over the head with a big patent portfolio and inject the same FUD into Oracle's meal-ticket:  the Oracle database.  I am sure Microsoft is hungry for a re-match after the lost battles of the late 1990s.

I think it is time for the heavy-weights to deal with Ellison.  Unlike the SCO patent trolling saga which was allowed to drag on for years and years, this would not be a asymmetric war where the troll has nothing to lose.  Oracle has a lot to lose and thus should present an easier target.

Hard work.

Whenever I hear people talking about "working hard" I try to imagine what they mean.

During my 20s I would often work long hours.  A minimum of 12 hours per day.  In the most extreme periods perhaps as much as 15 to 17 hours per day.  Which was of course hard, but in retrospect, not all that productive.   I'd get tired and unfocused, but I would force myself to stay at the office.  Sometimes probably doing more harm than good to the projects I was on -- and almost always feeling terribly stressed out.

In contrast, around 2004/2005 I experienced a period of immense productivity while only spending about 5 hours per day at the office.  Often less.  I'd get in late, focus only on what I worked on for as long as I could and then I would leave the minute I started to feel my concentration going.  I rarely even read private email while at work.  And I tried to avoid any recreational web browsing.   Still, I got a lot more done than when I spent a minimum of 12 hours per day at work.

Not only that;  solutions to problems tended to pop up in my mind with much more ease when I made sure I was well rested and spent more time outside the office.  I had a physics teacher many years ago who told me that when studying physics he would have a traditional old blackboard in his studio appartment.  Every day he would solve one or two problems on it, but never more than that.  He said that by limiting himself to one or two problems per day he made sure that he was always hungry for more.  He was always looking forward to solving new problems the next day.

I experienced the same feeling when I only allowed myself to work while concentrated and forced myself to go home when I wasn't making progress.  It made me much more eager to go to work the next day, and it set my mind abuzz with thought processes while I was riding a bicycle or snapping pictures outside.

The problem I have with the term "working hard" is that it implies that you should be working close to your physical limits.  Which, at least in my line of work, seems to be exactly the opposite of what you should do.  Because it isn't sustainable.  And it doesn't produce good results.  It can only be used to impress clueless managers.


Pull yourself together Larry Ellison

Oracle recently decided to attack Google's Android platform for patent infringement.  I have yet to talk to anyone in the Java community that supports this move.  In fact, most people I have talked about this think that Oracle are shooting themselves in the foot.

When Oracle bought Sun I didn't really know what to make of it.  Sun has not exactly had the most brilliant leadership on the planet.  In fact, you would probably be hard pressed to detect any direction or vision from the upper management at Sun over the past 10 years.  They've made some neat stuff, but there has been no identifiable greater vision.
Given their technology portfolio Sun should have been at the forefront of the Cloud computing industry.  They should have been bigger and better than Amazon at this point.  But they are not.  And it wasn't like they didn't have the time to see this opportunity and act on it.

Larry Ellison is not an idiot.  He has done some smart moves in the past, and in all seriousness I thought that he had seen what most sensible people had seen:  Sun has a great technology portfolio and a very dedicated community around Java -- a programming environment they have managed really well.  All Sun needed was focus,  a visionary leader, to shed parts of its mediocre management and a vitamin injection to go do the things that need doing.

I mean, for Sun, it couldn't possibly get any worse.  Right...?

I really thought that Oracle understood what they were buying and buying into -- the Java community.  I thought that they realized both the value and the fragility of the community.

Their flat-footed approach to Java suggests otherwise.  From minor things, like annoyingly moving the Javadocs to an Oracle domain to this litigious bullshit.

Larry, there is no nice way to put this, so I am going to be open, honest and helpful and express myself using language an alpha-baboon like you can relate to: you are being an asshole.

Worse still, you are being a dumb asshole.  By pissing all over the Java community you are reducing the value of your Sun acquisition.

You need the Java community and you need the enthusiasm -- without it, Sun is just a badly run, mediocre company that would eventually have gone bankrupt.  The Android project are your friends.  They are succeeding in pushing Java on mobile platforms -- something Sun dropped the ball on a decade ago and something which you, Larry, would never be able to rectify on your own.  With all due respect, you are a brilliant business man, but you know f*ck-all about technology.  Mobile computing is going to be a huge area of growth -- the potential in this market is much higher than for desktop computing.

You might technically have a case in court, but even if you win, you stand to lose a lot more.  If you manage to introduce fear, uncertainty and doubt into the (mobile) Java community, people will look elsewhere.  If there is uncertainty around the Android platform and if you waste everyone's time with this litigious bullshit, you are playing into the hands of your competitors.  Rather than fostering a massive future Java ecosystem on mobile devices you could end up pushing people to move to a different environment.  You could end up turning Java into another .NET -- for which there is exactly zero enthusiasm and zero future in the mobile market right now.

Don't think that the companies backing Android aren't capable of creating their own ecosystem that doesn't involve Oracle.  There is too much at stake and the potential market is big enough for it to be worth a try. Keep up this petty nonsense, and you just might piss off enough people to lose the one shot you have at a key role for a technology you own in a rapidly expanding market.

Pull yourself together, Larry. And get rid of whomever is responsible for Java at Oracle right now, because they are certainly not doing their job.


Open source.

Some time during the 80s my dad bought a nice big japanese car.  I think this was the first car he bought that had a modern injection and ignition system, so that when one day it wouldn't start and he popped the bonnet, there wasn't really a lot he could do about it.  I remember him staring at the engine and not recognizing anything that he could actually tinker with to diagnose what had gone wrong.  The only thing left to do was to take it to the garage and pay someone an obscene amount of money to hook up a computer to it.

All modern cars are like that now.  Simply knowing how the engine works isn't really enough.  You need to know how the onboard computers work, the sensor arrays, the electromechanical parts etc. in order to figure out why an engine that looks perfectly okay won't start.  Some cars even hide most of the engine behind covers.  You are not supposed to access the engine.  Usually you can top up the fluids, but even something as fundamental as the spark plugs are often not your business.

Ordinary commercial software has some of the same properties.  For the most part you are not supposed to tinker with it.  It either works or it doesn't.  And when it doesn't you file a bug report and then you wait.  And wait.  And wait.  And if you are lucky, or you have thrown enough money at the vendor in the shape of a support agreement (which is not unlike an insurance -- in all the bad ways as well), you might get your problem fixed. 

But there is very little you can do about speeding up the process.  You are helpless.

The reason I, as a developer, like open source software is because I can pop the bonnet and have a look.  I may not always have the perfect fix for what is wrong, but most of the time I can isolate problems, diagnose them and at least get a quick workaround in place while I, or someone else, comes up with a more permanent solution.  Actually, quite often, a good permanent solution can be found and it is then easy to contribute it back to the open source community.

People who advocate open source usually get lost talking about improved security, lower total cost of ownership and other theoretical properties that they think they can measure, compare and understand in isolation.  I can't really say that I have ever understood this reductionist approach.

I mostly care about what I can do to make something work, and once it works, keep it that way and know why it works.  My nightmare scenario is to get a telephone call at 0300 in the morning and have no idea what to do in order to get a system up and running again.  Or even where to begin diagnosing.

I also care about time-lines and progress.  About how systems can be made better, more reliable, accommodate new requirements that keep appearing on the horizon -- as is invariably the case in any line of business worth being in.  If your systems are key to your business and you are not continually working to improve them you have, for all practical purposes, started preparation for going out of business.

The problem with software is that, most of the time, those who make the decisions in large enterprises are often not the same people who have to fix the problems.  Or even those who have the vision of where the company needs to be 12-18-24 months from now.

In fact, in many enterprises it is seen as suspect to have your own "mechanics" on staff.  People who understand budgets and manage the finances tend to think of large computer systems as off-the-shelf solutions.  Even when they are not.  You set a price and a deadline, you take delivery of the systems and then you simply feed the computers power and occasionally slap them on the butt when they need to burp.  Simple.

There is no simple set of metrics why open source is a good idea.  Understanding why open source is important has more to do with building a durable culture than columns of numbers on a piece of paper.