5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Nervesプロジェクトのリポジトリを観察

Last updated at Posted at 2023-06-11

Nervesチーム がどのように開発を進めているのか、どのように Hex パッケージをリリースしているのかを知るために、リポジトリをざーっと観察してみました。あくまで個人のメモです。Nervesチーム の見解ではありません。

Nervesとは

一言で言うと「Elixir で IoT!?ナウでヤングで cool な Nerves フレームワーク」です。

観察するリポジトリ

Nerves プロジェクトは、各機能に集中して取り組めるよう、複数のリポジトリに分散されて開発されています。Nervesチームは少なくとも50個ほどのリポジトリを管理しています。今回は以下の2つの主要リポジトリに焦点を当てます。

コミット履歴

nerves-project/nerves

nerves-commits 2023-06-06 at 08.09.53.png

nerves-project/nerves_system_br

nerves_system_br-commits 2023-06-06 at 08.06.31.png

コミットメッセージ

  • 特にコミットメッセージをどう書くかについて規約は設けてないようです
  • リリース時は一貫して v<major>.<minor>.<patch> release という書式のタグに対応するコミットメッセージになっています

バージョン表記

0.y.zのような初期の開発フェーズにおけるバージョン

セマンティック バージョニングのFAQに要注目です。世の中にはメジャーリリースされていないパッケージがすくなくありません。
その意味を理解する必要があると思います。

0.y.zのような初期の開発フェーズにおけるバージョンの取り扱いはどのようにすべきでしょうか?
 一番簡単な方法は0.1.0からで開発版をリリースし、その後のリリースのたびにマイナーバージョンを上げていけばよいでしょう。

1.0.0のリリースはいつすべきでしょうか?
 もし既にプロダクション用途であなたのソフトウェアが利用されているのなら、それは1.0.0であるべきでしょう。
またもし安定したAPIを持ち、それに依存しているユーザーが複数いるのなら、それは1.0.0であるべきでしょう。
もし後方互換性について多大な心配をしているのなら、それは1.0.0であるべきでしょう。

Hexもそれに言及しています。

All Hex packages are required to follow semantic versioning. While your package version is at major version "0", any breaking changes should be indicated by incrementing the minor version. For example, 0.1.0 -> 0.2.0.

メジャーリリース前にパッチバージョンを使ってはいけないのです!

この点で Nerves いくつかのパッケージには厳密に言うとセマンティック バージョニングでないものがありますが、プロダクションで使用されているパッケージを徐々にメジャーリリースする方向で進んでいます。メジャーリリース後にも既存のユーザもサポートするために、Nerves 関連のパッケージの依存性には複数のバージョンに対応できるよう以下のようにorを用いているものがあります。

circuits_i2c ~> 1.0 or ~> 0.3.0

Git タグ

バッカス・ナウア記法でバージョン番号を示し、接頭辞vをつけたものが、Git タグになります。

Github のリリース

Git タグ に対応する Github リリースと言うものがあります。各バージョンのコードやビルド結果などをそこからダウンロードすることができます。

Hex パッケージの出版

Hex のドキュメントに従って行います。
ドキュメントは ex_doc パッケージを用いて生成できます。

解析ツール

mix formatcredodialyzer が使用されています。これらがCIで実行されます。

以前は excoveralls も使用されていましたが、執筆時点で OTP 26 でうまくイゴかない問題があり、これを使わない方向で進んでます。

mix env

Hex 関連の操作に関しては開発や本番とは別のdocsと言う環境(Mix environments)を設けています。

...
      preferred_cli_env: %{
        credo: :test,
        docs: :docs,
        "hex.publish": :docs,
        "hex.build": :docs
      },
...

継続的インテグレーション (CI)

執筆時点では、継続的インテグレーション (CI) には Circle CI が使用されています。

Dependabot で依存関係のアップデート

コミュニティ

ぜひお気軽にお立ち寄りください。

5
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?