Comments (18)
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.
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.
@parkr ?
from classifier-reborn.
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.
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.
Yeah, I'm totally open to it, I'll even try to help if you want.
from classifier-reborn.
@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.
@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.
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.
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.
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.
@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.
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.
A quick question, can we use this library in an application that is released under MIT license?
from classifier-reborn.
Yes, but the source code for it must be open sourced.
from classifier-reborn.
@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.
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.
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)
- Migrating classifier data from an older classifier-reborn structure HOT 14
- whan i add a utf8 chars HOT 1
- In some languages like Chinese, a word of length not bigger than 2 is very common, so I suppose this is a very strong(sometimes wrong in other languages) assumption. HOT 2
- How to install via jruby HOT 1
- ability to serialize model? HOT 1
- "ArgumentError: comparison of Float with NaN failed" if trying to search a corpus with an item that lacks common words HOT 3
- HTTPS for static site HOT 4
- Deprecated Gem::Specification#has_rdoc HOT 4
- 2.3.0 not released to Rubygems HOT 4
- broken links to docs (domain name not resolving) HOT 6
- TypeError: no implicit conversion from nil to integer in /classifier-reborn-2.2.0/lib/classifier-reborn/lsi.rb:313:in `sort' HOT 2
- Multiple separate bayes classifiers with single redis database HOT 1
- Documentation at classifier-reborn.com in inaccessible HOT 6
- Allow redis connection to be injected HOT 1
- Can classifier-reborn work with Numo::NArray / Numo::GSL ? Is that a better choice than nmatrix? HOT 9
- Is this project still actively maintained, or is it abandoned? HOT 3
- Problem with certain characters?
- [JRuby] Tests fail with jar-dependencies version mismatch
- Add prefix to the Redis keys
- Jekyll LSI not calculated on localized blog posts HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from classifier-reborn.