Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I go to a university where students are allowed to make their semester schedule based on the information about the subjects they are going to take, that is, the hours that the courses are available, the professors, and the remaining room for other people. Making these schedules by hand was a very difficult/boring task.

I wrote a pretty nifty Python program that automates this process. You pick the codes for the subject you're going to take and filter out the professors you don't want. Then the program outputs all the possibilities there are if there aren't time conflicts. This program helped a lot of students. The time to make a schedule reduced from 2 days to less than 30 seconds!

Now here begin the problems. My family and all the people that used the program tell me to patent the program before someone steals the idea (that could happen in my country). But I question that myself. Is it necessary to patent a web scraper mixed with a backtracking engine? It was difficult to make the program because I didn't know a lot of things, but now that I have finished, I feel that it would be very stupid/immature to patent such a thing. But on the other hand, I don't want someone else to get the credit for it. What do you think?

share|improve this question

closed as primarily opinion-based by MichaelT, GlenH7, Kilian Foth, gnat, jwenting Nov 6 at 12:39

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

Please don't cross-post questions to multiple Stack Exchange sites. If a question belongs elsewhere, it can be moved for you by other users or moderators. You can flag a question for moderator attention and asked for it to be moved. That way any answers and votes you receive will move to the correct site as well. –  Anna Lear Jul 18 '11 at 6:18
You won't get a patent for less than $10,000 in legal fees. Is your question still relevant? –  Jeremy Jul 18 '11 at 15:10
How exactly do you want to patent something that has existed for years? There's nothing new about what you've made, in fact I'm surprised your university is not using an automated solution already. Just one example : index-education.com/fr/logiciel-emploi-du-temps.php (French) –  houbysoft Jul 18 '11 at 15:26
I think what you need is a copyright, and not a patent. You can do that by just including a copyright notice in the source code and documentation. –  JohnFx Jul 18 '11 at 15:37
@JohnFx: That is incorrect. In signatory nations to the Berne Convention, Copyright is automatic - you don't have to do anything, since it's already Copyrighted. The Copyright notice is only that: a notice. I would agree that a license is necessary, but it's false to say that a notice applies the Copyright. –  greyfade Jul 18 '11 at 15:58

11 Answers 11

I'm not sure if you have anything to patent. You even said so yourself with someone steals the idea. If you have a fairly unique/complex technique that is patentable but i'm sure there many ways to implement that idea w/o using the same technique.

What are you patenting again? The idea? bad (good?) news is you cant patent ideas.

share|improve this answer

This is a variety of Stable Marriage problem the algorithm and is used a lot(medical schools) to match graduates to internships based on a criteria for best fit.

share|improve this answer

It's almost certainly not worth even trying unless you've got a large company to back you up or you can make money yourself off your software rapidly. Here's why.

A patent (which it costs a fair amount of money to get) is not worth much unless you can defend it, i.e., you have to be prepared to bring a civil suit against violators of the patent. If you go after Small Guys, you won't get much money at all (because they've usually not got the assets) and if you go after Big Guys, it's going to cost you millions to reach the point where a payout could happen. And you might well lose. Where do the Big Guys get a benefit? From the fact that they can afford to hold many patents in a portfolio; it's the portfolio's bargaining power that is valuable.

Of course, if having the patent lets you become rich through selling the software then it's a different matter, but there's very few people who have managed that. It's ever so hard to become rich selling software. (Now services, you can do better selling those, even if you give your software away. That's a different market altogether.)

share|improve this answer

While you surely wrote a cool and useful piece of software, this kind of scheduling stuff is just daily work for people who work in areas where time scheduling belongs to their kind software, for example managing software for employees working plans like you have in kitchens, hospitals and many other places. There is similar software for schools to plan which teacher will give which course in which class, used at the beginning of each year. All this is tricky and you can be proud if your program works, but not much that hasn't be done before.

If you can get a patent on it may depend on your country's laws, though is most likely not worth the time and money. Set up a website with your name on it and publish as Open Source.

share|improve this answer
+1 for open source. Gets you the credit for your hard work, and is a great item to add to your résumé when looking for employment or higher education. –  KM. Jul 18 '11 at 12:38
And you still can charge money from those who are too lazy to install python on their computers. –  Mchl Jul 18 '11 at 13:23
+1 to KM01's suggestion. Putting something like this on your resume will impress a potential employer, which would be worth far more money to you in the long run than you'd ever make directly off a script like this. –  Mason Wheeler Jul 18 '11 at 13:37

You cannot patent it, because you publicly disclosed it already. You have user base (and since it's a script - they can see exactly how it works), and you more or less described it here, giving enough information as to the essence of the idea.

So even if the question was relevant when you started typing it - it ceased being relevant once you clicked "Submit". You cannot patent it any longer, even if all the other (valid!) reasons stated in the other answers would not hold for you.

share|improve this answer
Thank you very much for perfectly demonstrating why legal questions should be discussed in legal forums by people who actually have a clue. Why do programmers always think that asking programmers legal questions is a good idea? If you have an algorithm question, do you call your lawyer? –  Jörg W Mittag Jul 18 '11 at 14:28
@Mathew you have to be very careful not to 'publish' something until the patent is filed. And the definition of publish is very broad, certainly handing out a readable functional description of the algorithm would be regarded as publication. –  Martin Beckett Jul 18 '11 at 16:09
Couldn't find any explanation for downvotes in the comments. Care to explain? –  littleadv Jul 18 '11 at 16:41
@littleadv: according to the USPTO website, the inventor has one year to patent the invention after the publication. "the invention was patented or described in a printed publication in this or a foreign country or in public use or on sale in this country more than one year prior to the application for patent in the United States . . ." (emphasis mine) –  André Paramés Jul 18 '11 at 19:24
@Andre - thanks for the correction. For the best of my knowledge, though, this is only valid for US patents, not the patents you can enforce world-wide (which is irrelevant regardless because we're talking about patenting a software). In any case, I was pointing at the rudeness of the down-voters, I may very well be mistaken, but explanation for the down-vote is something I consider as "goes without saying", not something I should ask for. –  littleadv Jul 18 '11 at 19:35

In your case, I have a strong vote "against".

  1. Computer-aided schedule making is a problem as old as computers, and one of favored subjects of thesis given out to students to solve. Chances are more than good that there is a prior art on your patent.

  2. The target audience, as you say, are students. Piracy is rampart in this customer base, so no matter what -legal- protection you apply, you'd better implement some awesome DRM (...on a Python script?!)

  3. Software patents are recognized almost nowhere outside USA. There is nothing against a foreign company picking up your patent and selling it locally. And patent application requires pretty detailed description of the mechanism in question, and is totally public, meaning you practically hand them the instructions.

  4. Considering the costs of a patent application (and good chance of having it rejected), the chance of return on investment is slim.

  5. Software patents are universally considered evil by the IT people. You will lose a lot of professional respect in developer community for patenting software.

  6. You'd be hard-pressed to come up with a business model to have people pay reasonable money for a piece of software they use for 30s twice a year.

share|improve this answer
Re: 3. Software patents aren't issued almost nowhere outside USA. However once it's patented in USA, the patent needs to be recognized worldwide. Whether this equals a worldwide protection is a different thing. –  Mchl Jul 18 '11 at 13:22
@Mchl: Well, no. I've got several patents on my name, and I have to sign for quite a few non-US patents precisely because US patents don't matter outside the US. Nor do EU patents matter inside the US. Well, except to prove prior art, but that's another matter altogether. –  MSalters Jul 18 '11 at 13:47
Software patents are (mostly) recognized inside the EU, but the level of scrutiny is much stiffer than in the US. (I don't think you can get business method patents in the EU.) If you're not making a significant advance over the state of the art, don't bother. –  Donal Fellows Jul 18 '11 at 14:21
@Donal In fact, software patents don’t exist in the EU, they are certainly not recognised. Patents such as the LZW patent – which were explicitly granted in several EU nations (!) – are not software patents, though I’m somewhat unable to draw a meaningful distinction. –  Konrad Rudolph Jul 18 '11 at 15:24
@Mchl - there is no such thing as a patent being recognised worldwide (as pointed out by MSalters). There is the PCT (Patent Cooperation Treaty) process which ensures consistent priority date and gives time to make a selection of the countries to follow through in. But each country ends up being processed separately. I've had patent assignments coming back from foreign countries for years. Those (countries) you choose not to follow through in have no coverage. PRIOR ART though could be an application anywhere in the world. Searching for prior art is fun. Not. –  quickly_now Jul 19 '11 at 4:26

Let's assume your program uses something that can be patented.

This means you will have to spend quite some time and money to really patent it.

Let's assume you successfully patented it and somebody else infringes it (knowingly or not - the latter being more likely, especially in a case like this).
Either, they are just some really small company or a single university student, i.e. nobody you could get money from.
Or they are really a sizable corporation with a lot of funds, that can turn you idea into profit and whom you could sue to get some money from. However you can expect the whole trial to go on for many months or even several years and to suck you dry of any money you have. And there is no guarantee you will actually win.

All that to say: You most likely can't afford patenting software.

Secondly, what you speak of is in fact a very nice and helpful project. But it's not really new. That very combination of different routines you created of course is unique, but to me it rather sounds like adapting a generally known pattern to very specific area (your university and the way courses are organized there).
The only scope where the uniqueness is relevant probably is your university (because it's the only place where this unique constraint types apply). Therefor I don't think your solution can be patented.

If you're worried with someone else getting the credit, releasing it as open source is a good idea, as other said. Put it on a public repository (github, google code, bitbucket, sourceforge, ...), so that if somebody claims he did his stuff first, you can simply show that your code was checked in since then and then.
If you want to earn a bit of money from this, then you can hope for donation or get paid for feature implementation.

Once you have released it with a free software license you see fit, you should try to spread the word or even approach your university, so that they use it. You might even get a job to maintain and integrate the project on behalf of the university and might be able to write your thesis on some aspects of the project.

share|improve this answer

Chances are pretty good your solution is a variation of an existing constraint satisfaction approach, search, or scheduling algorithm, so don't get too hung up on patents. If you really think that's worth investigating, talk to a patent attorney for an hour with an expertise in software patents and figure out what he thinks your chances are.

But the area you are describing is pretty well researched area with lots of prior art; chances are, a professor in the CS department will give you better guidance than an attorney on how novel your approach is, and will know the landscape pretty well, and cost you nothing more than your existing tuition and fees. If your approach is interesting enough, maybe it'll make a good graduate degree thesis topic.

Ideas aren't worth that much in practice, and the idea of finding ways to optimize class schedules is a pretty old one; no pun intended, but it's a textbook example of a graph matching problem. If you could turn the technique into a larger business (entirely possible, if you broaden your scope beyond your current problem), you might have a business opportunity, and then you can fund all the patent attorneys your generated profits allow.

share|improve this answer

I suspect you could not patent this anyhow.

Essentially with a patent you need to patent the process or method. In the case of a method of screen-scraping, its been done for years, so there is nothing novel or inventive here.

In the case of filtering and selecting (courses, etc) this is essentially a selection and optimisation solution. Again its not novel or inventive.

Putting these two things together might be novel, and it might be inventive, but its still a bit grey. A patent attorney would be able to advise you - but it will cost you a lot of money.

And as pointed out by others, if you patent something you then have to defend it, else you have wasted your money doing the patenting.

You are unlikely to make a financial gain from something like this unless you are very well resourced (and you may then find that somebody else has already done something similar anyhow - there are numerous university student records and scheduling systems around the world). So you are probably better off licensing it in some form (creative commons, whatever) so that you at least have a happy warm inner glow.

For the record: IANAL. But I have done quite a few patent applications over the years.

share|improve this answer

Patenting will cost a lot of time and money to get it in place. And once you have it in place you must defend it, which also takes a lot of time / money. If you don't have a lot of time/money I think it would be best to release it under some sort of open source license as suggested by Mihai. Do you want to make money of it or just have the fame for it?

share|improve this answer
Well, both money and fame, but for me is more important fame. –  rfrm Jul 18 '11 at 14:35
There’s also the inherent question of patentability – even if local law allows software parents, the idea doesn’t sound very patentable. –  Konrad Rudolph Jul 18 '11 at 15:15
@rrm: Well you'll probably get more fame by releasing it as open source, which will encourage its adoption by many more people. For even more fame, name the software after yourself. :D –  endolith Sep 11 '12 at 14:14

License your program under an Open Source license. Either GPL, BSD, Apache, MIT or - why not - a Creative Commons license.

Or, try a Beerware license.

Some people use WTFPL but I guess this doesn't really apply here.

Anyway, patenting software is a gray area. You should contact a lawyer if it is too important.

share|improve this answer
CC generally isn't appropriate for software. But the unlicense is. –  Denis de Bernardy Jul 18 '11 at 8:46
There is CC-GPL –  Mihai Maruseac Jul 18 '11 at 8:49

Not the answer you're looking for? Browse other questions tagged or ask your own question.