Hysen Labs
Open-source project
shadowsocks/ShadowsocksX-NG avatar
shadowsocks

ShadowsocksX-NG

GitHub describes it as Next Generation of ShadowsocksX. The repository metadata lists Swift as its primary language. The metadata lists the GPL-3.0 license. This article stays within the project description and details documented in the GitHub repository README.

32,889 stars7,764 forksSwiftGPL-3.0
01
DEEP OPEN-SOURCE ANALYSIS

shadowsocks/ShadowsocksX-NG: Why a new implementation?

GitHub describes it as Next Generation of ShadowsocksX. The repository metadata lists Swift as its primary language. The metadata lists the GPL-3.0 license. This article stays within the project description and details documented in the GitHub repository README.

02
DEEP OPEN-SOURCE ANALYSIS

Repository scope

GitHub describes it as Next Generation of ShadowsocksX. The repository metadata lists Swift as its primary language. The metadata lists the GPL-3.0 license. The README describes the project this way: It's hard to maintain the original implementation as there is too much unused code in it. It also embeds the ss-local source code. It's crazy to maintain dependencies of ss-local . So it's hard to update the ss-local version.

03
DEEP OPEN-SOURCE ANALYSIS

Why a new implementation?

The README section "Why a new implementation?" states: Now I just copied the ss-local from Homebrew. Run ss-local executable as a Launch Agent in the background. So there is only some source code related to GUI left. Then I have rewrited the GUI code in Swift.

04
DEEP OPEN-SOURCE ANALYSIS

Features

The README section "Features" states: - ss-local from shadowsocks-libev 3.2.5. - Support SIP003 plugins. Embed kcptun , simple-obfs and v2ray-plugin . - Could update PAC by download GFW List from GitHub. - Share your server profiles by qrcode or url. - Import server profile urls from pasteboard. - Import server profile by scan QRCode on screen. - Custom rules for PAC. - Support for AEAD Ciphers - HTTP Proxy by privoxy

05
DEEP OPEN-SOURCE ANALYSIS

Difference from original ShadowsocksX

The README section "Difference from original ShadowsocksX" states: ss-local is run as a background service through launchd, not as an in-app process. So after you quit the app, the ss-local might be still running.

06
DEEP OPEN-SOURCE ANALYSIS

Editorial conclusion

The repository README is the source for this review. It does not replace a local installation or an independent test.

07
DEEP OPEN-SOURCE ANALYSIS

Official sources

08
Community notes

Community notes