ポッドキャスト: Andres AlmirayがJReleaserであらゆるソフトウェアをあらゆるOSにリリースする方法について語る
オープンソース貢献者であるAndres Almirayは、JReleaserプロジェクトの現状について、このツールがJavaだけでなくあらゆるエコシステムで使用可能であることを説明し、Common House Foundationの使命にも触れている。
キーポイント
JReleaserの汎用性
JReleaserはJavaだけでなく、あらゆるエコシステムで使用可能なソフトウェアリリースツールである。
プロジェクトの現状
プロジェクトの創設者であるAndres Almirayが、JReleaserの現在の状態について議論している。
Common House Foundationの使命
記事では、Common House Foundationの使命についても言及されている。
影響分析・編集コメントを表示
影響分析
この記事は特定のツール(JReleaser)の機能紹介とプロジェクト状況の共有が主であり、AI/テクノロジー業界全体に直接的な影響を与える内容ではない。開発者向けの実用的な情報として参考になるが、業界を変えるような重大なニュースではない。
編集コメント
特定の開発ツールの紹介記事であり、AI業界との直接的な関連性は低いが、ソフトウェア開発プロセスの自動化という観点では参考になる情報。
トランスクリプト
オリムピウ・ポップ:皆さん、こんにちは。私は InfoQ の編集者であるオリムピウ・ポップです。私の目の前には、おそらくオープンソース空間、特に Java エコシステムにおけるベテランの一人がいます。アンドレス・アルミレイさんです。お忙しい中、お時間を割いて話してくださりありがとうございます。もしよろしければ、自己紹介をお願いします。あなたは数々の栄誉を授かっていますが、どれを選ぶべきか迷ってしまいますので、あなたが気に入ったものを選んでください。
アンドレス・アルミレイ:番組にお招きいただきありがとうございます、オリムピウさん。光栄です。先ほど申し上げた通り、私の名前はアンドレス・アルミレイで、Java Champion です。今年でオープンソースへの積極的な貢献を始めてから 20 年になります。非常に素晴らしい旅でした。ご指摘の通り、私は長い間 Java の開発に携わってきました。また、Groovy 言語における仕事でも知られています。過去 20 年間に関与したり取り組んだりしたプロジェクトがいくつかあります。それらはビルドツール、アプリケーションフレームワーク、ビルドツールのプラグインなど多岐にわたります。それぞれには小さな物語があります。オープンソースに取り組むことで、時間や国を超えて多くの人々と出会えたことは本当に素晴らしいことです。あなたのような方々ともお会いできたのはその一例です。
オリンピウ・ポップ:そのエピソードについてですが、少なくとも2つは私が知っています。1 つはサプライチェーンにおけるセキュリティに関連するものでした。これは特に欧州のサイバーレジリエンス法の影響もあって、誰もがより厳格な対応を迫られており、人々は再現可能なビルドに費やした時間について議論しています。エルヴェ・ブーテミー氏は、JReleaser で必要なツールを集めていた際に一緒に過ごした時間をいくつかお話しされていました。より一般的なエピソードはマックス・アンダーソン氏からのもので、彼は JReleaser が Java 界隈における優れた CLI ツールの一つであると指摘し、特にアジェンティック AI や生成されたその他の技術が台頭する現在、Java エコシステム全体で CLI ツールに関する取り組みをさらに強化するための呼びかけを行いました。では、成功のレシピとは何でしょうか?JReleaser を数年間開発してこられたと伺っておりますので。
JReleaser は Java だけでなく、あらゆるエコシステムでソフトウェアをリリースできます [02:53]
アンドレス・アルミライ:はい。今年4月10日には、バージョン 1.0.0 のリリースからちょうど4周年を迎えます。
オリンピウ・ポップ:おお、すごいですね。まだそのペースを維持されているのですか?JReleaser のリリースサイクルについては非常に規律正しいと伺っておりますが、現在もそのペースを守っておられるのでしょうか?
Andres Almiray: はい、私たちは2 ヶ月ごとのリリースサイクルを採用しており、これによりユーザーは今後の予定を把握できます。リリースは偶数月の月末に行われます。今日は2 月18日に録音していますので、2 月の末日に次のリリースがあり、その次は4 月の末日までに公開される予定です。また、2.0 のロードマップ策定も目前に迫っており、互換性を破るような主要な変更やいくつかの機能追加を予定しています。間もなくアルファ版の公開を開始するかもしれませんが、バージョン20 までのリリースサイクルは現在のものと異なるものになる可能性があります。1.x バージョン用の現在のリリース体制については、最終的な切り替えが行われるまで維持される見込みです。
Olimpiu Pop: なるほど、2.0 の開発がまだ計画に含まれているとのこと、安心しました。あなたが以前おっしゃっていた特別な内容について伺ってもよろしいでしょうか?公開してよいかどうかは別として、その時点では「J」を削ぎ落とすという話でしたよね。それはもはやJavaエコシステムに限定されないものになるからです。
Andres Almiray: はい。私たちが言及したことのひとつに、ツールのリブランディングの可能性がありました。私はまだ、そのリブランディングを行うべきかどうかを決めかねています。このツールを知り、実際に使用している人々にとっては、もちろん名前を認識しているでしょうし、あらゆるソース言語で使用できることも知っているはずです。すでに人気のある言語向けの例も作成しています。もちろん、Rust、Go、Python、Perl、C++、C#、Ruby など、そして Odin や Nim といった多くの他の言語、あるいは Zig、Swift なども含まれます。これらを必ずしも「奇妙な」と呼ぶ必要はありませんが、リストは際限なく続きます。名前に"J"が含まれているからといって、このツールを Java のみに制限するわけではありません。しかし、Java エコシステムに新しく参入した人々や、このツールの存在を知らない人々がネイティブのリリースツールを探そうとした場合、見つからない可能性があり、「なぜ Java ベースのものを使って Rust プロジェクトをリリースしなければならないのか」と考えるかもしれません。それは理にかなっていませんよね。
私がそれを Rust にしたいのは、それが私のエコシステムの一部分であり、私が知っているツールチェーンの一部だからです。そのため、リブランディングが重要になる場面があります。つまり、ソースのエコシステムにはネイティブではないものの、代替手段が存在することを人々に示すのです。
主要なオペレーティングシステムへのリリース [05:32]
オリンピウ・ポップ:それは理にかなっています。この議論の結果、新しいツールができるのか、それとも 2.0 を維持した旧来のツールなのか、楽しみに見ています。しかし、録音ボタンを押す前に話し合った通り、機能面において頭打ちになったとおっしゃっていましたね。つまり、製品が成熟期に入ったことを示唆しています。
アンドレス・アルミライ:確かに、安定したプラトー(横ばい状態)に達したようです。各リリースでまだいくつかの機能が追加されていますが、以前ほど多くはありません。パイプラインにある機能には、2.0 のロードマップで追跡しているような破壊的変更や互換性の喪失を伴うものがあります。もしかすると、2.0 へ移行せざるを得ないほどの決定的な数の機能に到達したのかもしれません。最近、追加の発表を行いました。リリースを投稿する際、メールや Slack チャンネルなど複数の配布チャネル向けの発表を作成できるようになりました。LinkedIn や Reddit での発表も可能にする機能を追加しました。そして、次のリリースでは、Twist という新しい発表チャネルにも対応します。また、複数のデジタル署名アルゴリズムを同時に使用できる機能も追加されました。
過去には、PGP または cosign のどちらか一方しか利用できませんでしたが、現在ではリリースするタイトルやアーティファクトに応じて、両方を利用できるようになりました。さらに、MiniSign という第三の署名方式も追加されています。
このツールの初期リリース段階において、一部の開発者から Windows 署名ツールを使用した署名サポートの要望がありました。Windows 署名ツールは Windows プラットフォーム上でしか動作しないため、当ツールがプラットフォームに依存しないことを目指しています。同様に、OSX での実行に関する類似の要望もありました。
そこで、JSign という別のオープンソース Java プロジェクトがあります。これはあらゆるプラットフォームで実行可能であり、Windows 互換の署名を生成するためのものです。おそらくバージョン 20 のリリースまでにこの機能を追加する予定ですが、4 月のリリースでは、すべてのプラットフォームで任意種類のデジタル署名を提供できる機能を実装できるようになることを期待しています。
Olimpiu Pop: すべての新機能の成功をお祈りします。どれも非常に興味深く、間違いなく役立つでしょう。以前から取り組まれていることのひとつに、異なるプラットフォーム間での配布チャネルの設定があります。ユーザーが頻繁に利用しているいくつかのパターンや、ユーザーの利用状況から得られた教訓についてお聞かせいただけますでしょうか?
Andres Almiray: さて、このようなツールを構築する最初の理由の一つは、誰でも簡単に利用できるように JavaFX アプリケーションをデプロイするためでした。つまり、Homebrew を使用すれば、その Homebrew を通じて JavaFX アプリケーションをインストールできます。しかし、これには私が少し Ruby を学び、このためのマニフェストを作成するための形式を理解する必要があります。また、Windows では Homebrew が機能しない人もいます。そのプラットフォームに必要なパッケージマネージャーが必要です。いくつか選択肢があります。Scoop があり、これは Homebrew と非常に似ています。もちろん、Winget や Chocolatey もあります。そして同じことが起こります。各マニフェストファイルの異なるセクションをどのように記述するかを理解する必要があります。XML、JSON、その他多くの形式があり、これらすべてを追跡する必要のあることがあまりにも多く、手作業でこれらを行うのは非常に複雑になってしまいました。そのため、このツールが生まれることになりました。
そこで、このことから、私たちは、異なるパッケージマネージャーへの公開にこのツールを使用する人々のほとんどが、まず Homebrew を選び、次に Winget を選ぶ傾向があることがわかりました。第三に、Winget ではない場合、Chocolatey または Scoop を使用して Windows ターゲットとする人々もいます。そして、Docker、Podman、あるいは Google の Jib(これもサポートしています)を使用して Docker イメージを作成したいという人々もいます。
オリンピウ・ポップ:ネイティブアプリケーションをまだ使用している人がいるようですが、Docker はすでに多くの人の標準となり、私たちが期待したほどの普及を見せ始めています。しかし、まだ疑問点があります。あなたは製品が成熟していると明確に言及されましたが、アーキテクチャ、特に基盤となるアーキテクチャについてはどうでしょうか?あなたがこれを順調に立ち上げるために多くの関心を払ったことは承知しています。また、私たちの最初の議論の一つでは、あなたが得られた成果に対して非常に満足されている様子でした。しかし、バージョン 2.x を見ると、それは破壊的変更を伴うものです。何かを変更する予定ですか?私はデータエコシステムを別の視点から眺めてみると、必要に応じて追加できるモジュールが多数あると考えています。そのようなパズルのようなアプローチはどのように構築されているのでしょうか?
Andres Almiray: 実は、バージョンを重ねるにつれて、より一般的であることが判明した異なるセットのアウンスア(注:通知機能)やパッカー(注:パッケージ作成ツール)のサポートを追加してきました。例えば、Google Chat や Gitter があり、また Teams も必要に応じて情報を送信するためにターゲットサービスへユーザー REST API をネイティブに送信すると発表しました。しかし、実際にはこれらすべてが単純な Webhook で実装可能であり、私たちは汎用的な Webhook アウンスアを持っています。その結果、内部ではこれらの明示的にカスタム作成されたアウンスアの一部が汎用 Webhook を利用するようになり、明示的な通知機能は非推奨としてマークし、バージョン 2.0 で削除しました。これが私が取り組もうとしていることのひとつです:ツール内でより一般的な機能を特定し、リファクタリングして、明示的な実装を不要にするようにしています。
これらの取り組みは、リリースを公開する際に蓄積された負荷を軽減し、より軽量な仕組みへと進化させるためのものです。これは、特に設計上の課題を解決し、DSL における命名規則など当初の設計選択を見直す必要性が生じているケースに該当します。これにより、DSL に新たな要素を追加していく過程で発見される他のルールにも適合し、より直感的な操作性を実現することを目指しています。
これらの変更点はすべて既に非推奨(デプレケーション)としてマークされています。したがって、ツールを実行する際、インターフェースが grade end であってもコマンドラインツールであっても、DSL の要素を使用するとログに警告が表示されます。これにより、その機能が将来削除されることを事前に知ることができます。警告には、いつ非推奨となったか、どのバージョンで指定されたか、そして最終的にバージョン 2.0 で完全に削除される予定である旨が明記されます。
もしツールを利用する際にこのような特別な警告、すなわち非推奨の警告が表示された場合は、ドキュメントを確認することをお勧めします。そこには、今後 DSL を使用して作業を行うための代替方法や手順が記載されています。
JReleaser の採用を検討する前に知っておくべきこと [12:20]
オリンピウ・ポップ:わかりました。要するに、既存のユーザーから得たフィードバックと、これまでに JReleaser の開発を手伝ってくれたあなたや他の開発者からのフィードバックがあり、それらをすべて取り入れて製品をより堅牢で軽量なものにしているわけですね。先ほどおっしゃっていたように、製品の名称変更については、2 つのペルソナ(ユーザー像)を想定されています。1 つは既存のお客様やユーザーであり、もう 1 つはこれから導入を検討する新しい方々です。JReleaser をリリースのために使い始める際に、人々が答えなければならない質問とはどのようなものですか?
アンドレス・アルミライ:それは、その人がリリースを作成する際に何を使っているかによります。最初の質問は、「ツール、アプリケーション、あるいは任意のプロジェクトに取り組んでいるのか?」ということです。必ずしも CLI やデスクトップアプリである必要はありません。タグ付けを行い、リリースノートを作成し、それが起きたときに発表を行うことを望むあらゆる製品で構いません。では、最初の質問は「どのように行っていますか?」です。すでに何らかのレベルの自動化(automation)を済ませていますか?バッチスクリプト(batch scripts)のセットで行っているのか、それとも他のスクリプト言語を使っているのでしょうか?ターゲットは GitHub だけですか?GitHub Actions をご存知ですか、それとも GitLab を好みますか?では、GitLab CI やその仕組みをご存じでしょうか。これらすべてが「待ってください、ちょっと待って、これは情報が多すぎます。ただこれをするために専門家になる必要があったり、こんなに多くのことを学ぶ必要があるなんて知りませんでした」と思わせるようなものだと感じても、ケースによってはそうではありません。
では、JReleaser があなたにとってのツールとなるかもしれません。なぜなら、このツールはこれらのすべてを簡素化するからです。これは「設定より規約」のメカニズムに従っているため、必要な最小限の設定のみを行い、必要に応じてあらゆる動作を適用できます。このツールは特定の道筋を選ぶよう強制するものではなく、その逆です。あなたが何を望んでいるかをツールに正確に伝えるのです。次に、すでに何らかのリリースプロセスとある程度の自動化が存在している場合でも、理由のいかんにかかわらず失敗したり、再現できなかったり、自動化が困難な要素があるかもしれません。そのような状況こそがこのツールの出番であり、あなたはリリースプロセスを支援するために、ツールが提供するどの項目や動作の一部を活用するかを選べばよいのです。
オリンピウ・ポップ:そして私たちはまさに LLM(大規模言語モデル)の時代を生きており、すべてがレビューされる中で、あなたが DSL(ドメイン固有言語)について言及されたことを踏まえると、これらの LLM のいずれかにアクセスして「DSL を使って何かを書いてほしい」と頼むのはどれほど容易でしょうか?それとも、この DSL は内部のものであり、私が間違った質問をしているのでしょうか?
Andres Almiray: 実は DSL は外部にあり、どのように消費したいかによって異なるフォーマットを追加できます。CLI で使用する場合は、最も一般的なフォーマットは YAML ですが、YAML を好まない層もいる一方で特定のフォーマットを好む方もいらっしゃるため、TOML もサポートしています。Maven を使用している場合、Maven XML DSL(ドメイン固有言語)を使用して基盤を設定するためのプラグインがあります。Gradle を使用している場合は Gradle 用の基盤があり、Groovy、Kotlin、あるいは最近話題となっている宣言型の Gradle のいずれを使用するかはご自身の判断にお任せします。つまり、Grails では少なくとも 3 つの選択肢があります。最後に、JSON も用意されていますので、ご希望であればこちらをご利用いただけます。
かつて私は、異なる LLM(大規模言語モデル)が機能を発見し、情報を提供できるようにするために、ツールに明示的なメタデータを追加する必要があるのではないかと考えた時期もありました。
しかし現在では、少なくともクラウドは他の多くのツールと容易に統合できることがわかっており、MCP サーバーを追加したり、動作のために追加のメタデータを提供する必要はありません。クラウドは非常に賢く、CLI で呼び出せるさまざまなコマンドのヘルプメニューから得られる情報を解析し、ユーザーが何ができるかを正確に提案できるだけの能力を持っているようです。
オリンピウ・ポップ:はい、私もそのように観察しています。これらのツールを持つことの利点の一つは、通常文書作成に数週間かかるようなことを試すことができる能力です。例えば、私はもともとフロントエンドが苦手でしたが、今はこうした作業をずっと簡単にできるようになりました。しかし私が気づいたのは、特に JavaScript エコシステムの迅速なペースにおいて、ツールが持っている情報とリリース後にあなたが実際に持っている情報の間にギャップがあるということです。おそらくそのツールはそれらの最新の情報で訓練されていないためです。ただし、ドキュメントへの参照も促すことで大きな助けとなり、これは非常に有用です。
追加の安全性のためのドライランリリースの方法 [17:09]
アンドレス・アルミレイ:LLM(大規模言語モデル)を使い始める際、試してみたいと思うでしょうし、コミットして動作するか不安に思うこともあるかもしれません。ツール JReleaser は、ドライバーモードで機能をテストすることを可能にします。つまり、ローカル環境で可能な限り実行できます。ドライブモードで実行する場合、外部から情報を消費することは可能です(ファイルをダウンロードしたりテンプレートを処理する必要がある場合など)、しかしリモートサーバーへプッシュすることはありません。したがって、Git リリースを作成したり、誤ってリモートファイルを変更したりすることはありません。何を試みたかを示しますが、実際には実行しないため、制御はあなたにあります。最近別のモードを追加しましたし、マックスの名前について言及されたのを覚えています。これはマックスが要望した機能で、yolo フラグです。
プロジェクトの要件をすべて設定していない場合でも、確認ファイルが存在する場合に何が起こるでしょうか。例えば、特定のアーティファクトを Maven Central にデプロイしたい一方で、コンテナイメージと Homebrew 用の Ruby formula も公開したいと考えているケースが考えられます。Maven Central へのデプロイに必要なシークレット(機密情報)がない場合、リリースを実行すると情報が不足しているため失敗します。しかし、Yolo フラグを追加すれば、必要なすべての処理を実行できます。何か不足していたり設定が誤っていたりする場合は、該当するセクション全体がスキップされます。ログファイルには「一部の要素が不足しています」という警告が表示されます。もちろん、シークレットの値自体は表示されませんが、「認証情報が不足しているため Maven Central へのデプロイに失敗した」といった内容が通知されます。ただし、処理が停止するのではなく、次のステップへ継続して進みます。
この場合、希望するパッケージマネージャー用のファイルが作成されますが、逆に処理を構成することも可能です。つまり、これらの設定を試行錯誤できるのです。リリースプロセスがどのように動作するかを確認するために、事前にすべての設定を行う必要はありません。
Olimpiu Pop: つまり、これはニーズに合わせて使用できるツールということですね?
Andres Almiray: はい、非常に柔軟性があります。
オープンソースプロジェクトの新たな拠点:Commonhaus 財団 [19:08]
Olimpiu Pop: ありがとうございます。また、あなたが関与されている重要なプロジェクトの一つに Commonhaus 財団があります。
Andres Almiray: はい、Commonhaus Foundation は私がとても楽しんで取り組んでいる取り組みです。JReleaser は、Max 氏の JBang とともに創設プロジェクトの一つです。現在、私たちはほぼ 15 のプロジェクトに成長しました。つまり、Quarkus やいくつかのプロジェクトがあり、他の Red Hat プロジェクトには WildFly や Infinispan も含まれています。また、Rust で書かれた既知の最初の Java プロジェクトである SlateDB もあります。当初は、Commonhaus Foundation に所属する人々の多くが Java エコシステム出身なので、「Java プロジェクト向けにこれを機能させる」という考えで設立されました。しかし、異なる言語を使用するプロジェクトも歓迎しており、すべてが Java である必要はありません。SlateDB がその証明となっています。また、この財団は 2 周年を迎えようとしており、4 月 9 日がその日付です。
Olimpiu Pop: あなたはエイプリルフール企画が好きなんですね?
Andres Almiray: はい。確かに、これら 2 つのプロジェクトはエイプリルフールとしてリリースされたわけではありません。ああ、いいタイミングですね。
オリンピウ・ポップ:はい、Quarkus のことは知っていました。Red Hat から IBM への移行(レッドからブルーへ)の際に、Red Hat にいた方々と話すたびに、誰もがこれを強調していたからです。はい。しかし、Quarkus が Commonhaus Foundation の一部となったこと、そして皆がその取り組みを誇りに思っていることを知りました。おめでとうございます。基盤としての今後のアジェンダはどのようなものですか?特に、私たちがヨーロッパに拠点を置く中、マックスさん(JBang の創始者であり、JReleaser の要となる人物)もご存知の通り、Quarkus もまた欧州発です。CommonSource Foundation の視点から、特にサイバーレジリエンス法が施行されつつある現在、オープンソースの未来をどのようにお考えですか?
Andres Almiray: したがって、財団には3 つの基本的な原則があります。これが私たちの出発点です。最初の原則は低ガバナンスモデルです。これは、プロジェクトが参加しても、共通のビルド方法や作業手順が存在しないことを意味します。財団に参加するプロジェクトはすでに確立されており、その周りに良好なコミュニティが存在しています。私たちはこれらのプロジェクトの成長を支援することができます。執行委員会と呼ばれるグループがあり、各メンバープロジェクトから少なくとも2 名の主要貢献者で構成されています。このグループは、特定のプロジェクトに対してビルド方法や作業継続方法を強制することはありません。これが最初の原則である低ガバナンスです。
二つ目の原則は財務透明性です。スポンサーが参加し、財団全体または特定のプロジェクト群のスポンサーシップを決定した場合、資金がどこでどのように使われているかを明確に知ることができます。つまり、財団は資金が突然消え去り、特定のプロジェクトに流れるかどうかさえ不明瞭になるブラックホールにはなりません。
皆が状況の進行を把握できるようになります。3 つ目は継続的な継承であり、これは現在のプロジェクトメンテナーが別のプロジェクトに移ったり、完全に作業を停止したりした場合、プロジェクトは最終的に悪影響を受けることを意味します。そこで私たちが財団で目指しているのは、既存の貢献者やメンテナーが主要なメンテナーセットへと移行し、プロジェクトとの継続的な関わりを保ちながら繁栄できるよう、最小限かつ適切な構造を提供することです。
これらの点を踏まえた上で、財団は引き続きスポンサーを募っており、企業、会社、あるいは個人の方々に、時間、労力、資金を提供してすべてのプロジェクトと財団の成長を支えていただくことを求めています。また、全プロジェクトに影響を与える可能性のある共通事項を特定し、ガイドラインを作成することにも取り組んでいます。セキュリティについてはどうなるのでしょうか?
CDA が報告された場合、どうなるのでしょうか。特定のプロジェクトのメンバーやメンテナーが CVE や同様の問題に対処する方法を知っていることは確かですが、これを完了させるためには、メンバー間および執行委員会との継続的なコミュニケーションが必要です。もしかすると、財団は単なるガイドラインだけでなく、CLI などのツールセットを提示するかもしれません。これは特定のプロジェクトで役立つ可能性があります。そしてここで、他のプロジェクトとの対話を続け、「私たちはこのような取り組みを行っています。プロジェクト X では役立ちました。あなた方も同様のニーズをお持ちですか?」と尋ねることができます。では、話し合いましょう。この特定のツールセットがあなたの考え方に追加できるかどうかを確認しましょう。あるいは、特定のセキュリティ懸念の領域で何が起きているかをご存じない場合は、追加のドキュメントやリンクをお渡しすることはもちろん可能です。ただし、「こうすべきだ」という押し付けではなく、「これは選択肢の一つです」とお伝えします。私たちは他者に対して既に実施した内容を提供し、あなたには自由に選択していただくことができます。あるいは、私たちが持っているものに基づいて、他の代替案も引き続き検討していただくことも可能です。
Commonhaus Foundation からのプロジェクトへのサポートの依頼方法 [24:11]
Olimpiu Pop: おっしゃる通り、スポンサーには二つのタイプがあります。時間を提供する方々、関与する方々、そして企業です。オープンソースプロジェクトをお持ちの場合、いつ Commonhaus Foundation にサポートを求めればよいのでしょうか?
Andres Almiray: さて現在、私たちはそれぞれのコミュニティにおいて確立され、よく知られたプロジェクトを探しています。もしあなたのプロジェクトが安定した課題チケットのセットを持っており、コミュニティとの関係も良好であれば、そのプロジェクトは参加する非常に良い候補となるでしょう。もしこれが趣味のプロジェクトであるか、あるいはまだ始めたばかりの場合は、将来の可能性を示すかもしれませんが、現時点では参加するには時期尚早である可能性が高いです。しかし、私たちは開発の異なる段階にあるプロジェクトも考慮する必要があります。したがって、もしあなたがまだ始めたばかりであれば、Common Files Foundation は適さない可能性があります。あなたのプロジェクトがすでに確立され成長しているなら、これが理想的なタイミングとなります。しかし、あなたのプロジェクトがすでに成熟しており、コミュニティが何らかのかたちで関与していても、メンテナーがもうあまり時間を割けない場合です。
プロジェクトがメンテナンスモードに入り、おそらくゾンビモードに近づいている場合、財団はケースバイケースで見直しを行うことになります。これは財団の定義において早期に行われる議論の一つで、すでにサステナンス期に近い特定の段階にあるプロジェクトについてどうなるかという点です。私たちが目指しているのは、動物保護施設のような「アイデアアカウント」の創設です。維持者がプロジェクトを財団に寄付し、スタッフかどうかにかかわらず一定の人々が製品を引き継ぎ、次のプロジェクトを引き受けてくれる維持者を見つけることができるようにします。もしそのような仕組みがなければ、プロジェクトは完全に終了せざるを得ないと宣言することになります。
したがって、私たちはこれを優雅に実現する方法を見つけます。要約すると、製品が非常に新しい場合は、今すぐ参加する時期ではないかもしれませんが、最適なタイミングを見守ることはできます。十代または成熟期に近い段階であれば、それが適切な時期です。そして、晩年期にある場合でも、私たちに来てください。話し合いを行い、何が実現できるかを見ていきましょう。
Olimpiu Pop: 確かに非常に有用ですね。また、その分野に関わる方々についていくつかアイデアがありますので、私から連絡を取ってみます。もしかすると良いマッチングが見つかり、Commonhaus Foundation に Java プロジェクト以外のプロジェクトが新たに加わるかもしれません。さて、貢献したい人たちはどのようにして貢献できるのでしょうか?
Andres Almiray: 私たちが課題管理システム(issue tracker)で行っていることのひとつに、さまざまなラベルを付与することがあります。そこには常に「help-wanted」や「good-first issue」といった小さなラベルが付けられています。これらを確認していただければと思います。おそらく数時間、あるいは数日で取り組めるような内容です。これらの課題は、コードベースの理解を深めたり問題を解決したりする際の入り口として役立ちます。事前に大量の知識を習得する必要はなく、すぐに着手できるものです。もうひとつ、少なくとも私がストリーミングを行っているスイスでは、「HackerGarten」と呼ばれる一連のイベントを推奨しています。これは異なる都市で開催されるもので、オープンソースプロジェクトで楽しく取り組めるものを選び、数時間一緒にハッキングする人々の集まりです。セッションの終了時には、そのプロジェクトへの貢献を提出します。
したがって、初めてのオープンソース貢献を始めたい方にとっては、HackerGarten のようなイベントが理想的です。すでにオープンソースのやり方を知っているが、Journaliser というツールを使っていて始め方がわからないという方には、この特定のイベントが役立つでしょう。なお、HackerGarten のイベントに直接参加できない方のために、スイスとドイツで開催されています。もう一つの選択肢は、常にディスカッションページにご連絡いただくことです。現在は GitHub でホストされており、「この機能はどうでしょうか?」「職場で使っている別のツールがありますが、JReleaser と統合されていません。もしこれができたら素敵ではないですか?」といったご意見があれば、そこで議論を始めることができます。パッチを提供したいか、他の誰かがお手伝いできるか、あるいは他の誰かがパッチを提供できるかなどについて話し合うことができます。
Olimpiu Pop: ここに特別なことは何もありません。貢献を受け入れることは歓迎ですが、まずは新規参加者向けの課題にラベルを付けてください。そうでない場合は議論を開始してください。最終的には人々が貢献する方法を見つけます。
Andres Almiray: 前回行った議論に基づくと、SLSA のサポートを提供する段階まで近づいていると述べたことを思い出します。
Olimpiu Pop: はい。
Andres Almiray: 実はブログ記事は書いていません。正直、あまりいい加減だったのですが、SLSA に対してネイティブビルダーを提供していることを何らかの形で発表する必要がありました。少なくとも SLSA の GIFO 実装についてはそうです。GitHub Public または GitHub Private Enterprise でビルドを実行する際、GitHub の SLSA ジェネレーターを使用できますが、これには GitHub Actions にさらに YAML を追加する必要があります。しかし、JReleaser を使用している場合は、SLSA 用の非常に特定の再利用可能なワークフローと YAML ファイル(あるいは Maven の場合と同じ仕組み)を利用するだけで動作します。つまり、設定すべき項目が減ります。まず証明されるのは、Maven プロジェクトや Gradle プロジェクトでもこれが可能だということで、私たちはクロスプラットフォームコンパイルを提供する言語向けの追加デモも拡張しました。Go、Rust、C++、C、JavaScript、TypeScript です。Deno や Bond を使用するかどうかに関わらず、Ocalm 用のデモもあると思います。
要は、SLSA が必要で関心があるが、どう始めればいいか分からないという場合、このネイティブ SLSA ビルダーをユーザーと共に使用すれば、非常に簡単です。
Olimpiu Pop: 確かにそう聞こえますね。実際には...といった感じでしょう。これらの洞察を共有してくださり、ありがとうございます、Andres。またお時間を割いていただき、ありがとうございました。
Andres Almiray: オリンピウさん、ありがとうございます。オープンソースに興味を持たれた方は、始めるのはとても簡単です。現在取り組んでいるオープンソースプロジェクトでチケットを起票してください。世界中の他のメンバーに、あなたがその課題に取り組んでいることを知らせてください。うまく動作していない部分や予期せぬ問題が見つかるかもしれませんし、機能不足があるかもしれません。とにかくチケットを起票すれば大丈夫です。パッチを送る必要はありませんし、最初からコードやテストケースを送る必要もありません。いきなり何かをするプレッシャーを感じる必要はありません。まずは会話を始めて、その先どうなるか見てみましょう。
Olimpiu Pop: 分かりました。皆さん、ぜひ実行してください。
Andres Almiray: はい。
Mentioned:
Commonhaus Foundation
JReleaser
About the Author
アンドレス・アルミライ
アンドレスは Java/Groovy の開発者であり、Java チャンピオンです。ソフトウェアの設計と開発において 20 年以上の経験を持ち、Java の黎明期から Web アプリケーションやデスクトップアプリケーションの開発に携わってきました。オープンソースを真に信じており、Groovy、Griffon、DbUnit といった人気プロジェクトへの参加や、自身のプロジェクト立ち上げにも関わっています。Griffon フレームワークおよび Hackergarten コミュニティイベントの創設メンバーです。Twitter では @aalmiray で活動しています。ハッキング(開発)をしていないときは、最愛の妻イクシェルと過ごす時間を大切にしています。
Show moreShow less
display:none;
Podcast は RSS フィードを通じて最新情報を入手でき、SoundCloud、Apple Podcasts、Spotify、Overcast、YouTube でもご利用いただけます。このページからは録音されたショーノートにもアクセス可能です。これらにはクリック可能なリンクが含まれており、音声の該当部分へ直接移動できます。
原文を表示
Transcript
Olimpiu Pop: Hello everybody. I'm Olimpiu Pop, an InfoQ editor, and I have in front of me probably one of the, I don't know, veterans in the open source space, especially in the Java ecosystem: Andres Almiray. Andres, thank you for taking the time to talk to us. And if you can, please introduce yourself. You have so many accolades. I don't know which ones to pick, so I'll let you choose the ones that you like.
Andres Almiray: Thank you for having me on the show, Olimpiu. It's a great honour for me. As I said, my name is Andres Almiray, and I'm a Java Champion. This year marks 20 years since I've been actively contributing to open source. It's been quite a ride. As you mentioned, I have been working in Java for a long time. Also known for its work on the Groovy language. There's been a series of projects I've been involved in or worked on over the past 20 years. They range from build tools, application frameworks, build tool plugins and some other things. Every one of those has a little story to it. And I really like the fact that I was able to meet so many different people across time and across different countries, such as yourself, thanks to working with open-source.
Olimpiu Pop: And about those stories, I think I know at least two of them. One of them was related to security in the supply chain space, because it's getting more stringent for everyone, especially with the Cyber Resilience Act here in Europe. People are just discussing how much time they spent on reproducible builds. Hervé Boutemy was discussing some time you spent together while you were gathering the tools you needed in JReleaser. A more common one was from Max Anderson. He was pointing out that JReleaser is one of the better CLI tools in Java because he has a call to arms for everyone in the Java space to do more on CLI tools, especially now with agentic AI and all the other generated stuff. So what's the recipe for success? Because I know that you've been working with JReleaser for a couple of years now, I think so.
JReleaser can release software in any ecosystem, not just Java [02:53]
Andres Almiray: Yes. This year, on April 10th, will mark the fourth anniversary of the release of 1.0.0.
Olimpiu Pop: Oh, wow. Do you still keep the cadence? I know that you are very disciplined with the cadence of JReleaser. Do you still keep it?
Andres Almiray: Yes. We have a two-month release cadence so that people know what's coming up. And we release at the end of the month on the even months. We are recording today, on February 18th. So at the end of February, there will be a release, and the next one will come out by the end of April. We are also very close to starting the roadmap for 2.0, where we expect to make some breaking changes and a few other features that require us to break compatibility. We may start putting out alphas soon, but there will be perhaps a different release cadence going up to 20, and we may keep the current release cabinets for 1.x until we do the final switch.
Olimpiu Pop: Okay. I'm happy to hear that the 2.0 is still on the agenda. I know that one of the things that you had planned there was something special. I don't know if you want to make it public, but at that point, you said it's about to just cut the J out of it because it's not only for the Java ecosystem.
Andres Almiray: Yes. One of the things we mentioned was possibly rebranding the tool. I'm still undecided whether that rebranding should take place. From someone who knows the tool and has used it, they will, of course, know the name. And they may also be aware that you can use it with any source language. We have already made examples for popular languages. Obviously, you're going to find Rust, Go, Python, Perl, C++, C#, Ruby, and so many other strange languages, such as Odin, Nim, not necessarily might call it strange, but it'd be Zig, Swift, and the list goes on and on and on. There is no restriction to use a tool with just Java, just because it has a J in the name. But if someone is new to the Java ecosystem or doesn't know this tool exists, and they try to find a native release tool, they may not find it and think, "Why should I use something that is Java-based to release my Rust project?" It doesn't make sense, right?
Because I want it to be Rust because it's part of my ecosystem, that's the tool chains that I know, right? So that's where rebranding may come in, showing people there is an alternative, even though it's not native to their source ecosystem.
Releasing to any of the major operating systems [05:32]
Olimpiu Pop: That makes sense. I'll look eagerly to see what the outcome of this debate will be and whether we'll have a new tool or an old one that still has a 2.0 after that. But as we discussed before hitting the record button, you mentioned that you hit a plateau in terms of features. And so that points towards a product maturity more or less.
Andres Almiray: It looks like we have reached plateau stability. There are still a few features being added in each release, but not as many as before. So the features in the pipeline do require these breaking changes and breaking compatibility, which we track on the roadmap for 2.0. It may be the case that we are reaching a critical mass of features that say, yes, we had to go to 2.0. We have added additional announcements recently. So when you post a release, you can create an announcement for multiple distribution channels, such as email or a Slack channel. We added the capabilities to announce on LinkedIn and Reddit. And soon, in the next release, we will also support another announcement channel called Twist. We also added the capability to use multiple digital signature algorithms simultaneously.
So in the past, you could only have PGP or a cosign. Now you can have both, depending on the title or artefacts that you want to release. And we also added a third one called MiniSign. And in the early stages of the first releases of the tool, some developers have asked for support for signing with the Windows signing tool, which only runs on Windows platforms, and we would like the tool to be independent of the platform. And some others also ask similar things for running on OSX. So there is a tool called JSign, another open-source Java project you can run on any platform to generate Windows-compatible signatures. This is probably something that we will add before 20. Hopefully, with the April release, we can add features that will allow us to provide any kind of digital signature across all platforms.
Olimpiu Pop: Good luck with all the features. All sounds quite interesting and will definitely be useful. One of the things I know you worked on some time ago was setting up distribution channels across different platforms. Can you figure out a couple of them that people tend to use, or what would be a couple of patterns or lessons learned from what you saw users using?
Andres Almiray: Well, one of the first reasons to build a tool like this was to deploy a JavaFX application in a way that anyone could consume it very easily. So if you use Homebrew, then you will install this JavaFX application using Homebrew. But that requires me to learn a little bit of Ruby and understand the format for creating the manifest for this. And then you'll find people that Homebrew doesn't work on Windows. You need a package manager that is needed to that platform. There are a few options. There is a Scoop, very similar to Homebrew, and, of course, there are Winget and Chocolatey. And the same thing happened. You need to understand how to write the different sections for each one of these different manifest files, whether it's XML, JSON, whatnot, and so many other things that you need to keep track of, that it became so complicated to do these things by hand, and that's why the tool came to be.
So, based on this, we've seen that most people who use the tool to publish to different package managers first choose Homebrew, then go for Winget. Thirdly, they are those that go; whether it's not Winget, they will go without Chocolatey or Scoop for targeting Windows. And then those who would like to create Docker images, whether using Docker, Podman, or Google's Jib, which we also support.
Olimpiu Pop: It seems that people are still using native applications, and Docker definitely has the traction we expected now, given that it has become the norm for most people. But there is still a question. You definitely mentioned that the product is mature. How about architecture, underlying architecture? I know that you put a lot of interest into getting it started nicely. And in one of our first discussions, you were quite happy with what you got started, but definitely, when you're looking at two point something, it's about breaking changes. Are you intending to change something? I'm just thinking that, looking at the data ecosystem from a different perspective, there are a lot of modules you can add depending on what you need. How are you creating that kind of puzzle-like approach?
Andres Almiray: As a matter of fact, as we grew across different versions, we added support for a different set of announcers and packagers that proved more common. So let's say there is Google Chat, Gitter, and I think that Teams also announced that they will natively send user REST APIs to the target services to send information as needed. But as it turns out, all of them can be implemented with a simple webhook, and we do have a generic webhook announcer. So it turns out that some of these explicitly custom-made announcers under the hood now use the generic webhooks, so we have mocked the explicit announcements as deprecated and removed in version 2.0. This is one of the things I want to do: we have already identified features in the tool that are more common and refactored them so we can remove what is explicit.
So these things are shaping a bit of the weight we accumulated as we're putting releases out, making things a little bit slim. That's the case with the things that we would like to break. Correct some of the design choices that we made early on for naming things in the DSL, so that it is more intuitive, so that it conforms to other rules that we discover as we add on more elements to the DSL. All of these things are already being marked as deprecated. So whenever you run the tool with different interfaces, whether it's at grade end or via a command-line tool, if you use a DSL element that's marked for deprecation, you will get a warning in the log so you know it's going away. It tells you when it was deprecated and which release, and it will also tell you that it will eventually be removed in version 2.0.
So if anyone uses the tool and sees any special warnings like this, deprecation warnings, it's a good idea to have a look at the documentation, which tells you what the other way to do things with the DSL will be going forward.
What you should know before adopting JReleaser [12:20]
Olimpiu Pop: Okay. So, to sum it up, on one side you have the feedback you gather from existing users, and the feedback from you and other developers who helped develop JReleaser so far, and you're incorporating all that to make the product more robust and leaner. But as you mentioned previously, when it comes to renaming the product, you're looking at two personas, if you like. One of them is existing customers or users, and the other is new people who would like to adopt it. What are the questions that people should answer when they get started on using JReleaser for their release?
Andres Almiray: Well, it depends on what that person is using when creating a release. So the first question is: are you working on a tool, an application, or any project? It doesn't have to be CLI or desktop. It could be any product you want to tag, create release notes for, and maybe make an announcement when this happens. So the first question is, how are you doing this? Do you already have some level of automation? Are you doing it with a set of batch scripts or with another scripting language? Are you targeting just GitHub? Do you know GitHub Actions, or would you prefer GitLab? So, do you know GitLab CI and how it works? If all these things sound like, "Wait, hold on a second, that is way too much information. I didn't know I have to be an expert or I have to learn so many things in order to do something that just by saying this sounds trivial," but in terms of the case, it isn't.
Then JReleaser may be the tool for you because it simplifies all these things. It follows a convention-over-configuration mechanism, so you can configure as few things as possible and apply as much behaviour as needed. The tool doesn't push you to choose a given path. It's the other way around. You tell the tool exactly what you want. So the next thing is that you already have some sort of release process and some level of automation, but there may be things that are failing, not reproducible, or difficult to automate for one reason or another. And this is a game where the tool can help you; you just pick which items and which parts of the behaviour the tool provides can help you in your release process.
Olimpiu Pop: And because we do live in the age of LLMs and everybody is reviewed for everything, and you did mention a DSL, how easy it would be to just, I don't know, go to one of those LLMs and ask it to help me write something with the DSL? Or is the DSL internal, and I'm asking the wrong question?
Andres Almiray: Actually, the DSL is external, and you can add different formats depending on how you want to consume it. If it's on the CLI, the most common format is YAML, but given that there's a segment of the population who dislike YAML but likes some of the formats, we support TOML as well. If you are using Maven, there is a plugin that you can use the Maven XML DSL to configure the plumbing. If you're using Gradle, we have Gradle plumbing, and it's up to you to decide which DSL or Gradle you want to use, whether it's Groovy, Kotlin, or the declarative Gradle thing that's been coming up lately. So you have at least three choices in Grails. And the last one that we have is also JSON if you want to do it. So there was a time when I considered it might be necessary to add explicit metadata to the tools so that different LLMs could discover the features and provide information for you.
But it looks like, at the very least, cloud is the one that will integrate easily with so many other tools out there, in a way that we don't have to provide an MCP server or additional metadata for it to work. Cloud appears to be smart enough to just be able to parse the information that is coming from the help menu of all the different commands that you can invoke in the CLI and suggest exactly what you can do with it.
Olimpiu Pop: Yes, that's my observation as well. One of the benefits of having these tools is the ability to play with things that normally would take weeks of documentation, stuff like that. For instance, I was never a fan of front-end, and now it's a lot easier to just do this stuff. But what I observed is that, especially with the quick cadence of the JavaScript ecosystem, there is a gap between what information the tool has in comparison with what you currently have after the release, because maybe it's not trained on that, but pointing it to also documentation helps a lot, and that's quite useful.
How to dry-run releases for extra safety [17:09]
Andres Almiray: When you're starting to play with LLMs, you will want to try things out, and you might be nervous to commit and see if they work out. The tool JReleaser allows you to test features in driver mode. So you can run it in a local environment as much as you can. When you're running in drive mode, it means that you will be able to consume information from the outside world, in case it needs to download files or process templates, but it will not push to the remote servers. So it will not create a Git release or accidentally alter any remote files. It will tell you what it's tried to do, but it won't do it, so you're in control. We recently added another mode, and I recall that you mentioned Max's name. This is a feature Max requested; this is the yolo flag.
What happens when you have a confirmation file for a project where you may not necessarily have all the requirements configured, say, for example, you want to deploy certain artefacts to Maven Central, but also want to publish a container image and a Ruby formula for Homebrew, right? If you don't have the secrets required to deploy to Maven Central, attending a release will cause it to fail because information is missing. But if you add the Yolo flag, you can run everything you want. And if something is missing or misconfigured, that whole section will be skipped. You will see a warning in the log file telling you, "Well, we're missing some stuff." It will not tell you the values of the secrets, obviously, but it will tell you we were not able to deploy to Maven Central because we have missing credentials. But instead of failing, it will continue to the next step.
In this case, it will create the package manager files that you want, but you could do it the other way around. So again, you can play with these things. You don't have to configure everything up front to test how the release process will work.
Olimpiu Pop: So it's a tool that you can use to your needs?
Andres Almiray: It's very flexible, yes.
The Commonhaus Foundation - a new home for open-source projects [19:08]
Olimpiu Pop: Thank you. And another project that I think is quite important that you were involved with is the Commonhaus Foundation.
Andres Almiray: Yes. The Commonhaus Foundation is an endeavour that I really enjoy working with. JReleaser is one of the founding projects alongside JBang from Max. I think that we have grown to close to 15 projects now. So we have Quarkus and some projects; other Red Hat projects include WildFly and Infinispan. We also have the first known Java project, SlateDB, which is written in Rust. Although the foundation was originally thought of, oh, let's make this work for Java projects, because most of the people that are associated with the Commonhaus Foundation, we come from the Java ecosystem. We are more than happy to welcome projects that use different languages. It doesn't have to be all Java, and SlateDB proves that. The foundation is also close to its second anniversary, which falls on April 9th.
Olimpiu Pop: You like April Fools projects, right?
Andres Almiray: Yes. It is definitely these two projects that were not released as April Fools'. Oh yes, it's a good time.
Olimpiu Pop: Yes, I knew about Quarkus because whenever I was talking to Red Hatters who moved from Red to Blue in the shift from Red Hat to IBM, everybody kept emphasising it. Yes. But to know that Quarkus is now part of the Commonhaus Foundation, and everybody was quite proud of that work. Congratulations on that. What's on your agenda as a foundation, especially now that we are both based in Europe, Max, as you mentioned, the creator and the keystone of JBang, and also involved with Quarkus, is also European. How do you see the future of open source through the lens of the CommonSource Foundation, especially now that the Cyber Resilience Act is getting into force?
Andres Almiray: So there are three driving tenets of the foundation. This is how we started. The first one is a low-governance model, which means when a project joins, there is no common way to build and do things. The projects that join the foundation are already established. They have a good community around it, and we can certainly help them foster the growth. We have a group called the executive committee, which is comprised of at least two members from each member project, well, the main contributors. This group will not impose a way to build or continue working with that particular project. That's the first thing, low governance. The second one is financial transparency. So if a sponsor joins and decides to sponsor either a foundation or a specific set of projects, they will know where and how the money is being spent. So the foundation does not become a black hole where money just suddenly disappears, and maybe goes into a particular project or not.
So everybody will know how things are going. And the third one is continued succession, which means that if the current set of maintainers for a project decides to move on to a different project or just stop working altogether, the project will eventually suffer. So what we want in the foundation is to provide the minimum structure and the right structure so that existing contributors and maintainers can move into the primary set of maintainers, maintain this continuing association with the project, and thrive. With these things said, the foundation continues to seek sponsors, whether enterprises, companies, or individuals who would like to provide their time, effort, and money to keep all these projects and the foundation growing. And we are also looking to create guidelines and identify common aspects that may affect all projects. What's going to happen with security?
What happens when a CDA is reported? Though we know that the members and maintainers of a particular project know how to handle CVEs and similar issues, there will be continuous communication among members and the executive committee to get this done. Maybe the case that the foundation comes up with not just guidelines, but maybe it's a set of tools, whether CLI, what have you, that could help in a specific project. And this is where we will be able to continue the communication with the other projects and say, "Hey, we have this thing going on. It helped project X. Do you have similar needs?" Well, let's talk and see if this particular set of tools could be added to the way that you think. Or if you are not aware of what's going on with a particular space of security concerns, then we can certainly pass additional documentations or links, but without giving you the idea of this is how you must do things rather than, here's a set of options, you are free to choose what we have already done for others, or based on what we have, you can keep looking into some other alternatives.
How to ask for support from the Commonhaus Foundation for your project [24:11]
Olimpiu Pop: So, as you mentioned, there are two types of sponsors: those providing the time, those getting involved, and companies. Let's say I have an open source project. When should I go to the Commonhaus Foundation for support?
Andres Almiray: So right now, because we are looking for well-established, well-known projects in their respective communities, if your project has a steady set of these issue tickets and you have good standing with your community, then your project will be a very good candidate to join. If this is a pet project or you're just getting started, your project may show promise and join eventually, but it's very likely not the right time right now. But we also have to consider the projects that will be at different stages of development. So if you're just getting started, the Common Files Foundation likely won't be a good fit. If your project is already established and is growing, this will be the ideal time. But if your project is already mature and the community is still somehow engaged, but maintainers no longer have much time.
So your project is now going into maintenance mode and almost going perhaps into zombie mode, then the foundation, they will definitely do a review on a case by case basis, but it's one of the discussions that we have early on in the definition of the foundation, what's going to happen with projects that happen to be in this particular stage where they're perhaps already close to their sunset. One of the things that we would like to have is an idea account like an animal shelter where the maintainers could donate the project to the foundation and there will be a set of people, whether it's a staff or not, that will keep the product alive such that we can find the next set of maintainers that will be willing to take on the project. And if that were not the case, we would just have to declare that the project has to go completely out.
So we'll find a way to make it happen graciously. So, in recap, if your product is fairly new, maybe right now isn't the time to join, but we can keep an eye out for the best possible moment. If you are in your teenage years or close to maturity, that's the right time to do it. And if you're in your twilight years, you still come to us, let's have a conversation and let's see what can happen.
Olimpiu Pop: So definitely useful. And I have a couple of ideas about who can be in that space. So I'll reach out to them, and maybe it's a match, and you'll have another non-Java project joining the Commonhaus Foundation. But let's see, how can people who want to contribute contribute?
Andres Almiray: One of the things we do with our issue tracker is apply different labels, and there's always a little “help-wanted” or “good-first issue”. So these are the ones you can have a look at, and hopefully this is something you can do in just a couple of hours, or maybe a couple of days. Those are the issues that can help you get started with the codebase and fix an issue without having to learn a lot upfront, just to get it done. The other thing that we encourage, at least here in Switzerland, where I'm streaming from, is a series of events called HackerGarten in different cities. It's just a group of people who like to come together and hack for a few hours on any open-source project we think will be fun, and we push our contributions to that project at the end of the session.
So, someone who would like to get started with their first open-source contribution would find events like HackerGarten ideal. Someone who already knows how to do open source but stumbles with Journaliser as a tool that may help them, but they don't yet know how to get it started. Again, this is one particular event that can help. For those who don't have access to a HackerGarten event in person, we have them in Switzerland and in Germany. The other option will always be to reach out to our discussion page. We're currently hosted on GitHub, and start a conversation in case you think, "Well, what about this particular feature? I think about another tool I use at work, but it's not integrated with JReleaser. Wouldn't it be cool if we could do this or that? " We can get into a discussion on whether you would like to provide a patch for it, or if someone else can help you, or if someone else could provide a patch for it.
Olimpiu Pop: So nothing special here. You are welcome to accept contributions, but first label the issues for newcomers. If not, start a discussion; people will find a way to contribute in the end.
Andres Almiray: I think, based on the discussion we had last time, I mentioned that we were close to providing support for SLSA.
Olimpiu Pop: Yes.
Andres Almiray: Well, I haven't written a blog post. I've been very bad at this, but I had to make some sort of announcement that we do provide a native builder for SLSA, at least for the GIFO implementation of SLSA. So if you run your builds, whether on GitHub Public or GitHub Private Enterprise, you can use the GitHub SLSA generator, which requires adding more YAML to your GitHub Actions. But if you happen to use JReleaser, then just using a very specific reusable workflow for SLSA and a YAML file, or what is Maven, is the same; it will make it work. So there's less configuration that you have to do. And the first thing that would prove is that you can do this with Maven projects or Gradle projects, where we expanded additional demos for languages that provide cross-platform compilation. So, Go, Rust, C++, C, JavaScript or TypeScript, whether we use Deno or Bond, I think we also have a demo for Ocalm.
The point is that if SLSA is something you need and interest you, and you don't know how to get started, using this native SLSA builder with your user is very, very easy.
Olimpiu Pop: You definitely make it sound like that. So I'm sure that it's actually ... Thank you for sharing these insights, Andres. And thank you for your time.
Andres Almiray: Thank you so much, Olimpiu. And if anyone is interested in open source, it's very easy to get started. Just open a ticket in the open-source project we're working with. Let the people on the other side of the world know that you're working on it. Maybe you find something that isn't working properly or unexpected, or maybe there's a missing feature. Just open a ticket. You don't have to send a patch. You don't have to send code or test cases to begin with. Don't feel like pressure to do so upfront. Just start a conversation and see where things go.
Olimpiu Pop: Okay. So guys, just do it.
Andres Almiray: Yes.
Mentioned:
Commonhaus Foundation
JReleaser
About the Author
Andres Almiray
Andres is a Java/Groovy developer and a Java Champion with more than 2 decades of experience in software design and development. He has been involved in web and desktop application development since the early days of Java. Andres is a true believer in open source and has participated on popular projects like Groovy, Griffon, and DbUnit, as well as starting his own projects. Founding member of the Griffon framework and Hackergarten community event. You can find him on twitter too as @aalmiray. He likes to spend time with his beloved wife, Ixchel, when not hacking around.
Show moreShow less
You can keep up-to-date with the podcasts via our RSS Feed, and they are available via
SoundCloud,
Apple Podcasts,
Spotify,
Overcast
and YouTube.
From this page you also have access to our recorded show notes. They all have clickable links that will take you directly to that part of the audio.
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み