カテゴリー
技術

オープンソースプロジェクト内のTODO個数調査

マーティン・シュライスさん(Martin Schleiss)がブログで公開したのが、Linux をはじめとする巨大オープンソースプロジェクトのソースコードにおける「やらないといけない」あるいは「後で考える」マークである“TODO”の個数の移り変わりをグラフ化したものです。

基本的には、プロジェクトの年月が重なるほど、コードに書かれた TODO の個数は増えていくようです。上の PHP のグラフでは、メジャーリリースや通常リリースの時期の少し前に TODO が増えているようにも見えます。

プロジェクトによっては単調増加ではないものも。Rust は TODO の個数自体が少ないように見えるし、途中で数個まで減っている時期もあるので、意識的に TODO の解消を目指したりしていたのかもしれません。

Next.js 、version 10 と 10.1 のどちらのリリース時期でもなく、突然増えています。

ブログ記事では言語処理系やライブラリなど、有名なもの20個弱についてグラフ化されています。

プロジェクトの規模、歴史の長さによってもTODO の個数は変わりますが、規模や歴史と無関係に多い少ないもあったりもします。シュライスさんはTODO が有ることはどのオープンソースプロジェクトにおいても貢献をする余地があるということだ、と言っています。あなたが良く使っているツール/ライブラリのTODO は増えているでしょうか?

カテゴリー
技術

DOS Subsystem for Linux – MS-DOSの上でLinuxコマンドを動かす

DOS Subsystem for Linux は、「MS-DOS環境を好む人のためのWSLの代替」で、Linux 環境をMS-DOS 上に構築したものです。

“Windows Subsystem for Linux”(WSL)においては、Windows 上でLinuxのアプリケーションをそのまま実行できるようになりましたが、それと似たようなことを MS-DOS の上で動かす、というもののよう。

MS-DOS の起動画面から、dsl コマンドを叩いて、MS-DOS 側のファイルシステムをマウントし、viエディタで編集していますね。DOS をメインに使っていて Linux アプリケーションも使いたいという人にとってはありがたい仕組みです。

Hacker Newsのスレッドでは当初、「MS-DOS を Linux 上で動かすもの」と誤解されたようですが、逆方向になります。

誤解が生まれた訳は、”Windows Subsystem for Linux”というマイクロソフト公式の名づけ方法にありそう。”Windows Subsystem for Linux” という字面を見ると、海外ユーザーでもやはり直観的には「Linux のために動く Windows」という印象を受けてしまうようです。しかし、「Windows は複数のサブシステムを持っていて、その一つとして Linux を動かす」と解釈すれば、WSL のことだと言えなくもありません。

Linux側には「サブシステム」という概念がないため、Linux ユーザー側から見ると混乱が起こるのであろう、ということ。”Windows Services for Unix”についても同様で、Unix で Windows を動かすのではなく、Windows のサービスとしてLinux コマンドを使えるという意味になる、と。

“DOS Subsystem for Linux” は、そんなマイクロソフトの WSL のネーミングに従った名前と言えます。

作者の解説によると、MS-DOS 上で最初に dsl コマンドが呼ばれた際、Linux カーネルが立ちあげられ、MS-DOS からPCのコントロールを奪います。

Linuxコマンドの終了時、カーネルは仮想86モードで元のDOSに制御を移し、DOSは仮想モード内で動いているとは意識せずに次に DSL コマンドが呼ばれるまで DOS として動き続ける、と。

仕組みとしては問題ありそうだが、驚くほどうまく動作している、ということだそうです。

カテゴリー
ネットの事件

Linuxのソースコードコメントからf*ckを消してhugにしようと提案するパッチが議論を巻き起こす

ヤルコ・サッキネンさん(Jarkko Sakkinen)がリナックスDRM開発者メーリングリストに提案した33行のパッチは、コメント中の”fuck”を”hug”に置き換えるというだけのもの。提案の変更箇所は以下となり、変更内容はたとえばこんな感じです。


In order to comply with the CoC, replace **** with a hug.

Jarkko Sakkinen (15):
MIPS: replace **** with a hug
Documentation: replace **** with a hug
drm/nouveau: replace **** with a hug
m68k: replace **** with a hug
parisc: replace **** with a hug
cpufreq: replace **** with a hug
ide: replace **** with a hug
media: replace **** with a hug
mtd: replace **** with a hug
net/sunhme: replace **** with a hug
scsi: replace **** with a hug
inotify: replace **** with a hug
irq: replace **** with a hug
lib: replace **** with a hug
net: replace **** with a hug

Documentation/kernel-hacking/locking.rst | 2 +-
arch/m68k/include/asm/sun3ints.h | 2 +-
arch/mips/pci/ops-bridge.c | 24 +++++++++----------
arch/mips/sgi-ip22/ip22-setup.c | 2 +-
arch/parisc/kernel/sys_parisc.c | 2 +-
drivers/cpufreq/powernow-k7.c | 2 +-
.../gpu/drm/nouveau/nvkm/subdev/bios/init.c | 2 +-
.../nouveau/nvkm/subdev/pmu/fuc/macros.fuc | 2 +-
drivers/ide/cmd640.c | 2 +-
drivers/media/i2c/bt819.c | 8 ++++---
drivers/mtd/mtd_blkdevs.c | 2 +-
drivers/net/ethernet/sun/sunhme.c | 4 ++--
drivers/scsi/qlogicpti.h | 2 +-
fs/notify/inotify/inotify_user.c | 2 +-
kernel/irq/timings.c | 2 +-
lib/vsprintf.c | 2 +-
net/core/skbuff.c | 2 +-
17 files changed, 33 insertions(+), 31 deletions(-)

--
2.19.1

「抱きしめるな(don’t hug with this)」とか、「メモリコントローラーを困らせないよう(avoid hugging up the memory controller)」といった置換結果で、コメントが伝えたかったことが通じるのかどうか…

背景

リーナス・トーバルズ氏の謹慎と反省からの復帰もあり、他者への言葉遣いや態度について気を配ろう、という機運が盛り上がっている linux 界隈、インテルの技術者であるサッキネン氏は、アムステルダムからポートランドまでの10時間のフライト中にLinuxの新しい行動規範(Code of Conduct, CoC)を読み込む機会があり、そこからこの「言い換え」を思いついたそうです。

「罵倒・攻撃的・下品な言葉遣いを避ける(use of abusive, offensive or degrading
language)」というCoCの部分を提示していますが、なにしろ開発者のメーリングリストですので、検閲であるとか、まったくlinuxの機能を改善するものでもなんでもないとか、いろいろな反対意見が出てきました。

Code of Conduct には、それをどう解釈すべきかというガイド文書も有り、こちらには「CoCが作られるより前から存在するものには影響しない(Content that already exists predating the Code of Conduct will not be addressed now as a violation.)」という一文があることがメーリングリスト参加者から示され、今回の提案者は引き下がったようです。

行動規範 – The Linux Foundation (和訳)

via Phoronix