I'm considering taking an old PHP4 web application and re-writing it using ASP.Net MVC4 in C#.

The old application was licensed under GPL2.

I'm unsure how this affects my new application, if at all. I obviously can't directly copy any of the code from the old PHP application to my .Net application as the two languages are totally different.

Equally, the old application wasn't even OO in nature, nor did it follow any kind of design pattern (i.e. MVC).

In essence, my new application will only be taking the "ideas & features" of the original application. Even the database schema will be significantly different.

Would I still have to GPL my new application or is it considered a new work where I choose a license myself?


As the link in the comments shows, this is borderline acceptable. It can be made safe by a cleanroom approach: make a specification, listing every idea and feature that you will copy. Your new code will implement the specification, and therefore not be a copy of the old code.

| improve this answer | |
  • Since I'm the only developer on the project it can't possibly be a cleanroom because I was one of the developers on the original. Since it's a completely different technology stack, and therefore incompatible with the original would that not be enough to justify a unique work? – Hades Jul 18 '13 at 13:19
  • @Hades. No, it will now. – Philip Jul 18 '13 at 15:06
  • Will now what ? – Hades Jul 18 '13 at 16:41
  • @Hades. Sorry about that. "Not". "No, it will not". No that will not be enough to claim it is a unique work and not derived from the original. If you are the only developer, and you've examined the GPL code, you cannot make a copy of it sans license. The cleanroom approach by MSalters is a grey case, but then again, so is everything about IP law. But it will help. – Philip Jul 22 '13 at 17:56
  • @Philip: The cleanroom approach isn't grey at all. Its validity has held up in court. But I agree with you that Hades can't use that. – MSalters Jul 23 '13 at 7:07

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