t-oster / VisiCut

A userfriendly tool to prepare, save and send Jobs to Lasercutters
https://visicut.org
Other
228 stars 114 forks source link

Non-free components in VisiCut #378

Closed chca42 closed 7 years ago

chca42 commented 8 years ago

Hi, first of all: Thanks a lot for the great effort to make lasercutting available to the free world. However, I noticed that last year, a proprietary library has been included in VisiCut (PngEncoder by ObjectPlanet, Inc.). According to the code (VisiCut/src/com/frochr123/helper/PreviewImageExport.java), the reason for this step are performance issues with the free default library from javax. While some people may prefer higher performance, others care more about freedom and would at least have the option to get a completely free program (on free licenses: https://www.gnu.org/licenses/license-list.html). Additionally, the removal or replacement of proprietary components would allow the inclusion of VisiCut in GNU/Linux distribution like Debian (and their derivatives).

I would be willing to help with finding alternative code, e.g. to close the performance vs. freedom gap, if feasible.

Last but not least: Are there other non-free components I missed?

Best regards, Christian

pelrun commented 8 years ago

I agree it shouldn't be there, especially since it's not actually used for Visicut proper, only the projector output.

And I see the LICENSE file is woefully incomplete. I've done a quick search on nearly everything in the lib directory, and I haven't found anything else that isn't free, but it needs to be explicitly documented - if only so we know where everything comes from.

pelrun commented 8 years ago

When I get a chance I'll see if I can replace it with PNGJ (https://github.com/leonbloy/pngj).

t-oster commented 8 years ago

@FroChr123 is the projector feature actually used somewhere or was it merely a scientific project? Do you see an easy way to make it optional as sort of a plugin architecture?

pelrun commented 8 years ago

Ugh, fixing the licensing requirements for all those libs was a pain. LLC will need it as well, but I'm not going to tackle it immediately.

chca42 commented 8 years ago

Thank you very much for your huge effort.

Regarding the png library: I did a temporary quick replacement with javax (which is trivial) to remove the proprietary component here: https://github.com/chca42/VisiCut/commit/b10298862667a4d248f7e5329b6a1a535b1b94a6 - if it is not performance critical, this could also be a quick fix.

FroChr123 commented 7 years ago

Hi everyone and sorry for the late response.

There are two relevant things about that: It is true that this PNG library has unclear license conditions. That is the reason why I asked the developers about that before I included it. They told me that it would be perfectly fine to redistribute the JAR file of that library - they just wanted to protect the source code if I remember correctly. Of course that means that the soure code of this library is not accessible right now.

Nevertheless, this feature could be deactivated at the moment or replaced with the slower / original conversion procedure as mentioned in the previous comment. At the time of development this was an idea for an additional feature and the implementation for it works as intended - but the hardware setup for that feature is a bit more complicated, which is the reason why it was not really used.

chca42 commented 7 years ago

It would probably be best just to apply the small changes I proposed. It would remove the dependency and thus make VisiCut completely free software while retaining all functionality. If there would be performance issues in future versions that make use of this feature, there would be an incentive to actually look for free alternatives with acceptable performance. Currently, imho, the inclusion of the library is just a completely unnecessary freedom sacrifice ;-)

mgmax commented 7 years ago

@chca42 Could you rebase your changes and create a pull request? Your commit does not merge cleanly, probably because it's from quite a time ago.

chca42 commented 7 years ago

@mgmax I have now created a pull request: #419

chca42 commented 7 years ago

Thanks for merging!