Techrights talk:Community Portal

Hi,

I have made small contributions to OSS and planning to do more, but nothing major. Recently I have discovered a new language which I found to be nearly perfect. This language is Scala. I am mostly interested in writing libraries and releasing them with LGPL or Classpath Exception. However Scala supports both Java and dotNet runtime. And I really hate the idea of my code running on dotNet. Personally I would like to use some form of licensing restriction against mono and dotNet (for both dynamic linking with dotNet and ports to dotNet). The GNU GPL is specifically a non-discriminatory license (you can't prohibit interoperability with anything). However I think it can be used to combat dotNet and mono (not just for Scala but in general).

I believe GPLv3 is outright incompatible with mono and dotNet due to the patent requirements (please tell me if I'm wrong on this one). However LGPL or GPL with classpath exception are less restrictive and allow linking with software under any license. Here is what GPL with Classpath Exception looks like:

* This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * * CLASSPATH EXCEPTION: * Linking this library statically or dynamically with other modules is making * a combined work based on this library. Thus, the terms and conditions of * the GNU General Public License cover the whole combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent modules, * and to copy and distribute the resulting executable under terms of your * choice, provided that you also meet, for each linked independent module, * the terms and conditions of the license of that module. An independent module * is a module which is not derived from or based on this library. If you modify * this library, you may extend this exception to your version of the library, * but you are not obligated to do so. If you do not wish to do so, delete this * exception statement from your version.

So the solution would be to release a library under GPLv3 with Classpath exception while modifying the excetion to exclude linking with dotNet and mono. So it would look something like this:

* This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * * CLASSPATH EXCEPTION: * Linking this library statically or dynamically with other modules is making * a combined work based on this library. Thus, the terms and conditions of * the GNU General Public License cover the whole combination. * * As a special exception, the copyright holders of this library give you * permission to link this library with independent modules to produce * an executable, regardless of the license terms of these independent modules, * and to copy and distribute the resulting executable under terms of your * choice, provided that you also meet, for each linked independent module, * the terms and conditions of the license of that module. An independent module * is a module which is not derived from or based on this library. If you modify * this library, you may extend this exception to your version of the library, * but you are not obligated to do so. If you do not wish to do so, delete this * exception statement from your version. * * NOMONO: The exception stated above does not apply when linking with .NET framework * or any implementation of .NET framework (such as Mono). You can link with .NET or Mono * only under the terms of GPLv3 (or any later version of GPL). If you modify the library * to work with .NET or Mono you cannot extend the Classpath Exception to your version of * the library. You can port the library to .NET or Mono only under the terms of GPLv3 * (or any later version of GPL).

The legal language may need work, also it must be studied in more details whether dotNet is incompatible with GPLv3 and to what extent. But the idea is that it would be either impossible to distribute the library with dotNet and mono (if GPLv3 is incompatible) or at the very least less feasible (especially in commercial projects).

Giving developers a license that can combat mono could slow down or stall it's adoption. Also it would give developers a strong voice of protest against mono in particular and microsoft in general. And even more so, it would prompt OSS developers who use any libraries with such license to find out what is mono and why it is being excluded, exposing the situation to more people in the process.

I would love to hear your take on this.