In connection with an attempt to articulate my views on software patents (more on those below), I was thinking about the different ways in which software development can be innovative. And it turns out that most forms of software innovation can, at their core, be assigned to one or more of three overlapping categories:
- Direct improvement in user interface or functionality. Examples (again overlapping) include:
- True UI enhancements.
- Application functionality that just lets you do more.
- Most modern mobile, web, and/or social software efforts, in which a relatively small amount of coding effort produces features that may or may not lead to rapid viral adoption.
- Ease or functionality not just for end users, but also for administrators. In particular, SaaS, cloud, private cloud and/or appliance benefits are commonly concentrated in this area.
- Languages and other programmer aids too.
- Performance/efficiency improvement. Overlapping examples include:
- Anything that directly purports to improve response time, hardware cost or utilization, or power/floor space consumption.
- Anything to do with parallelization or scale-out.
- Many, many under-the-covers enhancements to make data more protected (against theft or loss alike), user features snazzier, and so on. With a few exceptions – which are generally regarded as unsolved artificial intelligence problems – almost anything can be hacked together quickly in some high-level programming tool, assuming performance is of no concern. It’s getting the performance remotely right that can often slow market introduction.
- New or enhanced logical data model. Examples of innovation via data model – either truly new or else just newly implemented in a performant way — include:
- A huge fraction of application innovation, in “traditional” functionality and workflow alike. In several technological eras, just about everything about applications has been a commodity except the data model, but the data model alone was enough to provide long-lasting product differentiation. Indeed, it probably is true today, although that may finally change as business intelligence integration becomes a large part of application software technology.
- Most things that are called knowledge representation.
- Many things that are described by terms like “unstructured” or “semi-structured” data.
- Most innovations described by terms such as metadata management.
To check that I’m not being too glib here, let’s consider a few categories of software technology.
- MPP analytic DBMS are all about performance/efficiency improvement (whether of SQL queries or other analytics), except when they’re about ease of administration and the like.
- Hadoop is about scaling out cheap machines in a way that is (for some purposes) easy to program.
- The core of NoSQL is about efficient scale-out; easier programming also plays a big role.
- Disruptive small vendor business intelligence innovation has a lot to do with better and more useful user experiences, except when it’s about ease of programming and/or administration. The BI industry is also moving to in-memory analytics, which harnesses better performance to provide more interactive user experiences.
- SAS, which has long competed on the basis of superior functionality for statistical programmers, is now also on a big performance kick via MPP analytic DBMS partnerships.
- Oracle’s DBMS efforts have long been focused on performance and administrative usability.
- As noted above, enterprise application functionality is usually all about the data model. Exceptions arise when there is a major generation of UI functionality, such as interactivity (long ago), GUIs (ditto), or BI integration (in its early days now). SaaS is also pitched as an ease-of-everything play.
- Administrative tools are usually about making administration easier. In a few cases (e.g., backups), they’re more about performance.
I’d say my proposed trichotomy is holding up pretty well.
So what set me off on this line of reasoning? Well, Stephen O’Grady wrote
The reason I am against software patents is … very simple. … I am against software patents because it is not reasonable to expect that the current patent system, nor even one designed to improve or replace it, will ever be able to accurately determine what might be considered legitimately patentable from the overwhelming volume of innovations in software. Even the most trivial of software applications involves hundreds, potentially thousands of design decisions which might be considered by those aggressively seeking patents as potentially protectable inventions. If even the most basic elements of these are patentable, as they are currently, the patent system will be fundamentally unable to scale to meet that demand. As it is today.
In addition to questions of volume are issues of expertise; for some of the proposed inventions, there may only be a handful of people in the world qualified to actually make a judgment on whether a development is sufficiently innovative so as to justify a patent. None of those people, presumably, will be employed by the patent office. … Nor will two developers always come to the same conclusions as to the degree to which a given invention is unique.
In considering whether I agreed, I realized that the analysis is different for each of my three categories of innovation mentioned above.
- In the case of a logical data model, O’Grady is almost surely right. Many of those are just copied from the real world anyway, and hence don’t meet any kind of “novel and non-obvious” test. The rest are so general and abstract it’s really hard to say what – if anything – is new and non-obvious about them vs. well-established, often academic prior art.
- In the case of performance enhancements, the core ideas can usually also be found in well-established computer science publications. What’s more, the true innovations may be such simple algorithms that they’re not patentable. What’s left over is incremental enhancement. Once again, O’Grady is right.
- But the case of user interface/experience enhancements is not so clear. Inventor comes up with a useful idea for something that hasn’t been built before. Inventor builds and patents it. I’m not sure how that’s different from the case of building physical devices of various kinds, which have been patented for centuries. Determining what’s novel or non-obvious doesn’t seem to require specialized technical knowledge, at least not above and beyond that required in other disciplines.
Bottom line: There are many other reasons to oppose software patents, but Stephen O’Grady’s “It’s impossible to adjudicate them fairly” argument remains unproven, at least when it is applied to software enhancements whose essence is better designs for user experiences.
- My negative comments about patents in the areas of MapReduce and columnar DBMS
- Three standpoints from which to view a software product strategy