Coder Social home page Coder Social logo

Have ported to Haxe about libspiro HOT 32 CLOSED

fontforge avatar fontforge commented on September 17, 2024
Have ported to Haxe

from libspiro.

Comments (32)

JoesCat avatar JoesCat commented on September 17, 2024

Hi @nanjizal,
Thanks for catching our attention - very much appreciated.

If there are any patches you would like to push upstream, please consider doing so. It may improve libspiro itself, and can help make it easier to progress without dealing with fragmenting directions.

from libspiro.

nanjizal avatar nanjizal commented on September 17, 2024

Joe
Thought you might be interested I have created demo use with Kha ( WebGL, Android, IOS etc.. ) and also with Haxe javascript WebGL ( or SVG, Canvas ) using my experimental library justTriangles eg:
WebGL codepen online demo
Demo githubs are linked in the readme.
hxSpiro
The experimental code to allow GPU graphics is used elsewhere so MIT licensed. I am not really expert in use of Spiro, if you have suggestions on how specifically I should improve the demo's please let me know. Really sad Levin does not allow MIT on Spiro as I can see the library being used on many games if the license was more permissive :(
Best Nanjizal

from libspiro.

nanjizal avatar nanjizal commented on September 17, 2024

If you would like me to create a Swing Java demo version using hxSpiro, or other Java approach please let me know, or could try something for one of the other Haxe targets... PHP7, C#, Lua, Python etc... although no doubt the Kha version should have quite a bit of coverage targeting Unity, Flash, Java, c++, hashlink etc...

from libspiro.

nanjizal avatar nanjizal commented on September 17, 2024

Really you should update the readme

Two methods of using libspiro in your programs

Since you can now Spiro in many common languages via the other repositories above and hxSpiro.

from libspiro.

JoesCat avatar JoesCat commented on September 17, 2024

from libspiro.

JoesCat avatar JoesCat commented on September 17, 2024

libspiro is at 1.0+, closing this issue.

from libspiro.

nanjizal avatar nanjizal commented on September 17, 2024

Raph has allowed me to release under MIT.
https://github.com/nanjizal/hxSpiro2019/
Haxe now allows functions outside classes, this is now the latest Haxe version of Spiro and licensed as MIT, will work in js, java, python, c++ etc... it lacks examples, but if anyone is interested please contact me and I will assist.
https://github.com/nanjizal/hxSpiro2020/

from libspiro.

JoesCat avatar JoesCat commented on September 17, 2024

Hi @nanjizal,
I took a quick look at hxSpiro2019, and seeing it originated from 2016 code, you still need to retain the GPL3+ license. https://github.com/nanjizal/hxSpiro2019/issues/1
your 2020 code also has the same problem - originating from libspiro 2016 code too.

from libspiro.

davelab6 avatar davelab6 commented on September 17, 2024

from libspiro.

JoesCat avatar JoesCat commented on September 17, 2024

Understood.
However, this code is still based on libspiro code - not spiro code.

from libspiro.

jamadagni avatar jamadagni commented on September 17, 2024

from libspiro.

nanjizal avatar nanjizal commented on September 17, 2024

My port was never based on libspiro it was derived from multiple language implementations of Spiro and significantly changed to take advantage of many Haxe features it's a different programming language, if Raph is happy for me to release a MIT version, and I am happy then I think that's fine.
This seemed quite interesting on the topic..
https://opensource.stackexchange.com/questions/9557/upstream-re-licensing-project-from-gpl-3-0-to-mit-allowed

from libspiro.

ctrlcctrlv avatar ctrlcctrlv commented on September 17, 2024

Here is the history as I understand it.

In around 2007, @raphlinus (Raph Levien) published C code online which implemented Spiro. His code however was not easily linked to as a library. Its main purpose was running the GTK 1 plate application.

George Williams, who at that time was still around and actively developing FontForge, took a liking to the code and made it optionally linkable as a library in FontForge. To achieve this he made many changes to the then GPL 2 licensed code.

Raph changed the original code to MIT.

George Williams is no longer contactable to my knowledge. Meaning the code is not relicensable. It is without doubt that Williams would be very happy to relicense the code in my mind. But this is not a legal argument.

So, anything based on libspiro must be GPL; anything based on Raph's Spiro, MIT or GPL or any compatible license.

Please feel free to correct me if I'm wrong.

from libspiro.

ctrlcctrlv avatar ctrlcctrlv commented on September 17, 2024

Oh and of course let's not forget all the GPL2/3 licensed changes made since then by @JoesCat

from libspiro.

nanjizal avatar nanjizal commented on September 17, 2024

removed

from libspiro.

ctrlcctrlv avatar ctrlcctrlv commented on September 17, 2024

Hi I'm sorry I don't think you needed to remove it and I think you're blaming the wrong person here

This isn't Joe's fault. It's nobody's fault that George is no longer contactable. He can't legally change the license of this code because George isn't here to say that's okay.

If you don't want to accept the GPL I don't know what to tell you, I think George is still alive you could try to contact him

I don't think Joe would have a problem with relicensing. George is the one that we can't contact

from libspiro.

nanjizal avatar nanjizal commented on September 17, 2024

hxSpiro2019 was released to provide MIT without examples or motivation for me to create some it's probably not going to be used, so it was removed under practical grounds.
hxSpiro is still online and has example code. Perhaps hxSpiro JVM may run faster than libspiro java version, if you run into compiler errors getting setup against latest Haxe then I can take a look but not working in software these days.

from libspiro.

ctrlcctrlv avatar ctrlcctrlv commented on September 17, 2024

I see. I'm sorry that you were under this impression but I just want you to know that Joe is not your enemy here. It is an unfortunate effect of history that this repository is GPL and nothing else, and if you do manage to reach out to George and if he does agree to come on here and write something to that effect I imagine Joe would be happy to do the same for his contributions. But I have not heard from George now in many years and I don't know when is the last time anyone has heard from him.

from libspiro.

nanjizal avatar nanjizal commented on September 17, 2024

It was based mostly on the js and c# which both did not have GPL license when originally I started porting, I found this java version not really cleanly enough structured to port easily, and only useful for examples. My code was more a port of the algorithm the actual code structures were widely adjusted, but there is no point in code that has uncertain MIT status. I could probably port Raph's Python code now I understand a bit more python but I know it takes a lot of time, and spiro is quite problematic to create curves with anyway.

from libspiro.

ctrlcctrlv avatar ctrlcctrlv commented on September 17, 2024

I very much disagree with the assertion that Spiro is difficult. Absolutely if you do not understand how it works and the different types of points and what's available to you you are going to struggle. But I use it in every single one of my fonts not even joking. Some of my fonts I start with a Spiro and then I go over it. TT2020, every base outline before roughening is a Spiro spline set. So I would prefer that you not disparage it because I usually find that that's coming from a place of ignorance and not genuine understanding of the benefits and drawbacks of Spiro...

Happy to teach you how to draw with it, I have a tutorial on my YouTube channel actually. Just search "FontForge Spiro", channel name "copy paste"

from libspiro.

nanjizal avatar nanjizal commented on September 17, 2024

its more that it can be a bit unstable at certain points, I believe newer algorithms avoid this completely, although I made various examples to allow simple drawing with the algorithm the license always stopped my interest in developing them more fully but I did experiment a lot at the time.

from libspiro.

nanjizal avatar nanjizal commented on September 17, 2024

hxTrueType is MIT although doubtfully has wealth of features of FontForge.

from libspiro.

davelab6 avatar davelab6 commented on September 17, 2024

from libspiro.

JoesCat avatar JoesCat commented on September 17, 2024

@davelab6 wrote,
I think Raph is offering non-GPL licenses more recently, though

@nanjizal provides the answer with this reference: https://opensource.stackexchange.com/questions/9557/upstream-re-licensing-project-from-gpl-3-0-to-mit-allowed
"MIT licensed software can be re-licensed as GPL software, and integrated with other GPL software, but not the other way around."

@jamadagni wrote
Hi. Please clarify what is the difference between libspiro and spiro code you mean.

There is code in libspiro and HxSpiro written by other authors. HxSpiro was created in 2016 and at that time spiro was also GPL. In 2016, it is very doubtful anyone would think to use 2007 code to create a spiro library when libspiro already existed (plus a Java translation). For @nanjizal to magically state his code is now based only on the 2007 spiro code alone is incorrect - you also do not need to look far to see libspiro code and solutions included.

@ctrlcctrlv wrote:
Oh and of course let's not forget all the GPL2/3 licensed changes made since then by @JoesCat

I was okay with GPL2+. However, GPL2+ allows for GPL3+, and this topic started here:
Upgrade to GPLv3+, as per "[Fontforge-users] Spiro -> GPLv3+?"
See http://sourceforge.net/mailarchive/message.php?msg_id=30930902
Also more info here too: #8

There was concern about the patent, therefore libspiro still continues to mention the patent requirement even in 2020 even if Raph dropped this requirement in 2019.

@ctrlcctrlv wrote:
George Williams is no longer contactable to my knowledge. Meaning the code is not relicensable. It is without doubt that Williams would be very happy to relicense the code in my mind. But this is not a legal argument.

I have my doubts. Reading earlier docs, I'm under the impression George wanted BSD3 while Raph wanted GPL2+, and George had to write libspiro as an optional (non-required) library to make use of spiro functions. Merging spiro code would have been much easier and simpler.

What we can agree on is:
George only needs to remain silent to maintain GPL2+ or GPL3+
George's last posting is march2019 AFAIK, so I'll assume his code is copyright until 2089.

@nanjizal wrote:
I could probably port Raph's Python code now I understand a bit more python but I know it takes a lot of time, and spiro is quite problematic to create curves with anyway.

The Java code has remained mostly the same since 2009.
The C code fixes have not been ported over yet.

removed

It would have been easier for you to patch your code and then ask downstream to update.

Please contact your downstream forks and ask them to please change to GPL3+.
It is a small number of forks, but Raph can help you. Raph helped you implement HxSpiro2019 and HxSpiro2020 as MIT licensed.
https://github.com/raphlinus/hxSpiro2019/network
https://github.com/raphlinus/hxSpiro2019/commit/3a9c0f5f0834d6a641b7c842953cad5addd45b2b

@nanjizal - in future, for you to avoid this problem - please read a few links here:
why copyright? : https://www.google.com/search?q=why+copyright+is+important

Here is a link to a university - so I think they would be thoughtful and careful to write this - which is better than a stackoverflow opinion: https://www.lib.purdue.edu/uco/CopyrightBasics/basics.html
Why is copyright law important?

  • Copyright law has a dual role. It provides exclusive rights to authors in order to protect their work for a limited period of time but it was also established to promote creativity and learning.

What cannot be copyrighted?

  • Ideas, procedures, methods, systems, and processes are not copyrightable.
    Example: The list of ingredients for recipes are not copyrightable. However, the recipes' instructions are protected.

How long does copyright last?

  • Works created on or after January 1, 1978 are protected for a term of the life of the author plus 70 years (US law, but internationally is 50 or more years depending on country).

and then try a few links here: https://www.google.com/search?q=what+is+a+software+license
...but this seems okay for this topic - "5 types of software licenses you need to understand":
https://www.synopsys.com/blogs/software-security/5-types-of-software-licenses-you-need-to-understand/

  • Free and open source software (FOSS) is free of cost, but you aren’t free to use it as you wish.

In the meantime, I have requested Raph to fix his ReadMe file to avoid this happening again.
raphlinus/spiro#1

from libspiro.

ctrlcctrlv avatar ctrlcctrlv commented on September 17, 2024

George only needs to remain silent to maintain GPL2+ or GPL3+
George's last posting is march2019 AFAIK, so I'll assume his code is copyright until 2089.

This is absolutely correct. We can know that George was a BSD proponent but that doesn't have any legal meaning at all. This specific code, he worked on as GPL, and his work can't become BSD without him declaring it so. We cannot know his wishes any other way in a way that would satisfy a lawyer.

from libspiro.

JoesCat avatar JoesCat commented on September 17, 2024

Thank you Raph.
Everyone is proud of their work and it is a shame to see their projects go to waste due to misunderstandings.

from libspiro.

nanjizal avatar nanjizal commented on September 17, 2024

I have request Raph removes his fork of my lib hxSpiro2019, there is little point in 3 unmaintained unused hxSpiro versions ( Haxe users never seem to use GPL libraries in projects ), so I have left only my original GPL licensed one. I have no interest in adding a patent they are not relevant in Europe and I have no interest in encouraging their adoption. But if hxSpiro needs any license tweaks feel free to pull.

from libspiro.

davelab6 avatar davelab6 commented on September 17, 2024

from libspiro.

nanjizal avatar nanjizal commented on September 17, 2024

Well I should be clear that hxSpiro core ( rather than example use ) was not direct based on libspiro, but indirect, so much of the code relating to libspiro copyright contributions are probably not even in hxSpiro given it was translated via two other languages so much of the algorithm survives but lots of the other stuff will be totally different as I stripped out non essentials and change most of the data structures. But anyway the MIT version have been removed and sadly no one will likely find much use now as Haxer's just avoid GPL like the plague despite making lots of opensource code probably more cross over of commercial and open code in Haxe community than most programming language communities, but totally understand that I need to re-port if I want to release MIT. So I don't think there is more to say on this issue.

from libspiro.

JoesCat avatar JoesCat commented on September 17, 2024

@davelab6 - I should have caught that. Just did a copy/paste. Replacing the word "as" with "with" will be closer.
"MIT licensed software can be re-licensed with GPL software, and integrated
with other GPL software, but not the other way around."

Thanks @nanjizal - sorry it has to be that way, and now you may understand why Haxer's avoid GPL like the Plague - because MIT allows you to create closed source, while GPL requires you to provide source code. GPL code cannot be part of MIT code, but MIT code can be part of GPL code.

FYI - Why Copyright? is an interesting thing - Governments are supposed to take care of their people, and one way to do that is education, but to do that, you need people that know something to share that something, while at the same time preventing others from simply ripping-off those same providers of information. Re-posting GPL as MIT, and then going closed-source, is basically returning to the prior times of ripping-off code, but then also losing that acquired knowledge (from many, back to only a select few, or possibly nobody) - you might as well be burning books.

from libspiro.

nanjizal avatar nanjizal commented on September 17, 2024

I try to publish all my opensource work under MIT where possible, if there is any ( non-ports ) that interest you that you would like me to re-publish to have another version with GPL license then do let me know.
https://github.com/nanjizalLibraries/nanjizalHaxe/blob/master/README.md

Currently I have given up getting a creative developer role despite many years animating and developing flash and AIR projects, so I am certainly not on some mission to steal GPL code as I don't even work in code currently. I moved to using Haxe because it was fully opensource language not connected to any manimpulative corporation that would kill it tomorrow, or mess it up like Oracle seem to be doing with Java. Most roles seem to require commercial experiance with a corporate approved language ( and ones they have not killed ), and companies do not seem to consider people who could probably code any language, so instead I am labouring for some roofers, which is why I doubt I have time to try to put more time into more ports. So I have no agenda to steal GPL code, Raph suggested I republish it as he had changed his license and I neither of us thought deeper, I was more thinking about changing it to use module level functions which I am using a lot.

from libspiro.

JoesCat avatar JoesCat commented on September 17, 2024

Let's assume you had 10, 50, or 100+ forks downstream of the previously incorrectly licensed code, and one or more of the forks assumed the license as genuinely MIT.
The outcome would still be the same, but you would have had a larger problem to resolve - including downstream forks possible claiming lost income, damages, etc, etc, etc. - you wouldn't want to be "that_guy" holding the smoking gun.

You made an error - Raph too.
You did not run from this problem, and you made a best effort to correct this problem.
That shows character.
I think that is all okay and corrected now.
You are now also a bit wiser about Copyright and Licenses as well.
Done.
Time to continue onwards.

I try to publish all my opensource work under MIT where possible, if there is any ( non-ports ) that interest you that you would like me to re-publish to have another version with GPL license then do let me know.

If you want to publish and even improve libspiro, you are free to do so, but respect the copyright, and respect the license - as GPL3+

Last but not least, for everything else.
Check the Copyright, check the licenses, check the code history.

from libspiro.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.