April 5, 2004

It's interesting seeing the sheer number of e-Commerce packages out there, and how many are either not expandable, tied to a particular workflow, or both.

At work, we charge a convenience fee per web transaction to cover the discount rate and other fees associated with e-Commerce. We charge the convenience fee per transaction. Because we are a non-profit, part of the work has been to try to reduce the total number of transactions.

Obviously, the way to do that is a cart to fill before processing the transaction. However, we have two types of items that go into carts. We have merchandise, where items have a quantity and cost. We also have registrations, where there is a cost, but also associated metadata and possibly merchandise.

I have not been able to find an e-Commerce suite that allows this sort of customizability, unfortunately, so I'm forced to roll my own.

What I'm doing right now is I've got a BaseCartItem class that everything derives from, and a BaseCartItemCollection class that I'm storing in my session state. When the user hits Check-out, I commit my session state to the database server until the payment is processed. Once payment is processed, I'm then doling out the objects to the appropriate database.

I am not a lawyer, but it sounds like the Free Software Movement may need to make a difficult decision. Is code speech or not?

The reason I ask this is that in a recent interview, the SCO guys have called Linux a "nonliteral interpretation" of Unix [Link]. Now, this is an extremely dangerous argument for the Free Software Movement, because if code is speech, then SCO wins.

"How?" I hear the Linux masses cry. "Darl and company don't have any infringing code." If code is speech, however, they don't need it.

Let's have a non-code example. Stephen King wrote "The Shining." His core story is recognizable by looking for a possessed house, a father who is a recovering alcoholic, a protective mother, and a psychicly connected child. His main characters are named Jack Torrance, Wendy Torrance and Danny Torrance. Joe Bob writes a similar story with the same characters and the same names, but in his own words. Stephen King's lawyers get wind of Joe Bob's book...bam, Joe Bob is history.

I doubt that anyone in the Free Software Movement could argue the above scenario. While Joe Bob's could have used portions of the story or a name here or there, it was the amount of infringement that led to infringement.

Now, you may be wondering why I bolded some portions of the above text. Let's see what happens when we get rid of the bold.

_____ wrote _____. His _____ is recognizable by looking for _____. His _____ are named _____. Joe Bob writes a similar _____ with the same _____ and the same _____, but in his own _____. _____ lawyers get wind of Joe Bob's _____...bam, Joe Bob is history.

Looks like we get a template. Lawyers love templates. If you can show a case with similar items as your own that you can "fill in the blanks," it makes it very easy to convince a judge and jury that you are in the right.

So, let's fill in the template.

SCO's predecessors wrote UNIX. Their operating system is recognizable by looking for pipes used for everything, executables designated by file system attributes and not extensions, cryptic and abbreviated command syntax, destructive commands that do not ask for confirmation, and an overall reliance on "man" pages that contain all possible information except what you are looking for.. His signature API's are named fork(), chmod(), and ttyname(). Joe Bob writes a similar operating system with the same signature API's and the same names, but his own equivalent implementation. SCO's lawyers get wind of Joe Bob's operating system...bam, Joe Bob is history.

Not the easiest fit for the template, but a decent enough start.

So, why is speech so important here? Well, if code is speech, then the "infringing" code must merely be equivalent to the majority of the original code to be infringing, just like an infringing book that is equivalent to the majority of an original book is infringing.

If code is not speech, then code falls under the same laws as, say, a coffee maker. It may do the same thing, have a similar look and feel, and have the same result, but unless things are done exactly the same way, there is no infringement. However, if code is not speech, then the Free Software Movement just loses one of their most potent arguments.

So, which is it, free software guys? Is code speech or is code utilitarian? Are you willing to sacrifice Linux in order to ensure that code is speech if it comes down to that?

About Me

Currently Sr. Software Engineer in Test at Netflix. Formerly Sr. Quality Engineer on Firefly at Amazon, QA Manager at Ritual Entertainment, Software Test Lead at Microsoft Game Studios, Director of IT for Meeting Professionals International.

Opinions expressed are my own and do not necessarily represent those of any current, former, or future employer.