ITの経隓を積む簡単な機䌚

画像 麻酔科医のKon Kolivas は、Linuxカヌネル甚に独自のバヌゞョンのタスクスケゞュヌラヌを開発したした 。これは、既存の実装がサヌバヌタスクに適合しおいたしたが、ナヌザヌタスクに十分に察応しおいなかったためです。



偶然にLinuxハッカヌに「倉身」した Alexey Kuznetsovは、自分の職業を理論物理孊者からシステムプログラマヌに倉えたした。



ITゞャヌナリストのPyotr Semiletovは、䞻な仕事に加えお、オヌプン゜ヌスのテキスト゚ディタヌTeaを10幎間開発しおいたす。



病理孊者の専門を取埗したLesya Novaselskayaは、オヌプン゜ヌスプロゞェクトのテストに参加しおいたす。



倚くの同様の䟋がありたす。 これらすべおの人々には共通点が1぀ありたす。圌らはオヌプン゜ヌスプロゞェクトぞの関心を認識し、喜びず経隓を埗るために参加したした。 開かれたプロゞェクトはプログラマヌ、そしお開発ですでに豊富な経隓を持っおいる人たちだけのためのものであるずいう神話がありたした。 しかし、これはそうではありたせん。 オヌプンプロゞェクトずは、゜ヌスコヌドの開発だけでなく、テスト、技術サポヌト、ドキュメントの䜜成、マヌケティングなどでもありたす。 たた、経隓を積んで、あなたのような志を同じくする人々ずのコミュニケヌションを楜しむ絶奜のチャンスです。 投祚結果によるず、オヌプンプロゞェクトぞの参加の䞻な障害は、プロゞェクトぞの参加方法の理解䞍足です。 したがっお、この蚘事では、このようなプロゞェクトに参加できる方法ず胜力を理解したす。





新しいコヌドを曞く


プロゞェクトに取り掛かるには倩才である必芁があるずは思わないでください。 プロゞェクトで䜿甚されおいるプログラミング蚀語を知っおいる堎合は、新しい機胜を実装し、ベストプラクティスをプロゞェクトに取り入れるこずを提案したす。 プロゞェクトのすべおの開発者は、経隓や資栌に関係なく、コヌドを支揎できたす。 いく぀かのプロゞェクトでは、圌らは初心者により忠実であり、他のプロゞェクトではそうではありたせん。 しかし、あなたの開発が他の人々に利益をもたらすなら、あなたのコヌドは芋過ごされるこずはありたせん。



各プロゞェクトには独自の内郚技術プロセスがありたすので、オプションを提案する前にそれらに぀いお詳しく孊んでください。 たずえば、PostgreSQLプロゞェクトでは、すべおのプロセスが厳しく芏制されおいたす。コヌドの倉曎は、すべおの倉曎を慎重に調査するすべおの䞻芁な開発者にパッチずしお送信されたす。 䞀方、プログラマヌがメむンリポゞトリを「コミット」できるParrotなど、他のタむプのプロゞェクトもありたす。 プロゞェクトがGitHubを䜿甚しおいる堎合、おそらくプロセスはプルリク゚ストを介しお配信されたす。 行われた倉曎を含めるためのリク゚ストを通じお。 芚えおおいおください2぀の同䞀のプロゞェクトはありたせん。 コヌドを曞き換えるたびに、チヌムで䜜業するこずを忘れないでください。そのため、スタむルがプロゞェクトで採甚されおいるスタむルず䞀臎するように、可胜な限りすべおを行っおください。 远加たたは倉曎するコヌドの䞀郚は、䞀般的なコヌドから抜け出しおはなりたせん。 コヌドの蚭蚈には奜みがありたすが、コヌドはプロゞェクトで採甚されおいる䞀般的な暙準に準拠する必芁がありたす。 それ以倖の堎合は、「あなたのスタむルが気に入らないので、自分のスタむルの方が良いず思うので、私ず同じようにすべきです」ず蚀っおいるのず同じです。



欠陥の優先順䜍付け


もちろん、コヌドはすべおのオヌプン゜ヌスプロゞェクトの基瀎ですが、コヌドを曞くこずはそれに参加する唯䞀の方法ではありたせん。 技術サポヌトは、倚くの堎合、新しい機胜ずバグ修正の远求においお十分な泚意が払われおいたせん。 しかし、これはたさに初心者でもプロゞェクトに入るこずができる領域です。



たずえば、OpenVZプロゞェクトには完党にオヌプンな欠陥管理システム-bugs.openvz.orgがあり、すべおの既知の修正枈みおよび未修正の問題がプロゞェクトの党期間ほが10幎にわたっお収集されおいたす。 バグトラッカヌは、開発者ずナヌザヌ間のコミュニケヌションメカニズムの1぀です。 珟圚のリク゚ストに垞に取り組むこずで、プロゞェクトに貢献する絶奜の機䌚が䞎えられたす。 システムを䜿甚するには、 実力䞻矩の原則に埓っお、プロゞェクトマネヌゞャヌから付䞎される特別なアクセス暩が必芁になる堎合がありたす。



䞭間バヌゞョンをテストする


゜フトりェアテスタヌのコミュニティでの調査は、プロのテスタヌからのオヌプン゜ヌス゜フトりェアのテストに興味があるこずを瀺したした。 倚くの人がそのようなプロゞェクトに参加したいのですが、どこから始めればいいのかわかりたせん。 同様に、どのプロゞェクトでも商業プロゞェクトであっおもテスタヌは垞に䞍足しおいたす。 バグを怜出しお゜ヌトするず、開発者が問題を芋぀ける時間を倧幅に節玄できたす。 ナヌザヌが「このような手順を実行するずプログラムが機胜しない」ず曞いた堎合、この問題の原因を突き止めるのに面倒くさくないでください。 問題は再発したすか 䞀連の特定のステップを繰り返すこずでそれを実蚌できたすか 問題を特定のブラりザヌたたはディストリビュヌションに限定したすか 問題の本圓の原因がわからない堎合でも、考えられる原因の範囲を絞り蟌もうずするず、開発者が問題に察凊するのに非垞に圹立ちたす。 あなたが䜕を理解したかに関係なく、バグにコメントを远加しお、誰もがそれらに慣れるこずができるようにしたす。



私自身の経隓から、オヌプン゜ヌスプロゞェクトには新しい機胜を十分にテストするのに十分なリ゜ヌスがないず蚀えたす。 したがっお、゜ヌスコヌドリポゞトリのメむンブランチに重倧な倉曎を加える前に、プロゞェクトはテストのためにできるだけ倚くの人を匕き付けようずしたす。 この方法は、テストの呌び出しず呌ばれたす。 このプロゞェクトのコミュニティが持っおいるハヌドりェアおよび゜フトりェア構成の数を持぀プロゞェクトはありたせん。 OpenBSDプロゞェクトの開発者は、テスタヌずナヌザヌの泚目を集めるために、 ニュヌスに新しい機胜が登堎したこずを発衚したした。 OpenVZプロゞェクトでも同じこずを行いたす。テストに䜿甚できる新しい機胜のリストを公​​開しおいたす。



テストに参加しお、補品がいずれかのプラットフォヌムで動䜜するこずを確認できたす。 原則ずしお、新しい「ビルド」をビルドしおむンストヌルし、補品をテストする必芁がありたすが、非暙準のハヌドりェアを䜿甚する堎合、プロゞェクトにずっお特に重芁です。 このような状況でもアセンブリが機胜するこずを確認するず、プロゞェクトマネヌゞャヌが珟圚のリリヌスステヌタスを刀断するのに非垞に圹立ちたす。



テストを曞く


ほずんどのプロゞェクトは、コヌドをテストするために蚭蚈された゜フトりェアパッケヌゞを䜿甚したすが、新しいテストを远加する可胜性を提䟛しないような耇雑なものを想像するこずは困難です。 C甚のgcovなどのテストツヌルを䜿甚しお、既存のテストではテストできない゜ヌスコヌドの領域を特定したす。 次に、適切なテストを远加しお、必芁な機胜をテストできるようにしたす。



バグを修正しお新しい機胜を远加する


問題を修正したり、必芁な機胜を远加したりするパッチは、オヌプン゜ヌスプロゞェクトに参加するための䞀皮の叀兞的な方法です芚えおいるなら、フリヌ゜フトりェアの動き党䜓はこれから始たりたした 。 この方法は、Linuxプロゞェクトに参加したいが方法がわからない人のために、CTO VirtuozzoのJames Bottomleyによっおも掚奚されおいたす。 通垞、圌はAndroidのSIPクラむアントの機胜を倉曎する必芁がある堎合の䟋を瀺したす。 圌は必芁な機胜の欠劂を発芋し、パッチを䜜成しおSIPdroidプロゞェクトに送りたした。



新しい機胜を䜜成するずき、修正したコヌドの䞀郚をテストするテストを远加するず䟿利です。 䞀郚のプロゞェクトでは、すべおのバグ修正に適切なテストを䌎う必芁がありたす。 なじみのないコヌドをマスタヌするずきにメモを保管しおください。 バグに察凊できない堎合でも、䜕をどうやっお芋぀けたのかをチケットに蚘述しおください。 これは、あなたの埌にバグを扱うチヌムメンバヌを支揎したす。



プロゞェクトむンフラストラクチャの維持を支揎する


DevOps゚リアに興味がありたすか この方向は珟圚非垞に人気がありたす。 優秀なDevOps゚ンゞニアを芋぀けるのは非垞に困難です。これは私たち自身の経隓から知っおいたす。 むンフラストラクチャのオヌプンな開発が行われおいるプロゞェクトで経隓を積むこずができたす。 これらは、 Fedora Linuxプロゞェクトであるりィキペディアのようなプロゞェクトです。 OpenVZは、この方向で最初の䞀歩を螏み出しおいるだけです。



プロゞェクトコンポヌネントの継続的統合プロセスのセットアップ、Linuxディストリビュヌションのコンポヌネントのパッケヌゞ化 、開発者の環境の自動セットアップ-これらもDevOpsタスクです。



ドキュメントの䜜成ず翻蚳


ドキュメントは、プロゞェクトの日垞的なコンポヌネントであり、倚くの堎合無芖されたす。 さらに、ドキュメントの問題は、プロゞェクトに粟通しおいる人ではなく、プロゞェクトに粟通しおいる人の芳点から曞かれたずいう事実によっお匕き起こされるこずがよくありたす。 プロゞェクトのドキュメントを読むずきに「プログラムの䜿甚方法を既に知っおいるかのように曞いたように感じる」ず思ったなら、それが䜕であるか理解できたす。 非垞に倚くの堎合、偎からの新しい芋解は、プロゞェクトの盎接参加者が気付かないかもしれない珟圚のドキュメントの欠陥を明らかにしたす。 さらに、プロゞェクトを動的に開発する堎合、ドキュメントはすぐに時代遅れになり、最新の状態に保぀必芁がありたす。



䜕らかの理由でこれを行うこずが「軜薄」だず思う堎合、あなたは間違っおいたす。 オヌプンプロゞェクトぞの「深刻な」たたは「軜薄な」貢献はありたせん。 たずえば、OpenBSD開発者同時にCERNの埓業員であるIngo Schwarzeがmandocナヌティリティを䜜成したした。これは、OpenBSDだけでなくFreeBSD、NetBSD、DragonFlyBSDでもドキュメントペヌゞをフォヌマットし、フォヌマットを敎えるために䜿甚されたす。プロゞェクト内の既存のドキュメントペヌゞ。 圌は BSDCan 2015でこれに぀いお話したした。したがっお、それはあなたにずっお䜕が面癜いかによっお異なりたす。 興味があれば-それを取り、それをしおください



他のナヌザヌの問題を支揎する


チヌムをたずめる最善の方法は、他の人を助けるこずです。 プロゞェクトの継続的な成功のためには、質問、特に初心者からの質問に答えるこずが特に重芁です。 圌が必芁なドキュメントを読んで答えを芋぀けるこずができる質問をしおも、この時間は無駄になりたせん。 さらに、チヌムの新しい、感謝の気持ちのある、アクティブなメンバヌを受け取りたす。 誰もが䜕かから始たり、プロゞェクトが発展し続けるためには、プロゞェクトは垞に人員の流入を必芁ずしたす。



お気に入りのプロゞェクトを宣䌝する


ブログがある堎合は、プロゞェクトで埗た経隓を共有しおください。 ゜フトりェアの䜿甚䞭に発生した問題ず、それをどのように解決したかに぀いお教えおください。 したがっお、1石で2矜の鳥を殺すこずができたす同僚のプロゞェクトぞの泚意をサポヌトし、将来参加する人のための有甚な情報デヌタベヌスを䜜成し、既に説明した質問ぞの回答をりェブで怜玢したす。 技術的な成果や研究に぀いお語るブログは、技術的な問題の開発ず解決における実際の経隓を共有する玠晎らしい方法でもありたす。これは、新しい仕事を探すずきに圹立ちたす。 倚くのプロゞェクトには、プロゞェクト参加者のブログからの゚ントリのアグリゲヌタヌがあり、䌝統的に「惑星」ず呌ばれおいたす OpenVZ惑星、 Linuxカヌネル 、 Perl 、 Freedesktop 、 Gnome 、 Debianなど。 熱心な人々の蚘録は、プロゞェクトに関係がない堎合でも興味深いものになりたす。



蚭蚈する


デザむンは、ほずんどのオヌプン゜ヌスプロゞェクトの灜難です。 退屈なサむトでは、技術的な人が芋た目ではなく実装に専念しおいるずいう理由だけで、説明のないロゎがプロゞェクトに付随しおいたす。 したがっお、デザむナヌの参加は倧歓迎です。 StackExchange Webサむトのナヌザヌは、 「グラフィックデザむナヌがどのようにオヌプンプロゞェクトに貢献できるか」 、 「デザむナヌがどのようにオヌプンプロゞェクトに参加するように動機づけられるべきか 」ずいう質問に答えようずしたしたが、意芋は分かれおいたした。 たた、RedHatのデザむナヌは、オヌプンプロゞェクトぞのデザむナヌの積極的な参加の必芁性を認識し、オヌプンプロゞェクトずデザむナヌがお互いを芋぀けるのに圹立぀サむトを䜜成しようずしたしたが、プロゞェクトの成功した適甚の事実に぀いおは聞いおいたせん。



プロゞェクトにずっお興味深く有甚なタスクを探し、それらを解決しおください。 プロゞェクトぞの参加方法はプロゞェクトごずに異なる可胜性があるため、プロゞェクトに参加するためのオプションの説明が蚘茉されたペヌゞは玠晎らしい出発点になる可胜性がありたす OpenStack 、 OpenVZ 、 FreeBSDなど。 プロゞェクトにこのようなペヌゞがあるずいう事実は、他の人々に開かれおいるこずを瀺唆しおいたす。

すべおの蚀葉を事実でバックアップするために、オヌプン゜ヌスプロゞェクトで専門的な経隓を積んだ3人のフィヌドバックを収集したした。



Yandexの開発者であるAlexander Yurchenko氏


画像

私は、無料のOpenBSDオペレヌティングシステムのコアの公匏開発者ずしお、1幎以䞊にわたっおお金のための最初の本栌的な仕事組み蟌みシステム開発者になりたした。 公匏-リポゞトリぞの曞き蟌みアクセス暩があるずいう意味で。 それ以前は、私はその幎から「芳客」であり、開発者にパッチを送っおいたした。



そのようなプロゞェクトぞの参加は玠晎らしい経隓をもたらすず蚀わなければなりたせん。 優れた倧芏暡なオヌプン゜ヌスプロゞェクトには、開発者がむンタビュヌに通垞必芁ずするすべおのものがありたす。有胜な蚭蚈、優れたコヌディング、バヌゞョン管理システムずバグトラッカヌを䜿甚するスキル、ピアレビュヌ、チヌムワヌクなどです。 など したがっお、このような雰囲気で1〜2幎料理をしおいれば、シニア開発者の䜍眮に察応するレベルに簡単に成長できたす。



実際、それは私ず䞀緒でした。 私は正匏な仕事の経隓劎働者はありたせんでしたが、すぐに䞊玚開発者になりたした。 そしお、最初の週の埌、トラむアル期間は3ヶ月かられロに短瞮されたした:)



キリル・ゎルクノフ 、OpenVZ、CRIUプロゞェクト開発者




画像

私は偶然OpenVZに出䌚いたした。 圌の仕事では、䞻に応甚プログラミングに埓事し、システムプログラミングずの亀点はほずんどありたせんでした。 ある時点で、最初の64ビットラップトップAcerずAMD Turion 64を搭茉を入手したした。Windows64ビットが手元になかったため、Gentooをむンストヌルしたした。 私はその時たでLinuxにほずんど知識がなかったので、叀代のRedHatをプレむしおいたしたが、特に感銘を受けず、このOSは珟圚の䜜業タスクを解決するのに適しおいたせんでした。 Gentooでは、ラップトップは倚少動䜜したしたが、䞀郚のドラむバヌは暙準のカヌネル䟛絊に含たれおいなかったため、゜ヌスから独自のカヌネルを構築する必芁がありたした。 ここで、カヌネル自䜓ではなく、カヌネル構成プログラムで最初のバグを芋぀けたした。 私はネットワヌクを怜玢したした-問題の解決策はありたせん。たあ、私は自分でそれを修正しようずするこずにしたした。 倚くの関連タスクカヌネルの組み立お方法、䜿甚するツヌルなどを凊理する必芁があるこずがわかりたした。 パッチを䜜成し、ニュヌスレタヌに送信したした。 驚いたこずに、コアメンテナヌはそのような「曲がった」パッチに察しおも非垞に奜意的に反応したした先を芋お、私はそれをやり盎さなければならないず蚀いたす。パッチはただ嫌で、すぐに「ゲヌトからのタヌン」を䞎えなかったからです初心者を笑う圌らは䜕をどのように説明し、それを正しく行う方法を瀺した。



コア自䜓は、それがどのように機胜するか、どのアルゎリズムが䜿甚されおいるかにさらに関心がありたした。 この点で、プロゞェクトの「オヌプン性」は非垞に貎重なサヌビスを提䟛したす。特定のタスクがどのように解決されるかを芋るこずができたす理論的ではなく珟実的です。 倚くの堎合、「ある皮の質問ではなく、なぜそうなのか」ずいう質問が発生したした。ここでは、コヌドの䜜成者からフィヌドバックを埗るこずが非垞に圹立ちたす。 オヌプンメヌリングリストは、開発者が䜕をどのように尋ねるかを蚱可するだけでなく、さらに重芁なこずずしお、䞀皮のナレッゞベヌスずしお機胜したす。問題ずその解決方法に぀いおは、アヌカむブでい぀でも怜玢できたす。



実務経隓のない初心者プログラマヌにずっお、このような環境は、私がこれをすべお必芁ずするかどうかを理解するために、自分の手を詊すための単なる肥沃な地面です。



それは私ずほが同じでした。数幎の間、私はコヌド内で䜕かを支配し、パッチを送信し、手でコヌドを受け取りたした。 このような経隓は、事実䞊非垞に貎重です。 そしお、䜕かがうたくいき始めたら、求人がすぐに衚瀺されるこずを確信できたす。 OpenVZのLinuxカヌネル開発者ずの道を暪断したした。 それで、圌らはバニラコアに぀いおはもちろん忘れずに、OpenVZコアず関連プログラムで䞀緒に䜜業するこずにしたした。



プロゞェクトのオヌプン性は、実甚的なプログラミングを孊習する際に非垞に重芁な助けになりたすが、プロゞェクトはプロゞェクトによっお異なるこずを理解する必芁がありたす。たた、オヌプン性だけではコヌドの品質が保蚌されたせんコヌドをgithubにアップロヌドするず、良いコヌドにはなりたせん 同様に、クロヌズド゜ヌスコヌドはアプリオリに良いものでも安党なものでもありたせん。



アレクサンダヌ・ポリダコフ 、開発者


画像

私の物語には、オリゞナルのものは䜕もないず思いたす。 これが通垞どのように起こるか-ある皮の゜フトりェアの䜿甚を開始するず、突然その䞭の䜕かがうたくいかないか、䜕かが欠けおいるか、厄介な劚害がありたす。

オヌプン゜ヌスの堎合、自分で修正するこずができたす。 だから、それはconfig.hcを介した蚭定が再コンパむルによっお私を悩たせたdwmりィンドりマネヌゞャでした最初にxrdbを介しお蚭定を远加し、次にクリックしおフォヌカスなど このような倉曎は、プロゞェクトの最小限のガむドラむンに察応しおいなかったため、分岐する必芁がありたした。 DragonFlyBSDもほが同じです。サむト䞊の魅力的なテキストは面癜そうに聞こえたしたが、FreeBSDは疲れたしたが、突然、英語ず゚ネルギヌ管理ACPI以倖の蚀語のサポヌトが䞍十分であるこずがわかりたした。 私は、FreeBSDのより新しいバヌゞョンからコヌドの必芁なセクションの移怍を開始しなければなりたせんでした。 IRCチャンネルの他の開発者は倚くのこずを助け、䜕が起こっおいるのかを説明し、問題に察凊するのを助けたした。 そこで、カヌネルお​​よびシステムラむブラリの開発である皋床の経隓を埗たした。 私たちはこれでいくらかのお金を皌ぐこずもできたした-モスクワの人がDragonFlyBSDを実皌働で䜿甚しおいお、ACPIずそれのようなで䜕らかのレむドドラむバヌを匷化したかったのです。 メヌルで連絡されたgitログで私を芋぀けたした。

OpenBSDでは、ささいなこずにいく぀かのパッチを投げたした-䟿宜䞊cwmで䜕かを仕䞊げたしたwmではすでに特別でした。kshでは、いく぀かの劚害を修正し、viモヌドを改善したした。 このプロゞェクトでは、新しい貢献者ぞの態床は最高ではありたせん。それを自分で理解し、その埌でニュヌスレタヌに曞くこずを前提ずしおいたす。 ゚ントリのしきい倀は高く、最も氞続的なもののみが生き残りたすが、コヌドは良奜です。

私は9frontにも参加したした 私はWiFiのドラむバヌを完成させ、すでに私に銎染み深いACPIを䜜りたした 。 おそらく、AMLむンタヌプリタヌの最小の動䜜実装を持っおいたす。 たた、カヌネル自䜓は「通垞の」OSず比范しお非垞にコンパクトであるため、理解しやすくなっおいたす。 私はむンタビュヌでそれに぀いお自慢したしたが、それがどれだけ圹立ったのかたたはその逆-私は知りたせん。



さお、ここでオヌプン゜ヌスプロゞェクトの経隓を埗るこずができたす。 䞻なこずは、カヌブコヌドを送信するこずを恐れず誰にでも起こりたす、萜ち着いお圌らが圌をscるずき、本圓に興味深いプロゞェクトを遞択するこずです。 そしお、あなたは経隓ず喜びを埗たす。 雇甚䞻がGitHubHello、Googleでのコミットたたはプロファむルによっおあなたを芋぀ける可胜性はただありたす。



All Articles