poweic / libdnn

A lightweight and user friendly C++ library for deep and convolutional neural network with GPU acceleration
Apache License 2.0
345 stars 61 forks source link

The reason of using Apache License? #15

Open MnO2 opened 9 years ago

MnO2 commented 9 years ago

I don't see that using Apache license would do the library, as a grassroot project, any good in general. First of all, Apache license as far as I know it is not compatible with GPL, which means any GPL-licensed project is forbidden from using libdnn source code. The benefit of Apache license for those big name company is mainly because it is more properly legally stated and also grant the accompanying patent to the code user. I don't think libdnn is in the same story. Is this project based on any patent? As far as I know, libsvm is BSD-3, which is a much more friendly license for individual adopter.

poweic commented 9 years ago

No specific reason and not based on any patent XDD Any suggestion ?

MnO2 commented 9 years ago

I suggest BSD-3, as libsvm does. http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html#f204

poweic commented 9 years ago

Sounds great! Let's change to BSD-3. lol But I'm currently preparing my master defense... it's on Feb. 2

MnO2 commented 9 years ago

I understand, lol. We could manage a closer discussion after that. About how we could merge & the roadmap. Like moving most of the code to libdnn namespace, and adopting more C++11 features and C interface for other languages' bindings.

poweic commented 9 years ago

Sure. We definitely need a closer discussion, more C++11 features and to solve the namespace issues.

Besides, I consulted Wei-Chao Chen (maybe you know him, who is a former NVIDIA 3D architect and an adjunct professor at NTU now) about the software testing a few days ago. He suggested me to define the merge rules for other developers: at what level and how many testing should be passed before their pull request is merged. He also gave me some tips like smoke testing.

And maybe we can do a Google hangout.

MnO2 commented 9 years ago

Here's one for reference. https://github.com/rust-lang/rust/wiki/Note-development-policy

For testing I've integrated Travis-CI, which is free for open source proj, and leave a stub for testing (i.e. make test). Either unit-testing and functional-testing could be run on the service. However, I am not sure the smoking test could be taken into consideration when sticking with Travis-CI. One naive way I could think of is to hook a trigger with Travis-CI post-build, and trigger some AWS gp2 instance to benchmark the test. We could use spot instances for that. Cost would be around $30-40 USD a month.

poweic commented 9 years ago

Haven't used Travis-CI yet. But looks like a great solution.

Does it have to be AWS ? I think the price is exorbitant. We can temporarily use the resources in NTU speech Lab.

MnO2 commented 9 years ago

Travis-CI is a widely accepted CI service in open source world, since it is free for github open source project. The CI jobs are run its cloud container. Speed is OK.

At this moment, I suppose only AWS provide cloud GPU computing. The ondemand instance is pricey, but spot instance is around 0.065 per hour. Though not cheap, but a fair price comparing to other service provider. We could definitely use NTU speech lab's resource. But two issues exist:

  1. The machines have to be public accessible, if it is going to be triggered by CI service hook. Depending on if there is confidential data on the machine/cluster, I don't know it is appropriate. For AWS instance, you could just lauch it, run then shut down.
  2. Ethically, we should let lslee know if we are going to use it for long term.
poweic commented 9 years ago

Just temporarily. And I'll see what I can do. :)