オープンソースソフトウェアのリリースが早すぎる[終了]


37

オープンソースソフトウェアをすぐにリリースすることの道徳的責任は何ですか?たとえば、完全にテストされていない、完成に近い製品です。

プログラマーに期待することは何ですか?完全にテストされるまで待つか、オープンソースにリリースしてから、さらに開発、テスト、および進歩を続けますか?

恐れは、ソフトウェアがオープンソースであり、潜在的に消費者の問題につながる可能性があるということです。

これは根拠のない恐怖ですか?


10
懸念がある場合は免責事項を追加してください。:)
ヴォーンヒルツ

18
あまりにも早くリリースすることの欠点は、ソフトウェアを使用できない場合、リリース時に得られる宣伝効果が失われる可能性があることです。それから、後続のリリースは「はい、私はそれを試しました、それは吸いました」。もちろん、それをどのように形にするのにどれだけ必要か、ターゲットオーディエンスに依存します。
-Davidmh

@VaughanHilts私は誰かが怒っていることを心配していません。懸念はもっぱらソフトウェアの配布と消費を改善したいという願いにあります。あまりにもリリースを熱望しているため、私が苦しみたくないのは後者です。
トーマスストリンガー

@Davidmh:それも私の主な関心事です。
マチューM.

8
バイナリではなくソースをリリースすることは、誤った期待を持つ人々が準備ができる前にソフトウェアを使用するのを防ぐ良い方法です。
モニカ

回答:


56

それどころか、できるだけ早くオープンソースソフトウェアをリリースすべきだと思います。そのための「早すぎる」ことはありません(ただし、コンパイルする必要があります)。

または、正式なリリースを行わずに、少なくともソースコードを非常に早く継続的に公開します(たとえば、githubを頻繁にプッシュすることにより)。

ただし、アルファ段階またはベータ段階としてフラグを立てることが非常に重要であり、可能であれば、欠落しているもの、テストされていないもの、または形状が悪いものを(たとえば、READMEor TODOファイルやブログなどで)伝えることが重要です。このような情報を伝えるためにバージョン番号も使用する必要があります。

フリーソフトウェア、起こるべきことは、最高のソースコードに誰かの視線で、あなたにそれを改善する小さなパッチを提案しています。これがソフトウェアを無料にする理由です!

したがって、あなたはあなたのフリーソフトウェアであなたの毎日の仕事を見えるようにする必要があります!外部の貢献者は、パッチがあなたの最近のソフトウェアソースコードで動作しないか、あなたの最近のソフトウェアソースコードの複製である場合、腹を立てます。

あなたが恐れるべきなのは、あなたのソフトウェアに誰も興味を持たないことです(そしてそれに貢献します)。外部ソフトウェアをフリーソフトウェアに引き付けること(特に、外部の貢献者を引き付けること)は長い道のりです。


33

TL; DR:

早期リリース。頻繁にリリース。

個人的な逸話:

私が取り組んでいるプロジェクトに本当に興奮しました。本当に興奮しています 夜興奮して眠れませんでした。そこで、共同開発者に、彼が望んでいたよりも早くv1.0をリリースするようにプッシュしました。

ひどかった。想定どおりに機能しませんでした。毎回バグがありましたが、ログに記録して修正しました。私たちは、発見しなかったかもしれないバグをいくつかの早期導入者に提出させました。1、2週間後、多くの問題に対処した新しいリリースをリリースし、新しい機能の構築に戻りました。

早めにリリースすることは、私たちが成し得た最善のことでした。実際のユーザーの前に製品を配置しました。このバグを公開することで、プロジェクトが改善された可能性があります。また、このプロジェクトに真剣に取り組んでいることを早期導入者に知らせています。さらなるリリースと積極的な開発が予定されています。

しかし、それは簡単に他の方法で行ったかもしれません。これらのバグレポートは無視できたでしょう。または、すぐに反応しなかったかもしれません。数週間ではなくv1.1をリリースするのに3か月かかった場合は、別の話だったかもしれません。


9
あなたの唯一の大きな間違いはそれを「v1.0」と呼んでいたようです。一般的にユーザーは、目的とする目的で使用でき、明らかなバグなどがないという意味で「完成品」を示すことを期待しています。
R ..

3
はい。私は後から見てそれに同意します。公平を期すために、私はそれを徹底的にテストしたと思った。私はそれが @Rの時点で1.0だったと思っていました...私は間違っていました。
ラバーダック

12

クローズドソースソフトウェアと同じです。コミュニケーションは重要です。

ユーザーにソフトウェアの状態とダウンロードの理由を知らせます。

ソフトウェアは、完全にテストされているかどうかに関係なく、常に顧客の問題につながります。ほとんどのお客様はその事実を受け入れますが、一部のお客様は決して受け入れません。しかし、ソフトウェアが合理的に予想されるよりも多くの問題につながる場合、顧客が取っているリスクを知らせる道徳的義務があります。情報は短い形式(「Alpha / Beta / EarlyAccess」ラベル)*と詳細の両方である必要があります。既知の問題、回避策、および特別な考慮事項のリスト(データが破損する可能性がある場合など)。

*ユーザーは、いくつかの大手ソフトウェア会社によって「ベータ」をソフトウェアがかなり堅固な状態であると考えるように訓練されているため、ソフトウェアが「ベータ」であることをユーザーに伝えるだけでは十分な情報ではないことに注意してください。


3
「ベータ」はかなり堅実ではないということを推測すべきでしょうか?「大規模ソフトウェア会社」は、ソフトウェアを実世界のデータと対toさせるために、本番対応の準備が整ったときに「ベータ」と呼んでいると思います。たぶんそれをプロトタイプと呼ぶのでしょうか?
ピエールArlaud

2
現在、「ベータ」ラベルは人によって異なることを意味しているため、「ベータ」ラベルからは、ソフトウェアが「ある程度使用可能」から「ほぼ完成」までの間であること以外はあまり推測できません。一部のお客様は何かを推測しますが、すべてのお客様が同じことを推測するわけではありません。それが私が発言した理由です。
ピーター

3
現在、プロトタイプビルドには「アルファビルド」という用語を使用する傾向があります。それは人々に「このことはまだベータ版ではない、人々だ!ほぼ完成するとは思わない」という感覚を与えます。
ラバーダック

2
バイナリパッケージを使用せずに、たとえばソース形式でのみ、別の形式で配布できます。
-el.pescado

3
ゲーム業界が「ベータ版」の意味を変える前の@SteveJessop、私はあなたに同意したでしょう。=)
ラバーダック

7

道徳的責任は一切ありません。誰もあなたの中途半端なソフトウェアを使用することを余儀なくされていません。

心配する唯一のものはあなたの信頼性です。


2
説明がないと、他の誰かが反対意見を投稿した場合に、この答えが役に立たなくなることがあります。たとえば、誰かが「道徳的責任があります。中途半端なソフトウェアを使用したくなるかもしれません。懸念されるのはあなたの信頼だけではない」というような主張を投稿した場合です。、この答えは読者が2つの反対意見を選ぶのにどのように役立ちますか?回答方法のガイドラインに合わせて、より良い形状に編集することを検討してください。
-gnat

6
@gnat:この答えが説明なしであることは真実ではありません-説明はまさに次の文です:「誰もあなたの半熟したソフトウェアを使用することを強制されていません」。はい、それは簡単な説明ですが、それでも「道徳的な責任は一切ありません」と言う理由です
-slebetman

@gnat:ほとんどの回答について同じことが言えます。「リリースすべきだとは思わない[…]フラグを立てることはそれほど重要ではない[…]」。この回答には、より多くの外部ソースを期待していますか?
ピエールアラード

2
善意と悪意があります。私はあなたに同意しますが、より強力な議論でそれをバックアップするのを見てうれしいです。
ラバーダック

6

私の経験では、達成すべきバランスがあります。

現在、私は自分の書いたコードを利用した非常にエキサイティングなFOSSプロジェクトのように見えるものを作成している開発者と(コードに触れることなく、質問に答え、開発提案を提供するという意味で)働いています。パブリックリリースは、長期的にプロジェクトを大幅に改善する設計変更の実現により繰り返し延期されてきましたが、既に記述されていて既に「機能している」コードの大幅な書き直しが必要です。私の見解では、機能するが不完全なリリースが表示されるようになってすぐに行われた場合、変更(および実際のパッチ)のアイデアは、このプロジェクトに関心のあるより広範なコミュニティからもたらされ、問題は1つずつゆっくりと表面化します。開発者がそれらについて考え、自分自身やコミュニティの他の関心のあるメンバーからの設計フィードバックを求めます。したがって、この観点から、私は「早期リリース、頻繁にリリース」を強く推奨しています。

一方、低品質のリリースは、新しいプロジェクトが着手する前に見た目を悪くする可能性があります。私が見たいくつかの落とし穴は次のとおりです。

  • インターフェイス定義はあるがコードはないスケルトンツリー。
  • 開発者以外の人のために正常にコンパイルされないコード。
  • プログラムのビルド/実行方法に関する指示はありません。
  • どの側面が機能すると期待できるかについての文書はありません。
  • プログラムが何をするか、何をするかについての不明確な説明。
  • 有用性のデモンストレーションの欠如。

最後のポイントとして、私は次のようなことを考えています:

  • hello-worldタイプのプログラムをコンパイル/実行することさえできないコンパイラー/インタープリター。
  • 少なくとも、ある種のサンプルプログラムを実行できない、または何かを実行していることを実証できないエミュレーター。
  • 変更されていない画像をロードして再保存する以外に何もできない画像処理ツール。
  • タイトル画面のみのゲーム。

これらの種類の問題は、最初に動作するコードの不足について非常にオープンでない限り、揺れにくいハードウェアイメージにつながります。

最後に、バージョン番号を意味のあるものにします。プロジェクトがクラッシュすることなくユーザーが期待することを実行するまで、プロジェクトを「1.0」と呼ばないでください。私は常に、最初のパブリックリリースに「0.5」前後のバージョン番号を使用してそこから行くことに成功していましたが、意味のある「0.1」や「0.10」なども見ました。


1

フリーソフトウェアをリリースすると、マイナスの結果が生じる場合があります。一部の仕様は、一般に配布されるすべての実装が最初に公開されたときに仕様に完全に準拠することを条件に、一般にライセンスされています。出版社は、仕様の進行中の実装を配布することを法的に禁止しています。仕様の発行者から特定の交渉済みライセンスがなければ、すべてのテストに合格するまで誰とでも共有する必要があります。これにより、仕様の実装に「カテドラルモデル」(Eric S. Raymondが呼んだように)が強制されます。

そのようなライセンスの下での1つの仕様は、Java言語仕様です。この制限は、JVMと互換性のある仮想マシンの開発者に適用されますが、幸い、JVMで実行されるアプリケーションの開発者には適用されません。

Liu Qihao&Ciaran O'Riordanによる記事「4 Shifty Details About Microsoft's 'Open Source' .NET」は、同様の方法でCLRの不完全な実装を除外するために、.NETライブラリおよびランタイムコンポーネントに対するMicrosoft Patent Promiseを解釈する可能性について言及しています。 。ただし、これもCLRで実行されるアプリケーションには適用されません。


2
これは、JRE / JDK実装を作成する場合にのみ重要です。JRE/ JDKで実行するJavaプログラムではなく、それを作成する場合に限ります。
sjas

@sjas JLSが遭遇する可能性のある唯一の仕様であり、この制限が「完全であるか、自分自身に保持する」ということを暗示しようとしていますか?
ダミアンジェリック

あなたは私がこれを暗示していることを暗示しようとしている。;)
sjas

@sjasありがとう。この答えを有用にする他の方法はありますか?
ダミアンジェリック

ちなみに私はダウン投票しませんでした。私はあなたの答えを最初に読んだときに持っていた誤解をすでに解消しました。何かを変更したい場合は、投稿に含めることができます。
sjas
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.