オープンソースプロジェクトの設計方法

自由時間と非自由時間[1]で、githubでいくつかのプロジェクトを開発します。また、できる限り、プログラマーとして興味のあるプロジェクトの生活に参加しています。


最近、同僚の1人がアドバイスを求めました。彼が開発したライブラリをgithubに配置する方法です。 このライブラリは、会社のアプリケーションのビジネスロジックとはまったく関係ありません。実際、特定の標準を実装する特定のAPIへのアダプターです。 彼を助けて、私はこの分野で直観的で長い間自明なことは、これを初めて行う人には完全に未知であり、オープンソースにはほど遠いことに気付きました。


私は少し調査を行った結果、このトピックに関するhabrahabrに関するほとんどの出版物が参加(寄稿)のトピックをカバーしている、または単に何らかの方法でオープンソースに参加する動機を与えているが、プロジェクトを適切に設計する方法に関する包括的な指示を提供していないことがわかりました。 一般的に、RuNetでは、Yandexによると、このトピックは動機、補償のエチケット、githubの使用の基本の側面からカバーされています。 しかし、とられる特定のステップに関してはそうではありません。


201 *では、スタイリッシュでファッショナブルな若者向けオープンソースプロジェクトとは何ですか?


この記事では、次の問題は解決しません。



オープンソースプロジェクトのメンテナーであり、見知らぬ人への積極的な貢献者である人にとって、この記事で説明するポイントの大部分はおなじみであるか、直感的かもしれません。 しかし、まだ何も残っていません。時々、私は自分自身の新しいニュアンスに気付きます。 したがって、コメントでは、記事を補完する興味深いアイデアを見て喜んでいます。


持っている必要があります


まず、すべてのOSプロジェクトに「必須」を検討したいと思います。 最小限の紳士のセット。これがないと、プロジェクトは完成した印象を与えません。 個人的には、ライブラリを選択するとき、パッケージマネージャーに新しい依存関係を追加するために、これらの各ポイントは必須であると考えています。


Github


明らかに、githubはOSプロジェクトのホスティング、および一般的な現代開発の旗艦としてリードしています。 また、あなたが世界と共有することを決めたプロジェクトのためのハードカレンシーの明白な選択:git。 オプションなし。 すべての選択肢は、事実上、地下、または過酷な所有権です。


.gitignore, . .


: — , , /, — gitignore.



— .


Github, , . LICENSE, .


marked-one


README.md


. . ( ..).


:


  1. (, , )
  2. ( , , , )
  3. , ,

(SemVer) (CHANGELOG.md)


, . . , , :



, .



TDD, =)


, , ? , 100% , ?


100% 100% , .


— -. , QA .


CI


Travis-ci github . .travis.yml — , , , - .



, . Composer, npm, maven, etc.


( SemVer, ) , CI ( , ), .


, github / travis / .


, .


, SOLID, etc


.


: ? Open/Closed? , - ? ?


, : ? ?


— , , - .


, .



: JSR, PSR, code styles. , !


: ?


RFC, .


,


, , FAQ


README. , , , , .


. .


  1. Wiki-. github, md github pages, .
  2. - . , - .
  3. FAQ — .

github issues.


CONTRIBUTING.md, CONTRIBUTORS.md, ISSUE_TEMPLATE.md, PULL_REQUEST_TEMPLATE.md


, , , github, .


: .


: .


, , — .


github , . : https://github.com/github/gitignore/community ( , ))


, ,


, , , , , .



. README . :



.



CI , .. , , github .



!


Docker?


, ?


: , .


CI- . .


vagrant . Docker . , . " ...".


-, docker-compose stack . docker-compose.yml.


[1]: Open Source. : , , , , github docker hub. - , , . : (, ), — NDA.



Source: https://habr.com/ru/post/J341166/


All Articles