shadowsocks / shadowsocks-libev

Bug-fix-only libev port of shadowsocks. Future development moved to shadowsocks-rust
https://github.com/shadowsocks/shadowsocks-rust
GNU General Public License v3.0
15.81k stars 5.69k forks source link

Google Jigsaw's product "Outline" used code from shadowsocks-libev but used an incompatible license #1991

Closed PeterCxy closed 5 years ago

PeterCxy commented 6 years ago

Dear contributors of shadowsocks-libev,

Recently a team at Google published a new "VPN" tool called "Outline" (https://getoutline.org/en/home). As it turned out, it was only another GUI wrapper around shadowsocks, and specifically, shadowsocks-libev. The client side of their software (https://github.com/Jigsaw-Code/outline-client) directly included source code from shadowsocks-libev and other related projects, some of which licensed under GNU General Public License version 3. However, the outline-client was licensed under Apache 2.0, which is not a compatible license with GPLv3.

Since the source code are directly included to the repository, I'm afraid that this could be a copyright offence. However, I haven't looked into whether it could actually be a derivative work of the Shadowsocks project. I am writing here for attention of you, the Shadowsocks contributors, who have done great work on fighting censorship, in case that further action should be taken on this issue.

Regards.

broncotc commented 6 years ago

Interesting.

linusyang commented 6 years ago

I am no expert in License. But I doubt if this project is ever worth trying. For example, why still use Cygwin to build the project, as we have a much better, highly efficient (IOCP-based), plugin-enabled full Windows port? Why contain the Cygwin dll binaries but not other pre-built third party apps? Why not use Git submodule but directly copy the source code? This is more like a project created by a group of unprofessional developers but not a Google-based company.

greenbambooaaron commented 6 years ago

Hopefully it means that "Jigsaw" will work to improve the code and contribute back to the community...

madeye commented 6 years ago

Generally, I'm happy to see more forks from our project. I described the detailed reason in an old post: https://maxlv.net/open-source-and-forking/

As long as Outline runs shadowsocks-libev in a separate process, I don't think there is any serious violation of GPL. However, the current code structure of their project doesn't follow GPL well.

Hope we'll see more direct contributions from them in the future.

anthonywong commented 6 years ago

Apache 2.0 is compatible with GPL v3, see https://www.gnu.org/licenses/license-list.en.html#apache2.

PeterCxy commented 6 years ago

@anthonywong It is not compatible the other way round, i.e. you COULD use Apache 2 projects as dependencies of a GPLv3 project, but you CAN'T use GPLv3 code in an Apache 2 project

xiuluo commented 6 years ago

@anthonywong But GPL v3 is not compatible with Apache 2.0,so you can't fork this project then change license to Apache 2.0.

anthonywong commented 6 years ago

@PeterCxy @xiuluo Right, both of you are correct. Looks like Outline does not fork and change the license, but includes shadowsocks-libev and runs it as a separate process (https://github.com/Jigsaw-Code/outline-client/blob/master/cordova-plugin-outline/android/java/org/outline/shadowsocks/Shadowsocks.java#L40. Not saying this is okay, but just wants to point out how Outline works with shadowsocks-libev is debatable.

RedL0tus commented 6 years ago

@anthonywong Outline‘s maintainer says they are contacting their legal counsel to verify that they are complying or not. See https://github.com/Jigsaw-Code/outline-client/issues/14#issuecomment-375728834

xnoreq commented 6 years ago

@linusyang

we have a much better, highly efficient (IOCP-based), plugin-enabled full Windows port?

Do you mean the code that was merged into the forked libev and reverted again last week? I don't know the reasons for that but libev's paradigm is not really compatible with IOCP ... but libev is needed for Linux with its messy and broken polling and event mechanisms.

linusyang commented 6 years ago

@xnoreq We recently re-add MinGW support (w/ TCP Fast Open). See #1962 #1965.

We use wepoll to provide epoll-like backend for libev on Windows. The patched libev doesn't go upstream yet and is in the customized mingw branch, not the master branch (which was a mistake when merging the wepoll patches).

Please refer to the latest readme document on building the MinGW port.

Per0x commented 5 years ago

Is there currently an advantage to using Outline compared to shadowsocks-libev ?

ghost commented 5 years ago

@Per0x Server side or client side? They're optimized for different scenario.

rogers0 commented 5 years ago

I'm regular shadowsocks(-libev) user. I'm wondering whether we can use shadowsocks-libev on server side, and use outline as client side.

If it's feasible, could anyone kindly share the detailed steps? Thank you!

ghost commented 5 years ago

@rogers0 You need generate access key from ss-libev config by yourself.

http://shadowsocks.org/en/spec/SIP002-URI-Scheme.html

rogers0 commented 5 years ago

@studentmain Thanks so much! I think we need to add a script to generate the access key automatically, in shadowsocks-libev package.

Any volunteer to do the work? :-P

ghost commented 5 years ago

@rogers0 Maybe also QRCode. Maybe I'll write one, but probably in C...

Per0x commented 5 years ago

@Per0x Server side or client side? They're optimized for different scenario.

Both. There are several projects emerging, and I don't think I'm the only one who's a little lost on each other's directions.

ghost commented 5 years ago

@Per0x

Outline Client:

Outline Server:

IMO, Outline is optimized for bussiness scenario, their target user is not IT professional, just like their website said. Shadowsocks is designed for personal use (when it born, there is only one user, that's why ss haven't "user name").

Per0x commented 5 years ago

@studentmain Thank you !

ghost commented 5 years ago

screenshot_20181218-012119 @rogers0 a little works, still a prototype, will be open source when it ready 一点微小的工作,还在修,修好了会开源

rogers0 commented 5 years ago

@studentmain thanks for letting us know. No need to be perfect, please kindly submit your code by pull request. Open source code evolves when the community is able to review and patch it.

ghost commented 5 years ago

@rogers0 FYI https://github.com/studentmain/ss-share , need improve, but should work.

fortuna commented 5 years ago

@studentmain nice comparison!

A few things I'd like to clarify: