新人はどのようにして20Kスターのオープンソースプロジェクトに貢献できますか?

オープンソース製品への参加に関する記事の翻訳はHabrで公開されており、海外のどこかで愛好家でいっぱいの生活のようです。 初心者は大規模なプロジェクトに参加するのが怖い、そこにキュレーターが必要だ、そして彼と一緒に彼のプルリクエストは間違いなく地獄のすべてのサークルを通過すること



オープンソースを初めて使用する友人の経験は、そうでないことを示唆しています。 彼の最初のプルリクエスト#11680は、議論やメンテナからのコメントなしで、恒星のスプリングブーツに受け入れられました。 その修正は、バージョン2.0.0.RC1ですでに利用可能です。







神が鍋を燃やすことはありません。 githubの大規模プロジェクトの貢献者になる可能性についての議論...



大人の行動を妨げる最初のことは、恐怖と不安です。 そして、それが私にとってうまくいかず、突然彼らが私をからかうとしたら-あなたが最初に大きなチームで何か新しいことをしたときにそのような考えはあなたを訪問しましたか?



これにより、インターネットトロールが公開されなくなりますか? そして、対応ボクシングとは何ですか? これらすべてのYouTubeビデオの戦いは真剣ですか? 環境は仮想であり、プロジェクトメンテナーが自由なサイコパスであり、あなたがどこに住んでいるかを知っていることはまずありません... まだ怖いですか?



医師は、健康な人はいない、未開拓だというジョークを持っています。 また、オープンソースの世界では-完全なコードはなく、各モジュールには匂いがあります-コードの匂いです。 初心者のためにそれを検出する方法、クリーンコードの基準は常に主観的ですか? 静的コード分析sonarqube、pvs-studio、SpotBugs、Ideaのコード検査用のツールがあります。 おなじみのプロジェクトでそれらを実行してみてください、あなたは驚くでしょう! あなたは怠け者ですか?



最後に、「革新的なJSウィジェットフレームワーク」を思い付きました。 githubに投稿した後、彼らはすぐにそれを盗み、難読化してSkolkovoに販売すると思いますか? 暇な時間を過ごしたことを理解しています。 イマジネーションは、どのように投資を呼び込み、自分自身に赤いフェラーリを買うかを描きます。 「秘密」プロジェクトの収益化モデルと開発計画はありますか? このアイデアの人気とユニークさ。 コードとアイデアはどれほど早く廃止されますか? あなたなしでプロジェクトを開発できますか? 無料で配布して申し訳ありませんか?



一部の人にとっては、パブリックドメインにコードを提出することは、興味深い仕事、コミュニティからのバグ修正、専門家からのフィードバックを得るための新しい機会です。 もちろん、これはそれ自体では起こらず、努力が必要です。 私にとって、これは「Dog in the Hay」の原則よりも優れています。 たぶん、プロジェクトに必要なバイラルライセンスを提供することでチャンスをつかむべきでしょうか?



Andreiと彼のオープンソースへの貢献の話に戻ります。



私たちは大学で一緒に勉強しました。彼は私たちの学部出身で、私より3歳年下です。 彼は興味のあるプログラミングと専門分野で実験室の仕事をし、コンパイラと本で自由時間を過ごしました。



しかし、大学と軍事部門の後、彼は仕えるように呼ばれました。 今回は彼の開発キャリアから失われました。 帰国後、大学卒業後の実務経験がなければ専門分野の仕事を見つけることは容易ではありませんでした。 仕事がなければ経験を積むことはできません。経験がなければ仕事をすることはできません。悪循環です。 彼と彼の妻が住んでいる小さな町には、ITの空きがありません。 私は銀行でシステム管理者として働いていました。 それから、プログラマーとして働くために、私は家から80km離れた所で働き始めました。 そして、まだそのように動作します...職場では、オープンソースのための時間は絶対にありません-大規模なインテグレータで、フェンスから昼食まで掘るプロジェクトがありました。 開発とトレーニングは主に彼の暇な時間でした。 彼は非常に頭が良く、目的がありますが、人事手続きの石臼を通り抜けると、履歴書と勤務時間が彼に背を向けます。



私は最近、Andreiと話をして、彼にsonarcloudのスプリングブートコードの分析結果について話しました。 技術と開発プロセスについては時々話し合います。



彼はブートコードの改善を支援することを申し出ました。 彼は、プル要求がこのような大規模なプロジェクトに受け入れられることを疑っていました。 あるタイプの欠陥の修正に集中し、それほど複雑ではないコードの匂いを嗅ぐことを勧めました。 彼は「文字列関数の使用は単一の文字に最適化する必要がある」を選択しました。



この「コードの匂い」の本質は、 java.lang.Stringオブジェクトに、1文字の文字列と共通のcharパラメーターで呼び出すことができるindexOfメソッドとlastIndexOfメソッドがあり、1文字の文字列に対してより効率的に機能することです。



効果的ではない:



String myStr = "Hello World"; // ... int pos = myStr.indexOf("W"); // Noncompliant // ... int otherPos = myStr.lastIndexOf("r"); // Noncompliant // ...
      
      





このように書く方が良い:



 String myStr = "Hello World"; // ... int pos = myStr.indexOf('W'); // ... int otherPos = myStr.lastIndexOf('r'); // ...
      
      





その結果、彼は多くのJava開発者が日常業務で使用するものをわずかに改善しました。 今後、Andreiが同僚と一緒に使用するオープンソースのツールとフレームワークを改善する機会を持つことを願っています!







Habréには、アドバイスをしてくれる人が必ずいます。 だから私は最初にgithubで、次にここでraiymに会った。 lanyは、HuntBugsプロジェクトの運命と、コマンドラインでIdeaの静的コード分析を使用する方法について話しました。



初心者への私の主なアドバイスは、オープンソースを恐れず、「一口で」コードを修正することです。 アンドリューの例に従ってください!



そして、何があなたをオープンソースに貢献させないのですか?



All Articles