PDA

View Full Version : Why I wish software patents were more like copyrights [nerd topic]



AtmaWeapon
06-24-2007, 01:11 AM
I have never really liked the idea of unlimited software patents. The concept of a software patent is that a company can take some software concept, claim they invented it, and by the patent prevent any other entity from producing a similar software product without paying licensing fees or royalties.

From the outside, it seems like that's perfectly fine; I mean if you invent something you should be able to decide if you want its implementation to be open or if you want to profit exclusively. The problem is the analogy of physical inventions to software is a shaky one. Consider inventions such as the Segway. The device represents something that no one had implemented before. Any attempt to reproduce a device with the same functionality is likely to use the same kinds of machinery, therefore whether it is patentable is without question.

Now consider, for a moment, how software works. Suppose I own a software patent titled "A method for averaging an arbitrary amount of numbers via a graphical user interface". I detail all of the internals of my design, and I'm granted a patent. The problem is, given that vague description I can come up with at least 3 different implementations and I could write code to implement them in 4 different languages without difficulty. Are all 12 of those implementations subject to the patent?

My point is it seems to me that when it comes to works such as software, it is very easy to reproduce the work of another with no knowledge of how they implemented the software AND produce a functionally identical product that varies enough in implementation to be provably uninfluenced by the other. Because of this, I feel software should at most be allowed to be copyrighted. This allows the inventor of an algorithm the exclusive right to profit from the discovery for a limited time, after which other individuals are allowed to produce similar works.

Why did I post this? I came up with this neat idea 2 years ago. I was writing a little utility program and frustrated with now much code needs to be written to do simple mathematical operations. I thought about how easy it would be if I could just drag a few symbols onto a workspace and connect them in such a way that I could visually indicate the flow of data. It would look remarkably like this (http://imagesocket.com/view/blockdiagram577.png ).

That image represents a program that takes a set of numbers of indefinite size and averages them, as done in the product my company develops. There are several patents on this product, to the extent that the development of graphical programming languages is almost exclusively the domain of the company. While it makes me happy that we will remain profitable it also makes me sad that people aren't free to tinker with graphical programming and possibly come up with better implementations. If the software were copyrighted rather than patented, most of its functionality would be past the term of the copyright and available for use without limitation.

For those of you who don't understand why publicly available graphical languages might be nice, compare the image to the functionally equivalent C# code below. It took me 3 minutes to create the graphical code and 10 minutes to produce the C#; the C# is missing some UI beautification I would want to do for widespread distribution but oh well. The C# is split into 2 files because people got confused when Microsoft auto-generated layout code in their file:
Averager.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Averager
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}

private void UpdateAverage()
{
int sum = 0;
int items = 0;
double average;
foreach (decimal item in lbItems.Items)
{
items++;
sum += (int)item;
}
// coerce the result to be interpreted as double
average = (double)sum / items;
txtResult.Text = average.ToString("f2");
}

private void btnAdd_Click(object sender, EventArgs e)
{
lbItems.Items.Add(nudValue.Value);
UpdateAverage();
}

private void btnRemove_Click(object sender, EventArgs e)
{
if (lbItems.SelectedItem != null)
{
lbItems.Items.Remove(lbItems.SelectedItem);
UpdateAverage();
}
}
}
}
Averager.Designer.cs

amespace Averager
{
partial class MainForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;

/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}

#region Windows Form Designer generated code

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.lbItems = new System.Windows.Forms.ListBox();
this.btnAdd = new System.Windows.Forms.Button();
this.btnRemove = new System.Windows.Forms.Button();
this.nudValue = new System.Windows.Forms.NumericUpDown();
this.gbxResults = new System.Windows.Forms.GroupBox();
this.txtResult = new System.Windows.Forms.TextBox();
this.groupBox1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.n udValue)).BeginInit();
this.gbxResults.SuspendLayout();
this.SuspendLayout();
//
// groupBox1
//
this.groupBox1.Controls.Add(this.nudValue);
this.groupBox1.Controls.Add(this.btnRemove);
this.groupBox1.Controls.Add(this.btnAdd);
this.groupBox1.Controls.Add(this.lbItems);
this.groupBox1.Location = new System.Drawing.Point(12, 12);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(210, 158);
this.groupBox1.TabIndex = 0;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "groupBox1";
//
// lbItems
//
this.lbItems.FormattingEnabled = true;
this.lbItems.Location = new System.Drawing.Point(3, 47);
this.lbItems.Name = "lbItems";
this.lbItems.Size = new System.Drawing.Size(120, 95);
this.lbItems.TabIndex = 0;
//
// btnAdd
//
this.btnAdd.Location = new System.Drawing.Point(129, 47);
this.btnAdd.Name = "btnAdd";
this.btnAdd.Size = new System.Drawing.Size(75, 23);
this.btnAdd.TabIndex = 1;
this.btnAdd.Text = "Add";
this.btnAdd.UseVisualStyleBackColor = true;
this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click);
//
// btnRemove
//
this.btnRemove.Location = new System.Drawing.Point(129, 119);
this.btnRemove.Name = "btnRemove";
this.btnRemove.Size = new System.Drawing.Size(75, 23);
this.btnRemove.TabIndex = 2;
this.btnRemove.Text = "Remove";
this.btnRemove.UseVisualStyleBackColor = true;
this.btnRemove.Click += new System.EventHandler(this.btnRemove_Click);
//
// nudValue
//
this.nudValue.Location = new System.Drawing.Point(6, 19);
this.nudValue.Name = "nudValue";
this.nudValue.Size = new System.Drawing.Size(117, 20);
this.nudValue.TabIndex = 3;
//
// gbxResults
//
this.gbxResults.Controls.Add(this.txtResult);
this.gbxResults.Location = new System.Drawing.Point(12, 176);
this.gbxResults.Name = "gbxResults";
this.gbxResults.Size = new System.Drawing.Size(210, 44);
this.gbxResults.TabIndex = 1;
this.gbxResults.TabStop = false;
this.gbxResults.Text = "Result";
//
// txtResult
//
this.txtResult.Location = new System.Drawing.Point(3, 16);
this.txtResult.Name = "txtResult";
this.txtResult.ReadOnly = true;
this.txtResult.Size = new System.Drawing.Size(201, 20);
this.txtResult.TabIndex = 0;
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(237, 233);
this.Controls.Add(this.gbxResults);
this.Controls.Add(this.groupBox1);
this.Name = "MainForm";
this.Text = "Averager";
this.groupBox1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.n udValue)).EndInit();
this.gbxResults.ResumeLayout(false);
this.gbxResults.PerformLayout();
this.ResumeLayout(false);

}

#endregion

private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.NumericUpDown nudValue;
private System.Windows.Forms.Button btnRemove;
private System.Windows.Forms.Button btnAdd;
private System.Windows.Forms.ListBox lbItems;
private System.Windows.Forms.GroupBox gbxResults;
private System.Windows.Forms.TextBox txtResult;
}
}


*edit* Also don't get me wrong, I love the company and I'm not an activist for this issue, but for the past few years I haven't understood what all the fuss about software patents was and when I saw this product I understood. I am not certain if it would be impossible for someone to independently create a graphical programming language and evade the patents on this software, I only looked up 2 or 3 of the patents and they all applied to "nice" features that aren't necessarily vital to having the language. Still, I am just curious how everyone else feels about software patents.

vegeta1215
06-24-2007, 11:19 AM
What you said is exactly why there are organizations fighting against software patents. Can you imagine trying to create a nice piece of software, but then having to worry about violating someone's widely vague patent for fear of being sued? It's so stifling to innovation and competition, it's crazy really.

Beldaran
06-24-2007, 11:37 AM
Software patents are horrible. I wrote a huge research paper on them last year. I agree with you completely.

4matsy
06-24-2007, 02:14 PM
Copyrights and patents need to just fucking die already. The systems are just too broken these days...:sweat:

Glenn the Great
06-24-2007, 07:50 PM
I'm not a fan of copyright or patent. Whenever I say this, people bitch. The reason they bitch, is because I threaten their ability to gain a lot of income for a little work.

gdorf
06-24-2007, 09:31 PM
I'm not a fan of copyright or patent. Whenever I say this, people bitch. The reason they bitch, is because I threaten their ability to gain a lot of income for a little work.
Not that you'd know anything about accepting money you haven't earned...


I agree completely with Atma about software patents, but the moment I read the title of this thread I knew it would turn into a rant about copyright law and patents in general. "Copyright needs to die!" doesn't do the original post justice. At least support your claims.

AtmaWeapon
06-24-2007, 10:36 PM
I don't believe patents or copyright are wrong in the spirit in which they were created. An inventor or an artist should have the right to profit from their work, and without patents and copyrights there would be less incentive for original work, since years of study and toil could suddenly turn from a potential profit to a waste of time as soon as someone reverse-engineers your work.

However, the state of the current patent system leaves much to be desired. Software was developed faster than people could determine how original works should be treated. When large entities started caring about software patents, they hurried the process and managed to get it set up in a way that benefits them.

I would never support a world where all inventions are free and open by mandate; inventors should have the right to determine how their product should be distributed. For physical inventions and copyrights people still have limited ability to innovate via "derivative works". For software, the concept of derivative works isn't very well-defined from what I have seen. For example, Amazon.com holds a patent on one-click shopping. How do you derive new behavior from "when the user clicks on an item we sell it to them"? Software is a very different beast and I think everything would have been better if we had made new laws for it rather than attempting to hammer it into the old system.

I think perhaps all patents should be term-limited. Certain mechanical constructs, like the iPod's clickwheel, would be extremely useful in other contexts (I'd love a TV remote with the clickwheel interface). However, the only way I'm ever going to see that is if Apple makes a TV. I feel like my consumer experience has been needlessly damaged by Apple's unlimited hold on the clickwheel.

Patents with limited terms would promote innovation, since a company that relies heavily on patents would be forced to develop some advancement in their product worthy of another patent before their first patent expires if they wish to remain the sole outlet of their technology.

That's just my view though; I believe it is likely there are people who wish for a world with no patents or copyrights. I personally think that is a silly concept because I sure wouldn't bust my balls on developing a high-quality innovative product in my free time if some kid with a disassembler can rebrand it and sell it as his, leaving me with no recourse.

Yeah and also I agree with gdorf, it's pretty sad how many of you post the equivalent of "word" or "No u r wrong" and leave it at that.

DarkDragon
06-24-2007, 10:50 PM
I thought patents were already term-limited, to something like 10 years?

Speaking of bullshit software patents, I almost accepted a job last summer helping a computer game company who had patented the use of polar coordinates to rotate a 3D camera search for evidence of infringement in competitors' code. I would have been paid $50 an hour too.

AtmaWeapon
06-25-2007, 08:46 PM
I thought patents were already term-limited, to something like 10 years?
It would appear you are right. (http://en.wikipedia.org/wiki/Term_of_patent_in_the_United_States). Still, there has to be some way around it. The last version of our product was the 20th anniversary edition, and we are involved in patent infringement lawsuits. v:confused:v

slothman
06-26-2007, 12:54 AM
Assuming patents and copyprivleges, I don't think of them as a right, are a good thing, I think software should be patented and not copywritten.
The software is like an engine, it tells you how to do something, either getting fuel to make movement or turning keyboarding into printable paper.
I do think that "copyrights", again I don't like that word because it implies a "right", last a little too long.
Well actually 90 years too long.
It doesn't make sense for a movie made in 1927 to have profits, if any, go to an unrelated, possibly not even existing then, company until 2022.

P.S. It's funny how the word "copyright" with "right" as a root turn into "copywritten" with "written" as a root.
It's a different word.

shadowboxer2007
06-26-2007, 03:23 AM
I must say you are all Losers!

DarkDragon
06-26-2007, 04:28 AM
I believe the correct past participle is "copyrighted."