Software Patents: The good, the bad, the ugly

Posted:
in General Discussion edited January 2014
Okay, so I just completed my second patent, this one for a software method (my dissertation). (Which I can finally talk about and pimp it like it needs to be, thank god.)



I hate software patents. I think they're an abomination in general. So why did I go for this one like a pitbull?



1) I work for a university that claims ownerships of IP produced by employees.



2) The work was produced for fulfillment of a degree by the university - they like to claim those too.



3) This could be huge. Big big big huge. If it does end up that way, the university would want to snag it retroactively, leaving me with nothing.



4) (Important point in the first) The university, being a government funded research institution, allows other education and research bodies to use their research free and clear to allow for furthering their charter.



5) (Important point in the second) If I didn't get this, through the university, some commercial body would, locking it out completely.



6) (Important point in the third) I wouldn't have the resources to prosecute infringements, but the university has deep pockets and great lawyers. I think of it as keeping them on retainer.





Bottom line, I'd love to distribute this work far and wide academically via an open license, but not have large corporations snag yet another great idea and lock it down. This seemed like a reasonable middle ground, and one that I was rather legally bound to anyway.





Comments? I'm curious to know what other folks have done in such situations, or what they think of such patents in general. It feels mildly slimy to go for this when I've generally railed against such patents, but this seems like one of those things that if I don't, someone else will...

Comments

  • Reply 1 of 14
    powerdocpowerdoc Posts: 8,123member
    Your custom title is patented
  • Reply 2 of 14
    It sounds like you've done more than your part to ensure the IP will remain in academic/research usage, rather than in commercial exploitation, and for that you should be thanked. You can sleep well at night, I'd say.
  • Reply 3 of 14
    drewpropsdrewprops Posts: 2,321member
    Were I you, I'd press for a really nice building to be named after me if the patent produces significant future income for the school. Fair's far.



    Maybe lifetime tickets to sports games too. And free coffee at the student center....
  • Reply 4 of 14
    I'm confused.



    Did you A) patent your software method, or B) give up your IP to the University, or C) Both?



    Software (and all inappropriate) patents suck, but getting one for defensive reasons doesn't. On the other hand, giving up your IP to an employer also sucks. Many contracts these days are so over-broad that your employer can often own the love poetry you send to your girlfriend (and that's not a joke).



    If you actually still own your intellectual property (which is a weasely phrase that I generally dislike), then there's nothing to stop you releasing this under an open license, even if it is patented.
  • Reply 5 of 14
    kickahakickaha Posts: 8,760member
    Both. I didn't have the resources for a patent filing, unfortunately (can cost 10k$ easily). I figured this was a decent middle ground for a defensive patent, since the university allows for research use by others.



    *shrug* I've come to some sort of peace with this, I guess, if I can argue justifications.
  • Reply 6 of 14
    ok, so now that its safe in legal terms, what is it? i'm dying to know. and don't sugar coat it, or dumb it down. give it to me raw, dawg.



    as for the software patent part, its understandable that you are generally against them. but, you have to remember why. software patents are bad when bad people get them (besides the fact that they are bad because bad people have the theoretic opportunity to get them) (where bad people are those who would try to lock down the idea, or unfairly charge for it, particularly years after it is well established). but, since you are using it to thwart evil, and, in good faith, intend to release your work openly, the evil of the software patent can be avoided in this case. have your fears allayed. if everyone who got software patents opened the works to free licenses, they wouldn't be a problem. about the only thing i'd find disagreeable is that you seem particularly unhappy with the potential for the commercial sector to access your [thing]. i hope that everyone has access to your [thing], and free access to it. i'm also a bit confused about the situation. on the one hand, you say you have the patent, and yet you say you could not afford it. assuming it rests safely in your possession: out with the details. what is the [thing]?
  • Reply 7 of 14
    kickahakickaha Posts: 8,760member
    UNC is paying for the patent, since they'll own it. I'm listed as the inventor. My only concern re: commercial interests was that someone else would patent it and lock out research on the field completely. If someone in industry wants to use the open tools to better their own code, I'm all for it. If they want to create a tool to sell using the technologies... well, UNC will ask for license fees. Seems fair, if they get to leverage the work to make filthy lucre.





    As to what it is... it's a way to find design patterns in source code. Whoopdedoo, I hear you say. Well, the system can find design patterns that fulfill the *intent* of published and described design patterns without adhering to the *structure* of the design patterns.



    Oh, and it works for any object oriented language (with one exception that I know of), any platform, any application, any discipline.



    Basically, you can take umpteen millions of lines of code that no one really understands, ram it through the tools (which I call SPQR: System for Pattern Query and Recognition), and be presented with a UML diagram that *also* shows you which classes/methods are participating in which design patterns. Since the patterns provide you with information as to what problem was being solved, you then know better what the code does, and how it does it, without having to manually trace the bugger.



    Twelve years of being handed massive stacks of code and being told 'fix it' led to enough frustration that I came back to grad school to do specifically this project.



    And it's almost done.



    Now that I can talk more freely, I'm starting to put items on a web site for the research. Not much there yet, but I hope to get more up over the holidays. http://www.cs.unc.edu/~smithja/spqr/



    The coolest thing about this system, in my mind, is that it creates a fundamental (and formal) basis for what is a pretty zen activity. It ain't perfect, but it's a hell of a lot better than what's come before, IMNSHO.



    You can start to do things like compare the designs of two different systems... even if they're written in two different languages. Let's say you have an internal battle in a company for C++ or Java. "Fine," you say as the manager in charge, "you guys that want Java, go write a system. Same for you C++ wonks." When they finish, you can compare the two systems *on an equal footing*... and do so without having to be a language lawyer in each language.



    Or, you could have a situation like I had in industry a few years ago: three teams working on three libraries, all independent, but using each other. We had this nagging feeling that there was something we were missing at the boundaries of how the libraries interacted, but we weren't positive. Finally after a couple of months, I traced it out manually over the course of a few days and it finally hit me that we had a Decorator pattern in there, but *only* after combining the three libraries. Worse, it didn't conform to the established Decorator structure as given in the Gang of Four book... but it still did the same job.



    SPQR found it in a few seconds.



    And that's just the tip of the iceberg - the approach has generalized itself out to an insane degree. It can find *any* code construct you want, design patterns are just a small subset.



    woot.
  • Reply 8 of 14
    thuh freakthuh freak Posts: 2,664member
    interesting. i like the name. isn't that what maximus had tatt'd on his arm in Gladiator?



    i have a question. would your SPQR program be able to discover which pieces of a bloated system most emphasize (or rather, most ignore) the Model-View-Controller pattern? another programmer and i have co-written a pretty large system which is becomingly painfully hard to deal with. basically, he wrote the lion's share and disregarded the mvc idea, and now i'm back on it, and we are gearing up for a large rehaul. the system is very heavy now, and it seems mostly due to the fact that in order to do virtually anything, you have to poke and grab at the data from the view, which as we all know is not good practice, in particular because we are throwing the data around like its a rag doll and its actually a very large mass. would this program help us to distinquish which classes are best kept to m,v, and c parts, and which ones will have to be split? also, what language doesn't it work for? is a free implementation available?
  • Reply 9 of 14
    kickahakickaha Posts: 8,760member
    Quote:

    Originally posted by thuh Freak

    interesting. i like the name. isn't that what maximus had tatt'd on his arm in Gladiator?



    Yup. "Senatus populus que romanus"



    Quote:

    i have a question. would your SPQR program be able to discover which pieces of a bloated system most emphasize (or rather, most ignore) the Model-View-Controller pattern?



    In theory, yup. I haven't built it up to a full MVC-aware system yet... MVC is such a large field to play in, and some systems rely on strictly run-time behaviour to fulfill the pattern. Right now, SPQR finds most accurately those patterns which have a well-defined static nature. The upside being you only need the source code to analyze the system, not the binary.



    The downside being that the more dynamic in behaviour the pattern, the harder it is for SPQR to find it... for now. (C'mon, I have to push *some* things until after graduation, or I'll never get out of here...)



    Quote:

    another programmer and i have co-written a pretty large system which is becomingly painfully hard to deal with. basically, he wrote the lion's share and disregarded the mvc idea, and now i'm back on it, and we are gearing up for a large rehaul. the system is very heavy now, and it seems mostly due to the fact that in order to do virtually anything, you have to poke and grab at the data from the view, which as we all know is not good practice, in particular because we are throwing the data around like its a rag doll and its actually a very large mass. would this program help us to distinquish which classes are best kept to m,v, and c parts, and which ones will have to be split?



    It could definitely help with such a problem - it was designed to facilitate the maintenance process in a couple of ways: 1) being able to compare two designs from a 'comprehensibility' POV that is quantitative, not qualitative, to give a cue as to how maintainable the system will be down the road, 2) find instances of design patterns in the code such that they can be refactored more cleanly. (ie, in the library example I gave earlier, all three library teams got together and refactored their public boundaries to make the collaboration more explicit. Made for a much cleaner system overall.)



    Quote:

    also, what language doesn't it work for?



    Eiffel. Eiffel is a great language, but did something no one else did - covariant return types. From a programming POV, they can make things conceptually cleaner. From a theory POV, they're a typing nightmare. The denotational semantics I use as the core of this work, sigma calculus (A Theory of Objects, Martin Abadi and Luca Cardelli) requires contravariant return types. Luckily, just about every other production-use language out there is contravariant. (I don't know of another, but I'll cover my butt by saying 'just about' ) There are a few research languages that play with it, but not many even there.



    Quote:

    is a free implementation available?



    It will be. Like I said, I'll be putting items on the website as they are ready to go. Right now I'm digging out from under the patent filing, end of semester insanity, and gearing up for next year.



    In the mean time, the 'Publications' section will give you the things I've had published and/or presented so far. They include most of the technical detail as well as high level abstract pondering.
  • Reply 10 of 14
    thuh freakthuh freak Posts: 2,664member
    Quote:

    Originally posted by Kickaha

    It will be. Like I said, I'll be putting items on the website as they are ready to go. Right now I'm digging out from under the patent filing, end of semester insanity, and gearing up for next year.



    wonderful. i look forward to playing with it. keep me posted.



    Quote:

    In the mean time, the 'Publications' section will give you the things I've had published and/or presented so far. They include most of the technical detail as well as high level abstract pondering.



    i started to go through a few of them, but all those swiggly lines and spaces hurt my head. while i'd love to read about how it works, i'll trust you to say that it does what you say it does. i'm more interested in using it. though, when you do make it available (with source hopefully), i'll gladly upstream any fixes i make .
  • Reply 11 of 14
    mcsjgsmcsjgs Posts: 244member
    Good luck to you. It sounds as if you have a made a breakthrough.
  • Reply 12 of 14
    kickahakickaha Posts: 8,760member
    Thanks, I hope so.
  • Reply 13 of 14
    kickahakickaha Posts: 8,760member
    Quote:

    Originally posted by thuh Freak

    wonderful. i look forward to playing with it. keep me posted.

    i started to go through a few of them, but all those swiggly lines and spaces hurt my head. while i'd love to read about how it works, i'll trust you to say that it does what you say it does. i'm more interested in using it. though, when you do make it available (with source hopefully), i'll gladly upstream any fixes i make .




    You got it.



    And yeah, those are the technical docs... more friendly text is being readied. (Wait 'til you see how I compare software engineering to chicken cordon bleu placed in a food processor! Woot!)
  • Reply 14 of 14
    bartobarto Posts: 2,246member
    I just got back from the University of Canberra open day. I asked what the situation with IP is there, and they told me that any assignments remain your intellectual property. Teachers may ask for access to source code for marking, and some projects place restrictions on your IP rights (eg, you have to build and distribute a free program over the net), but other than that, your assignments remain your IP.



    And being Australia, that only applies to copyright and trademarks (we don't have software patents here).



    The UC is a pretty good University, and I hope I get accepted to it



    Barto
Sign In or Register to comment.