Any Storm In A Port?
June 12, 2009 3:10 PM   Subscribe

Can I port an open-source project to another language without violating its BSD License?

I'm writing a Twitter client and using a great open source library that's hosted at Google Code. Problem is that it's written in c#.

I'd like to port it to VB.Net, both for my own benefit and so that other VB developers who don't have C# chops can use it. m I also plan to host at Google Code under the BSD license.

I've contacted the project's founder but I have heard no reply.

Questions:
1. With his code released under BSD, can I port it without his express permission? I would, of course, credit his original work.

2. Does the BSD license give him the ability to "pull the plug" on my project since it's based on his work?

3. Does this sort of thing constitute a "fork"?

4. Am I asking for legal trouble or just plain drama if I proceed without his permission?

Thanks for your input.
posted by DWRoelands to Computers & Internet (12 answers total) 1 user marked this as a favorite
 
IANAL.

From the BSD:
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the name of the nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
This says to me that you can modify the source and/or binary and redistribute as long as you 1) release your work under the same BSD License, whether in source or binary form, and accompany your release with the necessary information, and 2) don't use the other project or its founder for any sort of promotion of your project.

Lawyers, please correct me.
posted by The Michael The at 3:17 PM on June 12, 2009


What The Michael The said. On the other hand, can't you use a C# library from VB.net. Isn't that part of the point of the CLR?
posted by Good Brain at 3:27 PM on June 12, 2009


Best answer: Answers to your questions are 1) yes, 2) no, 3) yes and 4) no.

Just do the port, slap on the BSD license where it was before and add your name and date to the copyright line after the original author's.

What the BSD license basically says is that you can do whatever you want with the code (copy, modify, both) so long as you leave the copyright statement and the text of the license itself alone. This prevents someone removing the disclaimer of warranty and from fraudlently claiming ownership of the copyright.

You would add your own name because you own the copyright to the modifications of the program.

(I'm Not A Lawyer but I've written the occasional bit of open-source software.)
posted by suetanvil at 3:31 PM on June 12, 2009


Best answer: 1. You don't need the programmer's permission; the project's BSD license already explicitly grants you all the permission you need. Letting him know would be considerate, though.

2. Absolutely not. He could challenge things you were doing that violated the license, if there were any, and insist that you come into compliance with the license. So long as you obey the terms of the license, he can't complain. That's a big part of the point. (Well, he can complain, and if you look for them, you can find instances of bizarre complaints and offenses taken and claims of bad sportsmanship. But these things aren't common relative to the amount of derivative work that goes on.)

3. Nah. A fork is when somebody is so fed up with the management or direction of a project that they start maintaining their own version. A key part of this is that the upstarts are building on the same codebase. This is rewriting.

4. There's a theoretical potential for drama, but only if the programmer is crazy. I'd risk it.
posted by Zed at 3:40 PM on June 12, 2009


Do you even need to respect the license?

Not to be anti-open source, far from it. But my understanding is that your plan is to "rewrite" the source code from scratch in a different language correct? In other words you're not using his code at all, except as a template for your rewrite.

I'm not sure the BSD license (as my non-lawyer mind reads it) covers this at all.

You may want to credit him but I'm not sure you MUST include the BSD attribution. Usually while these things start as mapped straight across - these things start to diverge (for example you'll likely have to use some different libraries etc.
posted by bitdamaged at 3:49 PM on June 12, 2009


Response by poster: can't you use a C# library from VB.net. Isn't that part of the point of the CLR?
Yes, I can. However, I want to extend the library's functionality, and C# isn't my strong suit.

Thank you all!
posted by DWRoelands at 3:58 PM on June 12, 2009


You didn't ask, so I didn't go there, but bitdamaged's point occurred to me, too. Given that you're rewriting a library in a different language, this could be described as an independent implementation inspired by an existing project's API. That seems like fair game for releasing under whatever terms you feel like.

Since you seem to like the idea of releasing it under a BSD license anyway, there's no harm done by attribution and describing your project as derivative of the other.
posted by Zed at 4:03 PM on June 12, 2009


If the library was written in a proper object model, you should be able to extend a C# project in VB. If you're having trouble understanding the code, you can always load up the assembly in Red Gate's .NET Reflector and look at the code in VB (!!).

NOTE: IANAL, I am a professional software engineer who routinely writes code in C# to be used/extended by VB.NET programmers.
posted by plinth at 5:44 PM on June 12, 2009


Best answer: Not to be anti-open source, far from it. But my understanding is that your plan is to "rewrite" the source code from scratch in a different language correct? In other words you're not using his code at all, except as a template for your rewrite.

and

Given that you're rewriting a library in a different language, this could be described as an independent implementation inspired by an existing project's API. That seems like fair game for releasing under whatever terms you feel like.

This would be true if the OP is doing a black box rewrite of the artifact in question. That is, if he never looks at the code in question and simply reimplements the functionality. Arguably, it's possible to to a clear box rewrite that is legit, so long as the OP goes out of his way not to derive his code from the example code--i.e. does not plagiarize.

In practice, however, it's trivially easy to argue that a reimplementation of an existing library, the source code of which the author has access to, is a derivative work. As a derivative work, the original copyright owner holds significant rights over what can be done with it.

However, the whole point of the BSD license is to grant to you, the user, broad and open rights to do with the code nearly whatever you will. Basically, the only requirement is that if you redistribute the modified source code, that it be available under the BSD license.

So, to answer your question:

You can do exactly what you want to do. Especially if your intent is to redistribute it as open source, there's nothing stopping you.

So, your answers are:

1) You can do whatever you want without his express consent. The BSD license is his express consent.

2) No. It's a BSD licene, not the GPL. Even if you don't open source the resulting code, and only distribute binaries, you're still in compliance. This is why the TCP/IP stack in Windows was taken from the BSD operating system: they could use it with essentially no strings attached. (If you go look at the headers for socket.h or inet.h on Windows, they have the BSD copyright notice.)

3) Not really. A fork is taking the same codebase in a different direction--like a fork in the road. It's a reimplementation or a port, which is parallel (not diverging) from the original project. While forks are discouraged, ports are encouraged.

4) Not even in the slightest. The whole point of using a BSD license is to allow people like you to do things like you want to. If he wanted to express any control over how you use his code, he wouldn't have chosen a BSD license. People choose a BSD license because they almost want their work in the public domain, but want to retain their name on it and get credit--there are other rationale, but amongst individuals, that's the general sentiment.

Oh, and IANAL, but I am an open source fanatic. And what the licenses mean is pretty much plain as day, IMO. (Except the GPL and its linking clause, which is debatable, despite the intention being clear.)
posted by Netzapper at 5:46 PM on June 12, 2009 [1 favorite]



Do you even need to respect the license?

Not to be anti-open source, far from it. But my understanding is that your plan is to "rewrite" the source code from scratch in a different language correct? In other words you're not using his code at all, except as a template for your rewrite.


You need to understand what derivative works are before you give people any more copyright advice.
posted by rodgerd at 6:05 PM on June 12, 2009 [1 favorite]


On further consideration, I want to respond to this:

Just do the port, slap on the BSD license where it was before and add your name and date to the copyright line after the original author's.

I wouldn't do it that way. If I wrote a library (which I have), and then you went and rewrote it, but put me on the copyright, I'd be very upset. Why? Because if it's a buggy piece of shit, my name would now be associated with it despite not having anything to do with that implementation.

A better approach would be to use a standard BSD copyright notice, with only your name, and a line right after the copyright notice to the effect of: "This library is based on JLibFoo, available under the BSD license, copyright by Original Dude. The original library can be found at www.originaldude.com/JLibFoo."

I'm not a lawyer, I'm just a programmer who wants credit for my work, and not to be credited with other people's shoddy work.
posted by Netzapper at 10:36 PM on June 12, 2009


You can do it. I'd suggest coming up with a new name for it, possibly related to the original name but more different than tacking on a VB suffix.
posted by Pronoiac at 1:04 PM on June 13, 2009


« Older How to make rubber contract or shrink   |   Working with Kids Newer »
This thread is closed to new comments.