there is one more goal wich gives the “modular System” an advantage (in my mind…):
Modules keep the basic code tall and each User can install only the parts he need.
(L)GPL3 is technically not compatible with (L)GPL2. The only exception is when you use (L)GPL2+, which allows higher versions than version 2 too.
According to http://www.gnu.org/licenses/gpl-faq.html#AllCompatibility GPLv3 can be mixed with LGPLv2, LGPLv2+ and LGPLv3 and the whole work then is under GPLv3. Actually all combinations are allowed except of: GPLv2 and (L)GPLv3
We had this conversation a couple of years or so ago, the author would not consider changing his licence, he picked one (GPL3) that could not be used with FreeCAD at the time, would not likely ever be integrated into FreeCAD master, he never really dealt with the licence issue properly at the time, he pretty much just ignored us and went ahead with GPL3. It was a controversial and in many circles unpopular licence that has been the death of some other projects (see opensource dxf for example). Juergen, I think it was but may not have been, said that licence exceptions for specific applications/projects are not clearly legal in at least some jurisdictions. Also the openvoroni project does not look very active, it seems to have had a lot of work 3 years ago and very little lately.
FreeCAD is supposed to allow plug ins and extensions of many licences including proprietary licences, the basic problem with GPL is that it says that if you want to link to it then you have to also use a GPL compatible licence for you code. Open source ethics become complex when you consider the ethical debate “should your choice of licence be able to force others to have to also use your or a similar licence?” BSD licence people believe they are the most open and free because they basically say “here is the code, do whatever you want with it” Where as GPL people believe they are more open and free because they try to permanently protect the open status of the code by saying something like “if you want to link to our code you have to also give away your code”. LGPL could be considered as being somewhere in the middle.
In the past underlying geometric kernel FreeCAD uses had a custom licence. There were issues involved preventing the projects like FreeCAD to use GPL libraries due to licence incompatibility. There were a lot of drama in the media on how GPL licence is the cause and therefore GPL licence is preventing the projects like FreeCAD to use GPLv3 licensed DWG library. For FreeCAD this actually wasn’t true as the licence of the underlying geometric kernel prevented that. It was/is true for LibreCAD as it was/is GPLv2 licensed. Anyway what changed is underlying geometric kernel FreeCAD uses changed its licence to be compatible with GPL and therefore nothing is preventing FreeCAD to use GPLv3 licensed libraries legally anymore.
Current situation:
It was decided FreeCAD should be LGPLv2+ licenced as that allows 3rd party developers to produce among other options GPLv3 or proprietary licensed modules for FreeCAD. Therefore this is the current situation and policy regarding FreeCAD. It probably comes down to personal opinion in the end if that is good or bad or if the licence should change or not. There probably can never be definitive answer to this question and i am guessing in the long run it could happen the licence would change (not only once) to adapt to challenges introduced at that point in time. What i am guessing is LGPLv2+ licence policy will stay for a while.
Therefore including GPLv3 licensed library in FreeCAD master code would effectively turn FreeCAD in GPLv3 licensed project. There probbaly is a way on how to manage that and providing just LGPLv2+ licenced “core” but it would probably be quite inconvenient and hard to maintain task on the long run.
Work to be done:
As FreeCAD is FOSS project it can’t avoid GPL software to be used in combination with it as that makes little sense. Therefore indeed clear policy should be made on how to deal with this.
Current policy i guess is this:
If you want to include 3rd Party Library in FreeCAD master code:
It should be maintained.
It would be best if it is LGPLv2+ licenced.
Using libraries that are not maintained cause issues on the long run. And before all it should be established if it makes sense to embed the library in FreeCAD source code in the first place or would it be better to use it as standalone library in the first place.
For convenience purposes in the future there could be FreeCAD bundle builds made containing 3rd Party Libraries + FreeCAD master code packed in single “installer”.
That is why i said probably the most straightforward task for you would be to create 3rd party module with additional tools and make it easy for FreeCAD users to install it. Doing that you can use GPLv3 licensed libraries and if some underlying changes would need to be done to FreeCAD source code that can still be done independently under LGPLv2+ licence. But as for your module you are free to choose the licence.
As far as i know these are not modules that “integrates into an existing workbench”, most of them are workbenches in their own right..
I am afraid I am explaining myself poorly.
I guess what I am looking for is, if it is possible to dynamically hooking into(making a new menu function as a module) the path module without changing the init.py or any other part of the Path module code.
If it’s a 3rd Party module probably the policy should be not to do that and instead do everything in 3rd Party module. If the user wants a tool from 3rd Party module located in Path WB toolbar Tools → Customize is your friend.
Actually i went back and re-read the whole thread again. I wanted to take a look at the module and it was nowhere to be found. After i noticed this:
Well i wasn’t expecting that.
@dyspd i was just explaining on the likelihood of GPLv3 code to be merged in FreeCAD master. That isn’t likely to happen but as for you violating any licence with your work that clearly isn’t happening! Feel free to continue you work and i apologize if you where for a second under the impression you are violating any licence with your work. And you don’t have to create your own workbench if ATM you don’t find that convenient. Just continue to extended Path WB functionality as you started to and the end user will know what to do by reading the install instructions.
Actually I was as I had LGPL in headers and AFAIK you cannot depend on GPL code or reuse GPL code in LGPL, as you are granting a lesser license than the original author. And I admit to shamelessly copying and modifying code from code examples to get it working, so around 50% of one of the files was Anders code. Ergo I was in violation of GPL3, and have changed the headers to reflect that now.
Shapely is another library that seems useful for pocketing operations. It’s used in blendercam and has a BSD license. Anyone have any experience with it?
I am not familiar with libraries mentioned and their capabilities but if done as 3rd Party FreeCAD Module i don’t think it would make much sense to avoid GPL licenced libraries. If they do the job good it makes sense to use them. True the work won’t be merged in FreeCAD master but then again FreeCAD would gain the best FOSS has to offer.
I mostly agree but ‘best’ is a judgement call. For new users, best might mean ‘easiest to learn’. For more experienced users, it means the thing that gives the best result. We need a balanced approach to core functionality and add-ons. I think we should strive to have a Path workbench that:
has core functionality that does the most simple, common operations well. I’m referring to 2.5D ops like profiling, pocket clearing, engraving, and drilling. Those four cover 80% of what most hobby level CNCers need.
Let’s users install add-ons to add more complex operations. Perhaps even including commercial fee-based high-efficiency machining strategies.
Makes it relatively easy for developers to build those add-ons and extend Path functionality seamlessly.
Yes i agree and the best solution would be to have as much activity as possible focused on FreeCAD core CAM efforts. But in reality proprietary and GPL licensed code won’t make it into FreeCAD master. Therefore i guess some sort of policy and guideline that encourages that work wouldn’t hurt.
Help always appreciated on extending FreeCAD core CAM efforts. The works needs to be done under the suitable licence.
If there is quality proprietary or GPL based library out there and somebody is interested go ahead and make the 3rd Party CAM module for FreeCAD. That work won’t make it in FreeCAD master but in the end it is better to have the option to use the 3rd Party module compared to not having the option at all.
Obviously i am leaning and hoping to have as much FOSS 3rd Party CAM modules available for FreeCAD in the future as there are libraries out there. Therefore if somebody makes (GPLv3 licenced) 3rd Party CAM module for FreeCAD with just one useful tool in it that is better compared to not having it.
And as we seen with the geometric kernel FreeCAD uses licences can change in the future if there is interest to change them. Anyway what i am trying to say is with all this progress i will probably need to get some dedicated hardware to start experimenting with FreeCAD CAM capabilities.
Current FreeCAD licence doesn’t prevent you doing that and it doesn’t need to be re-licenced for you to create a fork of path module and add GPLv3 licenced code to it.
I wouldn’t consider relicensing it, since we went through a lot to get to this point, but as I mentioned in the other, related post- we could use Yorik’s DXF library trick for this. He has the Draft workbench pull another lib that is GPLv3, when the user authorizes it, the first time it’s needed.
You are asking the wrong people to change licences. You should ask OpenVoronoi. They were told a long time ago that using GPL3 would stop the code being able to be incorporated into FreeCAD, the author did not seem to care…hence his project is not used. It is a sad waste in my opinion, but his choice of that licence would have the effect of forcing others’ code to in effect have to use it as well, which is not reasonable.
Well the way i understand it @jCandlish can re-licence the code to GPLv3 (without asking) as the LGPLv2+ licence permits that? Therefore you as copyright holder don’t need to create dual licences (one for FreeCAD and one for project @jCandlish is working on). He can do that himself as the LGPLv2+ licence already granted him that permission. Sure i could be wrong but this is how i understand it.
As for the work made by @jCandlish and work done by other developers of the libraries he will use for that work to be merged to FreeCAD master it would need to be re-licenced to LGPLv2+ by all copyright holders.
Therefore if somebody will use GPLv3 licenced code 3rd Party (sub) module needs to be created. If in the future a lot of modules like that would be made there is nothing preventing anybody to create aggregation work (compilation/bundle) to ease the install for the end users.
Therefore i would say focus on development efforts and not licences for now.
Well to be honest we are making a big deal out of something that isn’t preventing anybody to do its work. We could just as well have the same discussion if somebody creates proprietary module for FreeCAD and if that is OK or not. In the end FreeCAD choose to stand in the middle ground for now an that is it. Therefore imagine OpenVoronoi changes the licence to LGPLv2+ and what about all other libraries out there FreeCAD could potentially use?
Therefore instead of talking about the licences i would say first make FreeCAD and OpenVoronoi actually do something together and maybe that will lead to licence changes in the future or not as changing the licence actually will not be needed anymore to get the job done.