Git Product home page Git Product logo

Comments (18)

bararchy avatar bararchy commented on May 31, 2024 2

Closing as a project already began implementing a Classifier in Crystal here: https://github.com/mathieulaporte/machine

If anyone is interesting in contributing , it's MIT licensed and accepting PRs :)

from classifier-reborn.

Ch4s3 avatar Ch4s3 commented on May 31, 2024

I don't really see a problem with that. @parkr what kind of association would you like to have with any ports? Also does a port have to inherit the LGPL license?

from classifier-reborn.

bararchy avatar bararchy commented on May 31, 2024

@parkr ?

from classifier-reborn.

parkr avatar parkr commented on May 31, 2024

Hey! I'm not a lawyer but my understanding is that if you are translating a library to another language then it must retain the same license as the original. It's akin to translating a book: a German translation of Shakespeare is still Shakespeare so you have to abide by copyright provisions for the original work.

from classifier-reborn.

bararchy avatar bararchy commented on May 31, 2024

I see, I was planning on MIT lib, but, I guess LGPL is fine too.
Just wanted to make sure you guys are fine with that :)

from classifier-reborn.

Ch4s3 avatar Ch4s3 commented on May 31, 2024

Yeah, I'm totally open to it, I'll even try to help if you want.

from classifier-reborn.

parkr avatar parkr commented on May 31, 2024

@bararchy The alternative is to do a "clean room rewrite" where you try to forget how this lib works and implement a clean Bayesian Classifier without looking. This is akin to taking a standardized test where you go to a room you have never been to without any information and answer math problems. That's the "safest" approach, in my understanding.

The LGPL is summarized here: http://choosealicense.com/licenses/lgpl-3.0/

from classifier-reborn.

bararchy avatar bararchy commented on May 31, 2024

@Ch4s3 thanks :) I would love any help I can get , especially from someone as experienced as you in this field .

@parkr I'll think about it , I really wanted classifier-reborn.cr as an homage to your hard work on this. Though even if I'll create a new lib I'll still credit you guys for the idea and inspiration

from classifier-reborn.

Ch4s3 avatar Ch4s3 commented on May 31, 2024

You're welcome to do a straight port, but the original license that Lucas setup is LGPL, so if you do a straight port, you also have to use LGPL. Obviously @parkr and I aren't going to be upset about it either way, but we don't want you to accidentally run afoul of the license either, so read up a bit and let us know what you decide to do!

from classifier-reborn.

ibnesayeed avatar ibnesayeed commented on May 31, 2024

In some cases I am not even very sure what is licensed really. Especially, when we implement a published algorithm or mathematical model, we often don't have too many choices. For example, if a bunch of people try to implement bubble sort independently, how many different ways they can come up with? The over all algorithm will be the same, perhaps they might differ in indentation or other code styles, inline comments, some might divide sub-tasks in functions, or choose variations in loops and conditionals when possible. They might utilize one data structure over the other, but there will be only a few data structures that would fit certain algorithms, and some will be more efficient than others which everyone is entitled to use.

In this context, let's take the example of Bayesian classifier, even if I try not to look at the code for a year then try to implement it by myself by just looking at the well known algorithm of how probabilities are calculated in Bayes, I am afraid, my implementation will not be too different at lower level. Additionally, if we talk about the API, I am sure train, untrain, and classify would be the most sensible methods to make publicly available, internal helper methods and refactoring could be different though.

Please note that by no means I am against licensing or giving credits. However, in some cases it is just too difficult to digest the role of licensing for non-lawyers. :-)

from classifier-reborn.

tra38 avatar tra38 commented on May 31, 2024

I am not a lawyer but...

Algorithms can't be copyrighted, but implementations (and derivative works of those implementations) can be. So while the idea of a Bayesian classifier cannot be copyrighted, the specific implementation details can be. But if you were to come up with a new implementation independently, without looking at the source code of the existing implementations, then you own the copyright for that specific implementation (even if that implementation is very similar).

You might be able to copy APIs and small snippets of other people's code by claiming "fair use", but "fair use" is merely a legal defense that can be used during a "copyright infringement" lawsuit. It doesn't actually protect you against lawsuits (then again, anyone can sue anyone for anything).

My personal opinion is to avoid all these problems by having the Crystal port follow the LGPL license. I don't necessarily like it (I prefer MIT), but whoever started work on classifier-reborn loved LGPL, and it seems reasonable to respect his/her wishes by carrying his/her license choice onward...especially when LGPL doesn't really cause that much damage to other people.

from classifier-reborn.

ibnesayeed avatar ibnesayeed commented on May 31, 2024

@tra38, thanks for you input. Personally, I also prefer MIT license for the open source software I release as it allows usage of my work in commercial software as well.

from classifier-reborn.

Ch4s3 avatar Ch4s3 commented on May 31, 2024

Personally I prefer MIT as well, but neither @parker nor I were here when Lucas chose the license. Like I said, I'm happy to help with an LGPL port.

from classifier-reborn.

ibnesayeed avatar ibnesayeed commented on May 31, 2024

A quick question, can we use this library in an application that is released under MIT license?

from classifier-reborn.

parkr avatar parkr commented on May 31, 2024

Yes, but the source code for it must be open sourced.

from classifier-reborn.

ibnesayeed avatar ibnesayeed commented on May 31, 2024

@parkr: Yes, but the source code for it must be open sourced.

A software released under MIT means it is open source. However, that software can internally be used in some closed proprietary software and inherit this library along.

from classifier-reborn.

tra38 avatar tra38 commented on May 31, 2024

I think the library can be used in an application that is released under MIT, but the library must stay open source. The actual program itself can be MIT/closed-source, though it is dependent on the open-source library. It's meant to be a compromise between MIT (library can become closed-source so long as you provide credit to the original writers) and GPL (entire program becomes licensed under GPL if you use the library).

from classifier-reborn.

parkr avatar parkr commented on May 31, 2024

This is pretty interesting – I don't have a lot of experience with the LGPL.

Quoting from the gnu.org FAQ:

If you statically link against an LGPL'd library, you must also provide your application in an object (not necessarily source) format, so that a user has the opportunity to modify the library and relink the application.

if you yourself convey the executable LGPL'd library along with your application, whether linked with statically or dynamically, you must also convey the library's sources, in one of the ways for which the LGPL provides.

The first means the library must be interchangeable – if I don't want to use the Crystal version of classifier-reborn that you write, I should be able to modify any source required to use a different version. This appears to apply to services, not just code you distribute, though I can't be sure. The second means that if you distribute the library in your code, you must distribute its source as well. Not sure how Crystal works, but keep those in mind.

It seems fairly safe to use with BSD-style licenses.

from classifier-reborn.

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.