オープンソースプロジェクトは、その設計やアーキテクチャに関するドキュメントなしで成功するにはどうすればよいですか?


11

有名なオープンソースプロジェクトを勉強してプログラミングスキルを向上させたいのですが、ソースコードに飛び込むだけで簡単に迷子になります。

そこで、最初にコードの構成に関する一般的なアイデアを得るために、設計またはアーキテクチャ(UMLダイアグラムなど)に関するドキュメントを読むことにしました。しかし、驚いたことに、Hibernate、Spring、ASP.NET MVC、Railsなどの大規模なオープンソースプロジェクトのアーキテクチャドキュメントは見つかりませんでした。

だから私は疑問に思い始めました:新しい開発者が読むべきアーキテクチャ/設計ドキュメントがない場合、またはプロジェクトマネージャーがソースコードを開いただけでドキュメントを閉じた場合、オープンソースプロジェクトはどのように成功するのでしょうか?


3
"最も"?これを具体的な統計でバックアップできますか?何件読みましたか?いくつありますか?適切な文書が欠けていたのは何人ですか?数字がない場合は、「ほとんど」などの単語を削除し、実際に見つけた内容に基づいて実際の事実に置き換えてください。また、自分自身を指すときは「I」を大文字にしてください。
-S.Lott

@ S.Lott主観的な「ほとんど」で申し訳ありません。私はソフトウェア業界の初心者です。大学時代に聞いたドキュメント(UMLダイアグラム、フローチャート、ブリーフデザインドキュメント、Detaledデザインドキュメントなど)を、プロジェクトのウェブサイトまたはコードリポジトリの両方で、幸運なく検索しようとしています。ユーザーガイドのドキュメントを見つけるためだけに。彼らの設計/アーキテクチャ文書を検索する一般的な方法を教えてください。
-TomCaps

1
「多く」を削除してください。それはほとんどと同じくらい間違っています。質問を更新して、見たい特定のドキュメントが特に欠けている特定のオープンソースプロジェクトを具体的にリストしてください。正確かつ具体的にご記入ください。主観的で曖昧にしないでください。
-S.ロット

ASP.NET MVCにUMLダイアグラムが含まれていない理由は、Visual StudioがソースコードからUMLダイアグラムを作成できるためだと思います。
user16764

5
あなたは「企業」が良いことであるという誤った仮定の下で活動しています。大学でデザインについて学んだことはすべて嘘です。UMLにはまったく価値がありません。プロジェクトを作成する際に必要なのは、何をすべきかについての一般的な考えと、最初に間違った場合にそれを捨てる意欲だけです。既存のプロジェクトの場合、通常、メインヘッダーをスキミングするだけで、プロジェクトのレイアウトを把握できます。
o11c 14

回答:


10

なぜ新人の開発者が読むべき建築/設計ドキュメントを持っていないのに、オープンソースプロジェクトが成功できるのか?

前提は常に、自分が何をしているのかを知っており、あなたが見ようとしている(そして期待している)ことについて合理的に密接に理解しているということです。

たとえば、SymfonyフレームワークのPHPコードを調べると、依存性注入、イベント、モデル/ビュー/コントローラーパターンなどについて既に知っていることが期待されます。

同様に、LinuxカーネルのCコードに飛び込む場合、モジュール性、シグナル、プロセス、スレッドなどの現実的な能力を備えていることが前提となります。また、1日16進数で16進数を食べ、巨大なシャベルでコアダンプを掘り下げるコツが必要です。

メンテナは、それが事実問題であるため、アーキテクチャを文書化する手間をかけません。場合によっては、ソースツリーのどこに何があるのか​​を知ることができます。しかし、より一般的には、ソースツリーの編成方法により、説明がわかりやすくなります。

要するに、コードを覗くまでにメンテナーがあなたに知っていると期待するスキルのいずれかが欠けているなら、おそらくあなたの給料等級をはるかに超えるものを掘り下げているでしょう。最初に概念を理解してください-MVCモデルとは何ですか?依存性注入とは何ですか?その後、ダイビングします。


1
メーリングリストを見ると、誰かが問題を抱えていたり、何かを変更したいときはいつでも、Linuxカーネルがアーキテクチャについて広範な議論をしています。カーネルソースツリー自体にはありませんが、それについて書かれたドキュメントもかなりあります。
edA-qa mort-ora-y

17

最も成功したオープンソースプロジェクトが成功したのは、何よりもまず、プログラムが印象的であったか、当時他のプログラムではできなかったことをしたからです。プロジェクトを始めたプログラマーはコードを必要としないほど十分に知っているので、それは必ずしもソースが十分に文書化されていることを意味しません。不幸なことに、オープンソースプロジェクトを十分に文書化する必要はありません。それは良いプログラムであるか、平凡なプログラムである必要がありますが、プログラマーがそれに興味を示すには十分に文書化されている必要があります。


私の会社では、開発者がプロ​​ジェクトでコードを書くことを承認される前に詳細な設計ドキュメントを提供する必要がある要件手順です。この手順はオープンソースプロジェクトにとって異常ですか?
TomCaps

5
@TomCapsは、私はいくつかのFOSSプロジェクトが豊富なドキュメントを持っているので、非常に簡単であることを最大の理由を考える:あなたがいることが必要解決するための小さなプログラムを書く場合、あなたが持っているが、それはおそらく、あなたの開発以来、あなたも、あなたのドキュメントを必要としないことということです誰にとっても有用であることが保証されていないドキュメントを書くのではなく、プログラムの改善に時間を費やしたいと思うでしょう(開発者以外の人がプロジェクトを使用しない場合はどうでしょうか?)。ベストプラクティスではありませんが、多くのFOSSプロジェクトは開発者の時間が不足しています。
ジェフウェリング

5
@TomCaps:この手順では...私が知っているほとんどの企業のために異常がある
TREB

1
ほとんどのオープンソースプロジェクトは企業ではありません。あなたは、期限と予算のある、私がビルドするために支払われているプロジェクトがあるときに何が起こるかを考えています。あなたのニーズを満たすために、または楽しみのためにコーディングする人がたくさんいて、予算やクライアントがいない場合、あなたはそのようなものを持っていません。
エリン14

1
@TomCaps-オープンソースソフトウェアを書く人は誰でも好きなことを正確に行うことができます。一部のプロジェクト(Apacheファミリなど)には、コードをコミットするすべての人のためのルールとガイドラインがあり、これにはdoumentation標準などが含まれる場合があります。また、私の個人的な経験)は、通常最適ではありません。開発者は、プログラムが実行すべき「内容」の詳細な説明により、実装を最適化し、創造的な戦略をソリューションに適用できます。
ジェームズアンダーソン14

12

通常、オープンソース開発者は才能があり、専門分野でもプロジェクトを選択しているため、頭蓋骨にはすでに「ドキュメント」があります。誇張はほとんどありませんが、これらのいずれかが欠けている場合にのみ徹底的なドキュメントが必要です:o)

正直なところ、未知のコードベースに直面しているとき、私は実際に「ドキュメント」を読みません。簡単な紹介、いくつかの概念的なスケッチ、そしてコードにまっすぐ入ってください!実験して、小さな変更を試してください。適切に設計されたコードに最適です。私が恐ろしい混乱に直面した場合、それらを学ぶ最善の方法は、明確に改善するために少しずつリファクタリングすることです(理想的には単体テストの助けを借りて)。

追加の理由は、これらのプロジェクトの単純なオーガニックデザインのルーツかもしれません。そのため、アーキテクチャーは、「文書化された」エンティティーというよりも、開発者の頭の中で進化したビジョンです。


8

そのようなドキュメントがしばしば存在しない理由は非常に単純です:プログラマはドキュメントを書くのではなく、プログラミングするのが好きです。特に、オープンソースプロジェクトでは、開発者が空き時間や余暇によく貢献します。

基本的に、ドキュメントを書くのは面白くない。そして、もし彼らがそれに対して支払いを受けないなら、誰も彼らの自由な時間を楽しくない何かをして過ごしたいと思うでしょうか?


一部の大規模なオープンソースプロジェクト(GCC、Linuxカーネル、Firefox、Qtなど)では、貢献者のほとんど(またはかなりの部分)がプロジェクトの作業(フルタイムまたはハーフタイム)に支払われています。そのため、フリーソフトウェアの
対価を
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.