技術書典12でDebian新コントリビューターガイドを頒布

1/24あたりまでで購入されたかたは、改訂版(第二版)をだしているのでPDFをダウンロードしなおしてください

はじめに

技術書典12でDebian新コントリビューターガイドを頒布しました。 頒布形態としてはPDF版とPDF+紙のセットを選べるようにしました。

f:id:kenhys:20220126220414p:plain

techbookfest.org

1/26現在、PDF+紙のセットは完売(紙は数冊想定だったので)しました。

Debian新コントリビューターガイドとは

普段Debianを使っているユーザーが、Debianのコントリビューターとして継続的に関わっていけるようになるのに必要なことをまとめた薄い本(A5 表紙込で160ページ B5 表紙込で128ページ)です。 Debianコミュニティーでは日々いろんな活動が行われています。 とはいえ、あれこれ説明するにはおそらく紙面が足りません。 またあまり自分が関わっていないものはきっとうまく書けません。

そこでDebian新コントリビューターガイドではDebianパッケージを開発するやりかたについて、これまで得た知見をもとに説明するスタイルにしました。

対象となる想定読者について

Debian新コントリビューターガイドはこんなひとを想定して書きました。

  • Debianのパッケージングに興味がある
  • Debianに入れたいソフトウェアがある(が、どこからはじめたらいいかよくわからない)
  • Debianのパッケージをちゃんとつくりたい
  • 以前Debianのパッケージングをしたことがあるが、知識をアップデートしたい

Debian新コントリビューターガイドの内容について

Debian新コントリビューターガイドの内容は次のとおりです。

  • 第1章 はじめに
  • 第2章 本書について
  • 第3章 Debianプロジェクトを構成する人々
  • 第4章 Debianパッケージングの流れを知ろう
  • 第5章 パッケージングをする宣言(ITP)をしてみよう
  • 第6章 パッケージング環境を構築してみよう
  • 第7章 パッケージングしてみよう
  • 第8章 よりよいDebianパッケージにしてみよう
  • 第9章 パッケージの問題をフィードバックしよう
  • 第10章 パッケージをアップロードしてみよう
  • 第11章 パッケージのスポンサーを探し(RFS)てみよう
  • 第12章 パッケージがRejectされてもあきらめない
  • 第13章 パッケージを更新してみよう
  • 第14章 さらなるヒントを求めて
  • 実践 ConoHaで開発環境を構築する
  • 実践 Go言語のパッケージングをしてみる
  • 実践 whalebuilderを使ってビルドする方法(第二版で加筆)
  • 実践 debockerを使ってビルドする方法(第二版で加筆)
  • 実践 lintianをdocker経由で実行する方法(第二版で加筆)
  • 付録 LinuxのターミナルをScreenで共有する方法

第3章では、Debianのコミュニティーはどんな人から構成されているのか、パッケージングという観点から説明しました。

第4章では、Debian公式アーカイブにパッケージを入れてもらうまでの概要を説明しました。

第5章から第12章までは、パッケージのDebian公式アーカイブ入りを目指して作業する際に必要ことを実際のパッケージングを例に説明しました。

第13章では、めでたくDebian公式アーカイブにパッケージが入ったあとの継続的なメンテナンスについて説明しました。

第14章では、今後コントリビューターとして活動していく上で必要になるであろう各種情報をどこから入手したらいいのかを説明しました。

それ以降は、実践編です。

VPSに開発環境を構築する方法や、Go言語のパッケージングの仕方など、より実践的なトピックを説明しました。

付録として、昨今のオンラインで一緒に作業をするときに便利な端末の共有方法についても説明しました。 もし誰かと一緒にパッケージング作業をすすめる機会があれば、役立つはずです。

今回技術書典12でどんなチャレンジをしたのか

前に技術書典5に参加したことがあり、そのときはRe:VIEWを使ってPDFと紙のセットを頒布しました。 今回はVivliostyleを使ってPDFの作成をしてみました。 Re:VIEWのときはスタイルをいじるのにTeXよくわからんな状態だったのが、今回はCSSよくわからんに変わっただけで、 デザインのセンスが微妙なところはまったく変わっていませんでした。

作業を進める上で使用したツールは次のとおりです。

  • 本文(VivliostyleでPDF)
    • テンプレートとしてtheme-techbookをベースに改変
  • 表紙(InkscapeSVGをPDFにエクスポート)
  • 印刷用表紙(Kritaで日光企画の.psdテンプレートを編集)
  • 印刷用画像処理(ImageMagickGIMP+BIMPでバッチ処理)

Vivliostyleで執筆してみて思ったのは、簡単にできていいところもありつつ、今後のVFM 2.0に期待といったところでしょうか。

vivliostyleのbuildのオプションで、--press-ready --preflight-option gray-scaleをつけるとグレースケールなPDFを簡単につくれるのはすごい楽でした。

いくつか現状では使えなかったり、不具合を踏んだりしました。 記述のしかたでカバーできるものはそうしました。 気づいたものはフィードバックしてあります。

既知の問題としては次のものがありました。

Viewerでズームの設定が保持されないやつは修正されてよかったです。ノートPCで原稿を書いていたときは、毎回設定変更が必要なので地味に面倒臭かったためです。

なぜその頒布価格なのか

以前参加した技術書典5はオフラインのイベントでした。 お隣のブースが人気だったので、それで気づいてもらえて小部数ながらも数がでました(たぶん)

今回はオンラインなので勝手がだいぶ違います。 PDFだけ出すなら、在庫のリスクがないので頒布価格はいかようにもできます。 正直なところ、技術書典5のときよりきっと数はでないはずと踏んでいました。 そのため当初はPDFのみのつもりでした。(ページ数とかまったく気にせず書き始めていた)

ただ技術書典で後から印刷のしくみが利用できると聞き、紙もだしてみることにしました。

これは運営さんが紙の本を出す支援をしてくれるという取り組みです。会期後に実際に発注する冊数を決められるので、不良在庫のリスクを減らせます。 10冊単位なので、数冊は不良在庫となるでしょうが、何十冊もという悲劇は防げます。 小部数しかでないサークルとしては、数冊でも在庫は抱えたくないのですが、これはやむなしでしょう。

これをもとに諸々検討してみました。 紙の本を出すには諸経費がかかります。 趣味でやっていることとはいえ、赤字を前提にするというのでは継続的に活動するという観点では精神衛生上非常によろしくありません。

というわけで、PDFとPDF+紙のセットの比率の傾向を過去の技術書典の情報から調べたり(電子が87%)、印刷費、送料、手数料もろもろ皮算用しつつ、頒布数予想を加味して収支がぎりぎり赤字にならないラインということで次の頒布価格を設定しました。(この時点ではA5を前提)

  • PDFのみ 800円
  • PDF+紙のセット 1000円

PDF+紙は数冊でればいいかな、くらいでPDFのみが頑張ってくれという気持ちでいました。

技術書典12で何が起こったのか

  • データ提出直前でPDFを出力してみてページ数が超過することに気づいた
  • 章の開始ページを間違えていた
  • 技術書典12開始後に、削除した章への言及が残っていることを指摘される
  • 版面を変更することにともなう入稿用データの改訂

データ提出直前でPDFを出力してみてページ数が超過することに気づいた

正月休みに執筆を進めるつもりが諸事情により計画倒れとなりました。

A5で後から印刷を利用する場合のページ数の上限は、160ページです。表紙のぶんを除くと156ページです。

vivliostyleのpreview組版結果を確認しながら執筆をすすめていたのですが、 実際にPDFに出力してみたところ、あっさり超過していました。これはpreviewのときのページサイズを間違えていたのがたぶん原因です。

しかたなく、実践編の章をいくつか削って対処しました。

章の開始ページを間違えていた

PDFをページ単位でプレビューしていると意外と気づきにくかったのですが、章の開始ページを奇数に揃えないといけないのを失念していました。

そのため、強制的に改ページを挿入してページ数を調整しないといけませんでした。 改ページいれているところを埋めるコラムとかを用意していなかったので、空きページの使い方がすごくもったいなくて残念な気持ちになりました。

技術書典12開始後に、削除した章への言及が残っていることを指摘される

データ提出のときに気をつけていたつもりでしたが、第6章に削除したはずの章への言及が残っていました。 別の章で説明します、みたいに書いてあって実際には存在しないというやらかしです。

該当箇所を削除して改訂するというのが現実的な選択肢の1つでした。 しかし、削除した章には思い入れもありました。たぶんそれについて書いている人いなさそうだったので、お蔵入りにするのも忍びない。 PDF版のみ加筆改訂すると、紙との整合性が保てない。

技術書典5でA5で出したからというのが、今回もA5にした理由でした。 A5でなければいけない理由はとくにないので、版面をB5にすることを検討してみました。

メリット

  • 版面をB5にすることで落とした章をまるっと入れられる
  • コードサンプルで紙面の都合で改行していた箇所をなくせるので見やすくなる

デメリット

  • 印刷費用はページを増やした都合もありどんと2倍以上かかる

改訂版を出すにしても、頒布価格も見直すべきかは悩みました。 印刷費用が厳し目だったからです。ただ途中で変えたのはこちらの都合でもあるので、最終的には頒布価格はそのままとしました。 そのかわり、急遽在庫の部数制限を入れました。青天井で紙媒体を受けてしまうとお財布がダメージを受けてしまいます。(継続性の観点から以下略) にしても、B5にするとおそろしく印刷費用って跳ね上がるんですね。

版面を変更することにともなう入稿用データの改訂

A5前提で版面を用意していたので、B5向けに電子版だけでなく、入稿用にデータをつくりなおす必要がありました。

画面用と印刷用とでcssを分けていたのですが、印刷向けの調整をあとまわしにしていたせいで、 Web用PDFと印刷用のPDFとでページ数が変わってしまっていて、レイアウト調整が面倒臭かったです。

技術書典12スペシャルオンラインイベントで紹介された

刺され技術書アワードに応募するとイベントで紹介してもらえるとのことなので、 応募してみたところ1/25日の回で紹介してもらえました。

初日ほどではないものの、紹介してもらった効果で紙+PDFのセットが売り切れました。

さいごに

あとは、後から印刷向けにデータ入稿の準備を粛々と進めるだけです。 お仕事の締め切りも多かったので、来月はちょっとゆっくりしたいです。

月末までなんとか乗り切りたい。

My Free Software Activities in Dec 2021

今月はDebian勉強会で発表したのが主なトピック。

今年1年だと以下の発表をした。

My Free Software Activities in Nov 2021

今月は、スポンサーアップロードしたり、lintianにPR投げたりちまちまと活動した。 Debian勉強会でOSS Gateオンボーディングの実施報告をしたというのもあった。

My Free Software Activities in Oct 2021

今月のハイライトはOSS Gateオンボーディングが一区切りついたことか。 そのときの知見を活かそうとDebianの薄い本の原稿を書き始めたりしたのだが、あんまりすすんでいない。

PipewireでaptX使えるようにしようかと思って、libfreeaptxのパッケージングをしたが、 SBC XQで十分じゃないかという気持ちになった。

Sharing mentoring a new Debian contributor experience, lots of fun

I recently did mentoring a new Debian contributor. This is carried out in a framework with OSS Gate on-boarding.

oss-gate.github.io

In "OSS Gate on-boarding", recruit a new contributor who want to work on continuously. Then, corporation sponsor its employee as a mentor. Thus, employees can do it as a one of their job.

During Aug - Oct period, I worked with a new debian contributor every 2h in a week. This experience is lots of fun, and learned a new things for me.

The most important point is: a new Debian contributor aimed to do their work continuously even though mentoring period has finished.

So, some of the work has been finished, but not for all. I tried to transfer knowledge for it.

I'm looking forward that he makes things forward in consultation with other person's help.

Here is the report about my activity as a mentor.

First OSS Gate onboarding (The article is written by Japanese)

The original blog entry is written by Japanese, I don't afford to translate it, so just paste link to google translate for your hints

I hope someone can do a similar attempt too!

For the record, I worked with a new Debian contributor about:

My Free Software Activities in Sep 2021

9月のハイライトはDD一周年。OSS Gateオンボーディング関連の活動をしたことかな。 それにともないスポンサーアップロードをしたりした。

golang-github-lithammer-fuzzysearchのスポンサーアップロード

new queueに放り込むときの手順をよく忘れる。 dgetでmentors.d.nから取得して、クリーンビルド。 lintianやpiupartsの結果をチェックして、署名、アップロード。

% dget -u https://mentors.debian.net/debian/pool/main/g/golang-github-lithammer-fuzzysearch/golang-github-lithammer-fuzzysearch_1.1.2-1.dsc
% sudo pbuilder build --buildresult build-area golang-github-lithammer-fuzzysearch_1.1.2-1.dsc
% sudo piuparts  -d sid  -m "http://ftp.jp.debian.org/debian main" -b /var/cache/pbuilder/unstable-amd64-base.tgz -l piuparts.log build-area/*.deb
% cd build-area
% debsign -S golang-github-lithammer-fuzzysearch_1.1.2-1_amd64.changes
 signfile dsc golang-github-lithammer-fuzzysearch_1.1.2-1.dsc 719EB2D93DBE9C4D21FBA064F7FB75C566ED20E3

 fixup_buildinfo golang-github-lithammer-fuzzysearch_1.1.2-1.dsc golang-github-lithammer-fuzzysearch_1.1.2-1_amd64.buildinfo
 signfile buildinfo golang-github-lithammer-fuzzysearch_1.1.2-1_amd64.buildinfo 719EB2D93DBE9C4D21FBA064F7FB75C566ED20E3

 fixup_changes dsc golang-github-lithammer-fuzzysearch_1.1.2-1.dsc golang-github-lithammer-fuzzysearch_1.1.2-1_amd64.changes
 fixup_changes buildinfo golang-github-lithammer-fuzzysearch_1.1.2-1_amd64.buildinfo golang-github-lithammer-fuzzysearch_1.1.2-1_amd64.changes
 signfile changes golang-github-lithammer-fuzzysearch_1.1.2-1_amd64.changes 719EB2D93DBE9C4D21FBA064F7FB75C566ED20E3

Successfully signed dsc, buildinfo, changes files

% dput golang-github-lithammer-fuzzysearch_1.1.2-1_amd64.changes
Trying to upload package to ftp-master (ftp.upload.debian.org)
Checking signature on .changes
gpg: /work/oss-gate/fuzzysearch/build-area/golang-github-lithammer-fuzzysearch_1.1.2-1_amd64.changes: Valid signature from F7FB75C566ED20E3
Checking signature on .dsc
gpg: /work/oss-gate/fuzzysearch/build-area/golang-github-lithammer-fuzzysearch_1.1.2-1.dsc: Valid signature from F7FB75C566ED20E3
Uploading to ftp-master (via ftp to ftp.upload.debian.org):
  Uploading golang-github-lithammer-fuzzysearch_1.1.2-1.dsc: done.
  Uploading golang-github-lithammer-fuzzysearch_1.1.2.orig.tar.gz: done.
  Uploading golang-github-lithammer-fuzzysearch_1.1.2-1.debian.tar.xz: done.
  Uploading golang-github-lithammer-fuzzysearch-dev_1.1.2-1_all.deb: done.
  Uploading golang-github-lithammer-fuzzysearch_1.1.2-1_amd64.buildinfo: done.
  Uploading golang-github-lithammer-fuzzysearch_1.1.2-1_amd64.changes: done.
Successfully uploaded packages.