SoftEther VPNのソースコードがGPLv2で公開される 44
ストーリー by hylom
普及は進むか 部門より
普及は進むか 部門より
VPNソフトウェア「SoftEther VPN」のソースコードがGPLv2で公開された(SoftEther VPNプロジェクトのお知らせ)。
SoftEtherは登大遊氏によって開発され、その後「PacketiX VPN」という名称で商用化された。その後、PacketiX VPNの一部機能を制限したものがフリーウェアとして提供されていたが、このたびそのソースコードも公開され、GPLv2のフリーソフトウェアとなった。WindowsおよびMac OS X、Linuxなどで動作する。また、クライアントとしてはiOSやAndroidデバイスにも対応する。
ソースコードを読んでみた (スコア:5, 興味深い)
ソースコードをざっと眺めました.第一印象としては
- ソースコードが冗長.長い!
- コメントが英語で書かれているが文法の誤りが多い
点が気になりました
たとえば
http://ja.softether.org/@api/deki/files/679/=sourcecode.png [softether.org]
に例示されているたった20行のソースコードでも
IPV4_GET_FLAGS(ip) & 0x01 を直接評価する行もあれば,その後 last_packet 変数に代入する行もあったりで
全体的に冗長です
プロトコルやパケットは実装側のことも考えてデザインされているので,
そのデザインを正しく理解できれば,多分ソースコードは今の半分ぐらいの行数で簡潔に実装出来ると思います
Re:ソースコードを読んでみた (スコア:4, 参考になる)
- コメントが英語で書かれているが文法の誤りが多い
これについては、今回の公開に当たり英訳したそうなので、ある程度は仕方ないことだと思います。
Twitter / dnobori: なぜ公開まで時間がかかったかというと、専ら、コメント部分だけ ... [twitter.com]
Twitter / dnobori: コメント部分が日本語でも良いから公開してほしいというご意見も ... [twitter.com]
Re:ソースコードを読んでみた (スコア:1)
コメントの多言語対応系があれば嬉しいと思ってみた。
Re: (スコア:0)
工学博士の割には工学的センスに欠けてるような
Re: (スコア:0)
評論家は偉大なり。自分で作れずとも批評ができるから。
Re:ソースコードを読んでみた (スコア:1)
匿名の臆病者は偉大なり。自分でソースが読めずとも批判ができるから。
公表されてから今までの短時間で冗長な大規模コードを「ざっと見て」
ある程度の判断ができる時点でプログラムのできる人だと推測できるのですが。
少なくとも自分には(読むのも書くのも)無理です。
Re:ソースコードを読んでみた (スコア:1)
例えば、IPV4_GET_OFFSET(ip)が0でなくて、IPV4_GET_FLAGS(ip)の1ビット目のフラグが立ってる場合、
「フラグメントが起こっていない」にもかかわらず「フラグメント中のどこか途中」という
矛盾のあるパケットを意味しそうですが、そのエラーチェックはありませんね。
IPは詳しくないので、そういう不正な(?)パケットの処理をどうすべきか正確には分かりませんが、もやもやします。
他の部分との兼ね合いで絶対に起こらないのであれば、両方をチェックする必要はありませんし。
あとは、0x01を何かの定数にしておいて欲しいな、とかも。
とにもかくにも動作するすごい者を作れる人はすごいんですが、
作ったあとのメンテナンス性やらなにやらと、プログラミング坂はそこからもまだまだ長いので。
Re: (スコア:0)
よく見なきゃダメだろ?
あなたは「Anonymous Coward」。対して、元コメントは「anonymous coward」というID持ち。
※私もAnonymous Coward
なんで、ソースをざっくり変えてくれるんですよ……期待しています > anonymous coward
Re: (スコア:0)
よく見なきゃダメだよ。
揚げ足とってすまんけど、わざわざ名前を間違えるのは失礼だよ
> by annoymouse coward
Re: (スコア:0)
ソースレビュー全否定?
Re: (スコア:0)
「ボクなら半分で書けるもん」をソースレビューとは言わない。
Re: (スコア:0)
そもそも、SoftEtherくらい大きなソフトウェアをコードレビューして
コード汚いだとか冗長だとか細部の体裁の指摘に走るあたりがピント外れというか…。
Re: (スコア:0)
この人の書いたコードって、短いけど読みにくそう。
Re: (スコア:0)
半分とか大きく出たよなと思うわ。流石にじゃあやってみなと言いたいレベル。
コメント削ってほら半分とかじゃないこと願うよ。
Re: (スコア:0)
>半分とか大きく出たよなと思うわ。流石にじゃあやってみなと言いたいレベル。
当然、ソースコードを読んだ上で発言してるのですよね。
# 出る杭を叩くだけのACの多さに辟易する今日このごろ。
Re: (スコア:0)
ソースコードにケチをつけるだけの人を「出る杭」とは褒め過ぎだと思う。
Re: (スコア:0)
少なくとも例に出ていた20行のコードを見ても、#2522684で書かれている通り、
『同一のものを複数(この場合は2つ)の表現で記述』していますから、『冗長だ』
『分かり辛い』と思われても仕方がないかと。
# それ以外にも、直値を出している時点で危険な気がしますけど…。
#2522684のannoymouse cowardさんがどのようなコードを書かれるか知らない
のですが、該当箇所については、より読みやすい事が期待できる気がします。
# ソースをまだ見てませんので、半分になるかどうかは不明ですが。
# 短くすると読みづらいと言う妄想を捨てると幸せになれるかも知れませんよ。
# もちろん長ければ良いと言うものでもありません。
# 何にせよ『分かりやすくて読みやすいのが一番』です。
Re: (スコア:0)
期待してます。
来週くらいにはできますよね?
Re: (スコア:0)
現時点で来週ぐらいに出来ると見積もれるのであれば、あなたの方が適任では?
Re: (スコア:0)
エンドユーザー「」
Re: (スコア:0)
gitなんで、Forkして普通に修正してPull Req送ってもいいのですよ?
Re: (スコア:0)
案の定ツリー荒れてますね…。
僕にもわかった!ここ冗長!みたいなコーディングの指摘1箇所でもって
「多分ソースコードは今の半分ぐらいの行数で簡潔に実装出来ると思います」
と豪語されたら、経験的にアチャーと感じる人たちは多いでしょうな。
Re: (スコア:0)
そうですね。
でも、もし高い確度で「出来ると思います」と言えるだけのソースに目を通していても、
ここに例としてあげるのは、外からよく目立つ部分だけになるのでは。
だから、「指摘1箇所でもって(中略)豪語されたら」ではないかも。
・・・と考えましょうよ。
Re: (スコア:0)
このツリー大本のIDはなんでも煽っていくスタイルの困った方なんで、そこも吟味しなさいな。
Re: (スコア:0)
>このツリー大本のIDはなんでも煽っていくスタイルの困った方なんで、そこも吟味しなさいな。
結構大きくなったこのツリーだが、
実際にコードを読んだうえで発言したのは、
その大本のIDだけなのだが、
このことをどう思うか?
Re: (スコア:0)
× 実際にコードを読んだうえで発言したのは、その大本のIDだけ
○ 実際にコードを読んだと言い張っているのは、その大本のIDだけ
Re: (スコア:0)
同感です。
アイデアをもとに具体的なコードを書いたのですから、
はじめに具体化したことへの敬意があってもいいかな、と思います。
Re: (スコア:0)
文法の誤りなんかいちいち気にしてたら英語のOSSプロジェクトにcontributeなんかできねえよ! (血涙
どうせ読む方だって英語ネイティブとは限らないからいいんだよ! (開き直り
なんでGPL v2 (スコア:0)
公開してくださったことはありがたいし
心強いことだけど、なんでGPL v2?
検閲に対抗すると言う意図もある様だけど、それならv3のほうがより安心なんじゃないかな
Re:なんでGPL v2 (スコア:1)
v2で出してきたところがいいところなんじゃいかと思ったけどね
OpenVPNではなく (スコア:0)
OpenVPNではなく、わざわざこれを選択する利点って何?
Re: (スコア:0)
OpenVPNもサポートしてるし、本家より早いらしい。
同時に他のVPNもサポートしてるのもいいとこじゃないかな。
あと、どうしてもGUIじゃなきゃやだ、って人もいいかも。
とはいえ、RSA 証明書認証なんかない(商用のみ)みたいだから、やはり自分でOpenVPN立てた方がいいかも。
Re:OpenVPNではなく (スコア:1)
普通にありますよ>RSA証明書認証
サーバーを認証も、クライアントを認証も。
Re: (スコア:0)
そうなのか。じゃドキュメントが古いだけか
http://ja.softether.org/3-spec/cureent_limitations [softether.org]
Re: (スコア:0)
ドキュメントが古いというか、整合性が取れてないみたいですね。
http://ja.softether.org/4-docs/1-manual/2/2.2 [softether.org]
こちらには「2.2.5 固有証明書認証」というセクションがあります。
Re: (スコア:0)
GUIがカッチリ作ってあるから設定が楽。
Re: (スコア:0)
じゃあ、OpenVPNにGUIをつければいいだけの話では……
Re: (スコア:0)
君が作ってくれるのかい?
Re: (スコア:0)
設定が楽といえば、OpenVPN Access Serverという商用版がありますが、無償ライセンスで同時に2接続まで使えるのがありますね。
Re: (スコア:0)
How different compared with OpenVPN?
http://www.softether.org/@api/deki/files/680/=comparison3.png [softether.org]
Re: (スコア:0)
ほぼ上位互換な気がするので、逆にわざわざOpenVPNを選択する理由が知りたいかな?
枯れてるからといった理由であれば、今後置き換わっていくでしょうね。
Re: (スコア:0)
正当な後継ではないので、上位互換とは言わないのではないか。
別物だけど、OpenVPNをサポートしててさらにパフォーマンスも機能も充実してる、ってだけかと。
OpenVPNで十分な人もいるはず。
すでに稼働済みの環境があれば、aptなどのパッケージ管理でOpenVPNをインストールした後、設定ファイルとキーをコピーするだけですぐに使えるのは楽。
GUIが逆に煩わしかったり。
Re: (スコア:0)
OpenVPN互換プロトコル使ってもOpenVPNより速度速いんだぜ
Re: (スコア:0)
個人ユースだと、PacketiX.NETが便利ですね。
仮想HUBをASP上におけます。
単一障害点の信頼性は大事。