Steves post made me think about the license of the DXL standard library (DXLSTDLIB).
Building a commercial application like a module exporter on the GPL library could work, if you make to separate applications: One exporter that will export the module to an XML based format using the DXLSTDLIB, this exporter must be licensed under the GPL. Then you can release another application which uses the generated XML file to generate an export of any kind.
The question is: Is it legal to publish the DXL Standard Library under a GPL license or any free software license, when it only runs in a non free environment (DOORS)? I think I might have to remove the GPL license from the library ...
The question is can I release future versions (which are in fact modified versions of the original ones) under a different license? And what license shall I use that will allow proprietary software, but forces to deliver the DXL standard library with it in source code?
Regards, Mathias
Mathias Mamsch, IT-QBase GmbH, Consultant for Requirement Engineering and D00RS
Mathias Mamsch - Mon May 24 15:25:43 EDT 2010 |
|
Re: DXL Standard Library - License SteveCooper - Tue May 25 05:08:40 EDT 2010
Mathias asked: "Is it legal to publish the DXL Standard Library under a GPL license or any free software license, when it only runs in a non free environment (DOORS)?"
The GNU GPL FAQ has this to say;
If a programming language interpreter has a license that is incompatible with the GPL, can I run GPL-covered programs on it?
When the interpreter just interprets a language, the answer is yes. The interpreted program, to the interpreter, is just data; the GPL doesn't restrict what tools you process the program with.
So I think yes, the proprietary DXL interpreter can be used to run GPL-covered scripts.
|
|
Re: DXL Standard Library - License SteveCooper - Tue May 25 05:09:24 EDT 2010
"can I release future versions (which are in fact modified versions of the original ones) under a different license?"
The GNU FAQ again:
The GNU GPL does not give users permission to attach other licenses to the program. But the copyright holder for a program can release it under several different licenses in parallel. One of them may be the GNU GPL.
So yes, you could release it under, say, the BSD license as well as the GPL. That's because you hold the copyright. However, no-one else could decide to attach another license to it.
|
|
Re: DXL Standard Library - License Mathias Mamsch - Tue May 25 05:26:42 EDT 2010
Hey Steve,
after contacting the FSF (Free Software Foundation), I can say that at least it seems no problem to them to release the library under the GPL. That far that good.
The fact that inspired me to create this library was, that to whatever client I get to in my DOORS consultancy job, they all face the same problems with DXL and they all spend a lot of money to solve them. Companies like Telelogic were deliberately NOT giving the users the possibility to get their work done, so they could sell their products. Taking the XML library as an example, this means that there should be a lot of different XML libraries out there and you would expect that people would share, but this does not happen. In this forum you read posts like "I have the code you are looking for, but sorry it is to valuable to share". I am convinced that once this library reaches its critical mass that it can break this pattern.
Creating an XML module exporter would be a great contribution for the whole DXL community - and someone will do this sooner or later and add it to the standard library. The opportunity I see here, Steve, is that we can define a standard XML export format for DOORS modules and create an exporter for this format under the GPL. The community can help you with implementing, testing, maintaining and improving this XML exporter. You can create a non-free software that uses the XML files and invokes the DXL exporter to transform them into PDF or whatever is on your mind and sell licenses for it, as long as you keep the applications clearly separated. It is a give and take.
I offer you the following: I will add a tools directory to the library (was planned for later). I will adapt the environment so that any tool in the library can be invoked seamlessly from a third party application. You convice your project leader that outsourcing the XML module export part to the community will save money in development, maintenance and improvement (e.g. export speed!). Or you can choose to implement your own version of an XML export - keep in mind though that a free XML export will come anyways - so your product will be measured by that standard.
After thinking thoroughly about the licensing I think releasing the DXL standard library under the LGPL or some less restrictive license will not accomplish the initial goal, since other companies will use it without giving back to the community.
I hope we can make "a deal" here and you guys think about outsourcing the XML export part.
Regards, Mathias
Mathias Mamsch, IT-QBase GmbH, Consultant for Requirement Engineering and D00RS
|
|
Re: DXL Standard Library - License SteveCooper - Tue May 25 05:28:26 EDT 2010
"And what license shall I use that will allow proprietary software, but forces to deliver the DXL standard library with it in source code?"
How about the Mozilla Public Licence, or MPL? Wikipedia says:
the code under the MPL may be combined with proprietary files in one program ("Larger Work"). ... The MPL treats the source code file as the boundary between MPL code and proprietary parts, meaning that a certain source file (e.g., C++, JavaScript or XUL file) is either fully MPL or fully proprietary.
The nice thing here is licensing works on the basis of files; this seems like a good match if we're talking about include files. It seems more appropriate than GPL and such, which deal with whole programs.
The way I understand it, if DXLSTDLIB were licensed under MPL, and I wanted to use, say, XMLDocument.inc, then I have to either;
(a) distribute it unmodified, with the source code and license intact.
(b) distribute an open-source, modified version of the source code.
I can't change the file and make a proprietary version, but I can write a proprietary script which refers to your file via an #include statement.
That's my understanding, but I'm not a lawyer.
|
|
Re: DXL Standard Library - License SteveCooper - Tue May 25 08:19:30 EDT 2010 Mathias Mamsch - Tue May 25 05:26:42 EDT 2010
Hey Steve,
after contacting the FSF (Free Software Foundation), I can say that at least it seems no problem to them to release the library under the GPL. That far that good.
The fact that inspired me to create this library was, that to whatever client I get to in my DOORS consultancy job, they all face the same problems with DXL and they all spend a lot of money to solve them. Companies like Telelogic were deliberately NOT giving the users the possibility to get their work done, so they could sell their products. Taking the XML library as an example, this means that there should be a lot of different XML libraries out there and you would expect that people would share, but this does not happen. In this forum you read posts like "I have the code you are looking for, but sorry it is to valuable to share". I am convinced that once this library reaches its critical mass that it can break this pattern.
Creating an XML module exporter would be a great contribution for the whole DXL community - and someone will do this sooner or later and add it to the standard library. The opportunity I see here, Steve, is that we can define a standard XML export format for DOORS modules and create an exporter for this format under the GPL. The community can help you with implementing, testing, maintaining and improving this XML exporter. You can create a non-free software that uses the XML files and invokes the DXL exporter to transform them into PDF or whatever is on your mind and sell licenses for it, as long as you keep the applications clearly separated. It is a give and take.
I offer you the following: I will add a tools directory to the library (was planned for later). I will adapt the environment so that any tool in the library can be invoked seamlessly from a third party application. You convice your project leader that outsourcing the XML module export part to the community will save money in development, maintenance and improvement (e.g. export speed!). Or you can choose to implement your own version of an XML export - keep in mind though that a free XML export will come anyways - so your product will be measured by that standard.
After thinking thoroughly about the licensing I think releasing the DXL standard library under the LGPL or some less restrictive license will not accomplish the initial goal, since other companies will use it without giving back to the community.
I hope we can make "a deal" here and you guys think about outsourcing the XML export part.
Regards, Mathias
Mathias Mamsch, IT-QBase GmbH, Consultant for Requirement Engineering and D00RS
Hi, Mathias.
I think your goal is excellent; if there were a standard XML import / export format available for DOORS, I'd definitely want to use it, and would be happy to contribute changes if I had any to make. Much of the work I have to do now would already be done. Also, I have to say that this is your code and your project, and you have the right to license it how you wish. It looks to me like really well engineered, well-documented code, and I'm grateful you are releasing it to the public.
GPL causes problems when charging customers. Neither you nor I can use DXLSTDLIB without giving away our rights. If you have done some work in your DOORS consultancy business, and sold a script that #includes a DXLSTDLIB file, then your customer can distribute that script around their organization for free, post it on the Internet, and charge other people for copies. The same thing for me; I can't use your strings::trimWhitespace() function in my project, because that stops me selling software licenses. This approach might be fine for your projects, but I can't use it for mine.
I imagine it is too limiting for lots of other folks. Let's say a developer out there has their own library; CUSTLIB.DXL. If they write this script;
#INCLUDE <CUSTLIB.DXL>
#INCLUDE <XMLDOCUMENT.INC>
// some code using both
Then they are obliged to release CUSTLIB.DXL as GPLv3. I think that is going to make a lot of people avoid using DXLSTDLIB at all.
I think, actually, that it may be useful to talk about two different projects;
-
DXLSTDLIB, analogous to C's STDLIB, describes low-level library functions which are useful for almost all programs.
-
XML Import/Export, an application which links to DXLSTDLIB and which is focused on importing and exporting a specific DOORS XML dialect.
It would be possible to license these separately. For instance, you could put DXLSTDLIB under a multi-license of Modified BSD license and GPLv3, and put the XML Import/Export under full GPLv3. This page lists the licenses compatible with GPLv3. It is worth noting that this is how GNU do things; the GNU version of STLIB is LGPL, not GPL. That means people can write C programs which
#include <stdlib.h>
without making all their C programs open-source.
This approach would support your goal of creating a GPL XML importer and exporter, and it encourages the widespread use of the DXLSTDLIB library, which may help improve code quality and contributions. Certainly, if I were using the DXLSTDLIB library and found a bug that I could fix, I'd post the patch back to you.
Anyway, again, this is your work and you can license it how you want. Thanks for releasing your hard work.
Steve.
|
|
Re: DXL Standard Library - License Mathias Mamsch - Tue May 25 10:38:34 EDT 2010 SteveCooper - Tue May 25 08:19:30 EDT 2010
Hi, Mathias.
I think your goal is excellent; if there were a standard XML import / export format available for DOORS, I'd definitely want to use it, and would be happy to contribute changes if I had any to make. Much of the work I have to do now would already be done. Also, I have to say that this is your code and your project, and you have the right to license it how you wish. It looks to me like really well engineered, well-documented code, and I'm grateful you are releasing it to the public.
GPL causes problems when charging customers. Neither you nor I can use DXLSTDLIB without giving away our rights. If you have done some work in your DOORS consultancy business, and sold a script that #includes a DXLSTDLIB file, then your customer can distribute that script around their organization for free, post it on the Internet, and charge other people for copies. The same thing for me; I can't use your strings::trimWhitespace() function in my project, because that stops me selling software licenses. This approach might be fine for your projects, but I can't use it for mine.
I imagine it is too limiting for lots of other folks. Let's say a developer out there has their own library; CUSTLIB.DXL. If they write this script;
#INCLUDE <CUSTLIB.DXL>
#INCLUDE <XMLDOCUMENT.INC>
// some code using both
Then they are obliged to release CUSTLIB.DXL as GPLv3. I think that is going to make a lot of people avoid using DXLSTDLIB at all.
I think, actually, that it may be useful to talk about two different projects;
-
DXLSTDLIB, analogous to C's STDLIB, describes low-level library functions which are useful for almost all programs.
-
XML Import/Export, an application which links to DXLSTDLIB and which is focused on importing and exporting a specific DOORS XML dialect.
It would be possible to license these separately. For instance, you could put DXLSTDLIB under a multi-license of Modified BSD license and GPLv3, and put the XML Import/Export under full GPLv3. This page lists the licenses compatible with GPLv3. It is worth noting that this is how GNU do things; the GNU version of STLIB is LGPL, not GPL. That means people can write C programs which
#include <stdlib.h>
without making all their C programs open-source.
This approach would support your goal of creating a GPL XML importer and exporter, and it encourages the widespread use of the DXLSTDLIB library, which may help improve code quality and contributions. Certainly, if I were using the DXLSTDLIB library and found a bug that I could fix, I'd post the patch back to you.
Anyway, again, this is your work and you can license it how you want. Thanks for releasing your hard work.
Steve.
Hey Steve,
with most of the things you said you are right. The idea of free software conflicts with selling licenses for software. I need to think about the idea of allowing the DXL Standard Library to be bundled with non-free software for the sake of developers who do not want to give away their rights for their own code.
You did not comment on the possibility of two separate applications for your exporter project:
One XML exporter which will put DOORS Modules (or whatever to DXL) which is released under the GPL and will be created by the community and you. The second application is your own non-free, binary only, XML transformation engine, for which you will sell software licenses to your customers. The XML transformation engine calls the GPL XML exporter over a DXL interface, which is not a violation of the GPL, since these are two separate applications.
So the XML Exporter could provide an API like this:
// ModuleExportAPI.inc
#include <lib/dxlstdlib.inc>
// this is the good stuff:
#include <lib/ModuleExport.inc> // includes XMLDocument.inc
exportModuleToXML (modToBeExported, strFilename)
Your own application could then do something like this:
Module modToBeExported = read ("/Project/Folder/ExportModule", false)
string strFilename = "C:\\myfile.xml"
#include <tools/ModuleExportAPI.inc>
which is nothing else than a batch call from DXL (in fact you could also make a DOS batch call). There is a clear separation between the two standalone applications. You would be able to sell licenses for your application and not put it under GPL, you could benefit a lot from the knowledge of the community in the development of the module export (I am sure there are quite some people who would like to help), we could maintain, test and improve the XML Exporter application together with you and we could define an XML export standard for DOORS modules.
Please comment on this solution. See, what I don't want it that one company uses the XML library, create an exporter from it, sells it to some customers, then another company takes it, creates a little different exporter from it, sells it to some more customers and in the end there are 1000 customers who each paid someone to develop an XML export, where a comparable small shared effort of some of the customers would have been enough.
Note, this does not mean that the license question is answered for me. I will think about the fact, that I might not be able to convice enough people of the "free software" idea, which forces them to give up the rights to their code. For the normal consultancy business (that I do) that is usually fine, since you only charge your customer once - whatever he wants to do with the code is up to him.
Regards, Mathias
Mathias Mamsch, IT-QBase GmbH, Consultant for Requirement Engineering and D00RS
|
|
Re: DXL Standard Library - License SystemAdmin - Wed May 26 03:08:08 EDT 2010 Mathias Mamsch - Tue May 25 10:38:34 EDT 2010
Hey Steve,
with most of the things you said you are right. The idea of free software conflicts with selling licenses for software. I need to think about the idea of allowing the DXL Standard Library to be bundled with non-free software for the sake of developers who do not want to give away their rights for their own code.
You did not comment on the possibility of two separate applications for your exporter project:
One XML exporter which will put DOORS Modules (or whatever to DXL) which is released under the GPL and will be created by the community and you. The second application is your own non-free, binary only, XML transformation engine, for which you will sell software licenses to your customers. The XML transformation engine calls the GPL XML exporter over a DXL interface, which is not a violation of the GPL, since these are two separate applications.
So the XML Exporter could provide an API like this:
// ModuleExportAPI.inc
#include <lib/dxlstdlib.inc>
// this is the good stuff:
#include <lib/ModuleExport.inc> // includes XMLDocument.inc
exportModuleToXML (modToBeExported, strFilename)
Your own application could then do something like this:
Module modToBeExported = read ("/Project/Folder/ExportModule", false)
string strFilename = "C:\\myfile.xml"
#include <tools/ModuleExportAPI.inc>
which is nothing else than a batch call from DXL (in fact you could also make a DOS batch call). There is a clear separation between the two standalone applications. You would be able to sell licenses for your application and not put it under GPL, you could benefit a lot from the knowledge of the community in the development of the module export (I am sure there are quite some people who would like to help), we could maintain, test and improve the XML Exporter application together with you and we could define an XML export standard for DOORS modules.
Please comment on this solution. See, what I don't want it that one company uses the XML library, create an exporter from it, sells it to some customers, then another company takes it, creates a little different exporter from it, sells it to some more customers and in the end there are 1000 customers who each paid someone to develop an XML export, where a comparable small shared effort of some of the customers would have been enough.
Note, this does not mean that the license question is answered for me. I will think about the fact, that I might not be able to convice enough people of the "free software" idea, which forces them to give up the rights to their code. For the normal consultancy business (that I do) that is usually fine, since you only charge your customer once - whatever he wants to do with the code is up to him.
Regards, Mathias
Mathias Mamsch, IT-QBase GmbH, Consultant for Requirement Engineering and D00RS
The idea of free software conflicts with selling licenses for software.
Not at all, at least not from the copyright holders' perspective. Google a bit on "Dual licensing". This is the licensing model MySQL used to go from a 2-person startup to a $1B sell-off in less than 15 years.
|
|
Re: DXL Standard Library - License Mathias Mamsch - Wed May 26 05:56:38 EDT 2010 SystemAdmin - Wed May 26 03:08:08 EDT 2010
The idea of free software conflicts with selling licenses for software.
Not at all, at least not from the copyright holders' perspective. Google a bit on "Dual licensing". This is the licensing model MySQL used to go from a 2-person startup to a $1B sell-off in less than 15 years.
Hmmm ... never thought about that one ... thats a nice idea. Thanks for the hint! Regards, Mathias
Mathias Mamsch, IT-QBase GmbH, Consultant for Requirement Engineering and D00RS
|
|
Re: DXL Standard Library - License GerhardS - Mon Nov 22 10:07:25 EST 2010 Mathias Mamsch - Wed May 26 05:56:38 EDT 2010
Hmmm ... never thought about that one ... thats a nice idea. Thanks for the hint! Regards, Mathias
Mathias Mamsch, IT-QBase GmbH, Consultant for Requirement Engineering and D00RS
Mathias,
first of all: thanks for the great code. However, while following this discussion, it's not completely clear to me, what I can do with it, and what I can't.
I'm currently imagining two situations:
(1) Developing a product, which might be sold to any customer who is interested in. I understood, that I cannot use your library for this purpose, except physically separating the relevant program parts.
(2) Developing a customer-specific solution, which might use the library as a small part of a big picture, while leaving it unmodified, including the file headers. According to company-specific conventions, the file name and the formatting may change, and there may be additions to the file header. The complete solution would be property of the customer, who would use it internally, and who would not sell it to others.
I'm now wondering, if (2) is possible with your license. And if not, which constraints must be fulfilled to make it possible.
Regards,
Gerhard
|
|
Re: DXL Standard Library - License Mathias Mamsch - Mon Nov 22 16:47:50 EST 2010 GerhardS - Mon Nov 22 10:07:25 EST 2010
Mathias,
first of all: thanks for the great code. However, while following this discussion, it's not completely clear to me, what I can do with it, and what I can't.
I'm currently imagining two situations:
(1) Developing a product, which might be sold to any customer who is interested in. I understood, that I cannot use your library for this purpose, except physically separating the relevant program parts.
(2) Developing a customer-specific solution, which might use the library as a small part of a big picture, while leaving it unmodified, including the file headers. According to company-specific conventions, the file name and the formatting may change, and there may be additions to the file header. The complete solution would be property of the customer, who would use it internally, and who would not sell it to others.
I'm now wondering, if (2) is possible with your license. And if not, which constraints must be fulfilled to make it possible.
Regards,
Gerhard
First of all, my understanding is, that you are allowed to create a product from the GPL protected DXL standard library. You are also allowed to sell that product, but if so, you need to sell your product to the customer under the GPL, meaning you must give the customer the complete source of your product and grant him all rights of the GPL, meaning he can publish the source code (maintaining the license of course) if he chooses to, or give away/sell it to other customers (again under the GPL) and modify it as he likes it.
You could also for example develop an XML module export and give that exporter away under the GPL (as a separate free product). This exporter can have a defined interface, from which other software can invoke it, so that there is a clear separation. With this exporter you can ship your own proprietary product (e.g. a data exchange solution), that will work with the XML files generated from the XML module export. This product could automate the XML exporter using the defined interface, as long as there is a clear separation between the two products. In this case you need to make sure that when shipping the product, you include a clear descriptions of the GPL parts and their license.
Additionally we can talk about granting you the permission for creating a closed source product using the XML library, if you are willing to commit something useful to the standard library (e.g. add a XML module export functionality to the DXL standard library, i.e. exporting all module information to an XML). This way all parties would win.
Regards, Mathias
Mathias Mamsch, IT-QBase GmbH, Consultant for Requirement Engineering and D00RS
|
|