パスワードを忘れた? アカウント作成
13443255 story
Mozilla

東大電子情報工学科の実験課題としてFirefoxへのコミットが行われる 39

ストーリー by hylom
よい授業である 部門より

東京大学工学部電子情報工学科の実験の授業では、オープンソースソフトウェアのソースコードを分析したりコードへの変更を行う「大規模ソフトウェアを手探る」というテーマがあるそうだ。この授業でFirefoxのJavaScriptエンジンであるSpiderMonkeyをテーマに選び、実際にパッチを作成してプロジェクトに送りソースツリーに取り込んでもらう、という流れを行った学生がその詳細をブログで実験レポート代わりに公開している(siquare weblog)。

詳しくはこのブログを見て欲しいが、実験の内容はECMAScriptで提案されている「Pipeline Operator」をSpiderMonkeyに実装する、というもの。授業のTAにSpiderMonkeyのコミッターがいたことや、提案されているものにすでに仕様が付いていたことからこのテーマを選んだとのこと。また、作成したパッチは無事SpiderMonkeyのソースコードにマージされている。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2017年10月30日 20時18分 (#3304102)

    199x年代ころ、ハ〇〇大が作っているGPLソフトウェアにたぶんにお世話になっておりました。
    2000年代ころ、そのソフトにバグを発見しました。
    もっとも、誰もほとんど使ってないオプションでしたが、わたしは頻繁に使っていたので
    一生懸命バグの原因を探しました。見つけました!MLに投稿しました。
    「変なエラー見つけた!ここをこう変えれば、意図した動作ができるわ!」
    一連の報告、一生けんめい自分で和英・英和辞典引いて投稿しました「いつも使ってるよ、ありがとう」のメッセージ付きで!

    無視されました・・・・
    まあ、私の辞典翻訳の英語が変だったのかもしれませんがおすし

    数カ月後、非英語圏(だがヨーロッパ)から「このオプションおかしいよ」と投稿がありました。
    「それ、もう俺が指摘したオプションなんだけど」ってするーしていたら、開発者が
    「やばい、このオプション無視して。やばいやばいやばい」ってMLに投稿してきたので
    「あの、おれその半年前くらいに、問題解決のぱっち送ったんやけど」って、MLの投稿番号付きで。

    無視されました・・・・

    数カ月後、「メジャーアップデートしたよ、お前の指摘入れたからな!(なんかAAっぽい。意図不明」って私的メールが開発者から届きました。
    リンクも引用もなしです。パッケージのUpdate(ReadMEその他)には私の寄与はまったく記載されていませんでした。

    え、そのソフトは今でも使ってますけど、もう二度とコード修正をしたいとは思いません。
    コードエラーを見つけても二度と献上しませんね。
    もっとも、最初の私の英語がまずくなかったら違かったのかもしれませんが・

    教訓として、みんな、ちょこっと変な日本語みてもまあ寛大に読んであげなってことだ。
    すらどの記事読んでいる忍耐強い人には言うまでもないかもしれんが

    • by Anonymous Coward on 2017年10月31日 11時51分 (#3304528)

      パッチを投げたらあとは知らんふりぐらいでいいと思うよ。
      バグ潰すとか便利なオプションをつけるのは第一に自分のためだからね。
      誰も使っていないオプションという話だけど、誰も困っていないバグが無視されるのは、そりゃ当然の話。
      中小のプロジェクトだと管理者も第一に自分の為に作ってるわけだから。

      英語圏の人間と付き合いはそれなりにあるけど、英語喋る人は、ほぼ全員がブロークンな英語に寛容だと思うけどね。
      日本語と違って、英語が母国語じゃない人の方が多い言語だから。
      あっちじゃ変な日本語喋るガイジンみたいな存在は英語圏じゃありふれた存在すぎて、とてもテレビ番組にはならんと思う。
      英語が変だから無視されたとか、へそ曲がりな態度は君の世界を狭めると思うよ。
      他のプロジェクトにどんどん変な英語でパッチ投げつけてやりゃいい。

      # このバグを消したければ、俺の変な英語を頑張って解読してみろ!ワハハハ!

      親コメント
      • by Anonymous Coward

        スラングやミーム的な語を使っていい場とそうでない場の見極めをちゃんとつけることが出来ていれば多少のBrokenは「sorry my bad english ...」でたいてい許してもらえるはず。

    • いくつかのOSSに、バグ修正などのパッチを送ったことがありますが、「どういう問題が起きているのか」「それをどう修正したのか」についてを、とにかく簡潔に書けば、だいたいいけると思ってます。変に難しく書かないほうがいいんじゃないかなぁ。

      私がパッチを送る最大の目的は「バージョンアップするたびに自分でパッチを当てるのが面倒」だからですね。だから、パッチが採用されないなら、自前で毎回パッチを当てるだけのことですし、問題が解消するなら、別の人のパッチが採用されても、全然気になりません。いつもパッチに関しては著作権の一切を放棄してますし、謝辞も要らないです。

      とはいえ、nvi-m17nに、16年前に混入したバグについて、13年前にitojunさんに報告したら、私の送ったパッチは採用されず、itojunさん自身の方法で修正された、ということがあったのですが、じつはその修正では問題が完全に解消されない中途半端な状態になっちゃってて、今年になってその問題を修正するパッチがFreeBSDのportsに投げられた [srad.jp]なんてことになると、ちょっともの悲しいですね。しかも、そのパッチ内容は、itojunさんが採用しなかった(私が送ったのと同じ)方法の修正だったし…

      親コメント
    • by Anonymous Coward

      あなたは問題を解決したかったの?
      それとも自分を認めてほしかったの?

      • by Anonymous Coward

        どっちの欲求もあって然るべき
        じゃない?

    • by Anonymous Coward

      こりゃあよっぽど、寛大で済むレベルを超えるとても酷い英語だったんだろう…という感想しかない

    • by Anonymous Coward

      開発者の輪の中に食い込むのは結構難しい、というより運にも左右されるようですな。

      GNUの開発に関わるようになったきっかけ
      http://www.intellilink.co.jp/article/column/oss-gnu01.html [intellilink.co.jp]

      その結果、マルチバイト環境においてのみ行われるキャッシュ処理において、その後に使用されない無駄なキャッシュが多数生成されることがあることを突き止めました。そこで、早速パッチ(修正コード)を作成してGNU grepプ

    • by Anonymous Coward

      僕は昔、とあるソフトに"please support XXXX"と一行だけ書いてパッチを送ったことがあります。
      ちゃんと取り込まれたし、当時の僕のメールアドレスとかも今も記載されています。
      special thanks xxxxみたいな感じで。

      今でもギリギリ使えるソフトです。

      # 相手は超名門大学のメアドでドキドキしました。

  • by ef (25263) on 2017年10月31日 1時18分 (#3304306)

    コードを観たら、pipeline というだけあって非同期なところが普通の関数呼び出しと違うんですね。

    calleeで実装しているようですが、これ自体を操作できる構文があると楽しげ(Promiseパターンって事になるのか)。

  • by Anonymous Coward on 2017年10月30日 17時02分 (#3303966)

    情報とつく学科はいくつくらいあるんですかね。

  • by Anonymous Coward on 2017年10月30日 17時47分 (#3303999)

    素晴らしいな……俺も受けたいわ、その授業。
    コミッタが側に居てわからんところ教えてくれるとか、もう最高じゃないか。
    こういう授業が当たり前になったら、日本のITはもっと元気になる気がする。

    • by Anonymous Coward

      セキュリティキャンプにでも応募してみては?

    • by Anonymous Coward
      そんな受け身な姿勢で臨んでも得るものは少ないだろう
    • by Anonymous Coward

      PHPが好きならEtsy目指したらどうだ
      「一人目の開発者」が教えてくれるぞ
      # と煽ってみる。

      PHPの生みの親,ラスマス・ラードフ氏インタビュー
      http://gihyo.jp/news/report/2015/12/1401 [gihyo.jp]

      ラスマス:そうですね。あと,私がいつもその辺にいて相談に乗るというだけでも開発者たちの支えにはなりますし。それ自体がね――特に若い開発者たちにとっては,PHPについて分からないことがあったら,すぐにIRCで私に聞けるという,その事実自体が楽しいみたいなんですよ。

  • by Anonymous Coward on 2017年10月30日 17時53分 (#3304006)

    1 |> print
    print(1)

    「|>」なんて今まで書いたり見たりしたコードにないんですが、使うんですか?
    使うなら何言語ですか?
    class::expressionのように::はありますが。

    あとprint(1)ではなくてprint('1');では?

    • by Anonymous Coward

      F#に始まり、Haskellなどでも採用されていますね。
      記号は | だけになりますが方向性が似ているパイプ(ライン)は今も多数のOSのシェルスクリプト上で現役だと思いますし。

      1 と '1' についてはそれを質問するほど基礎的な素養がない人に説明するには長くなりますし、
      その目的でこの場所を使うことは不適切だと思いますので、ご自分でECMAScriptの入門書なりを買って勉強してください。

      • by Anonymous Coward

        ふ〜ん ocamlじゃないんだ

      • by Anonymous Coward

        In F# (|>) is important because of the left-to-right typechecking. For example:
        List.map (fun x -> x.Value) xs
        generally won't typecheck, because even if the type of xs is known, the type of the argument x to the lambda isn't known at the time the typechecker sees it, so it doesn't know how to resolve x.Value.

    • by Anonymous Coward

      パイプライン演算子は、F#, Elixir, Rなどにあります。
      言語によるとしか言えませんが、概ね、print(1)とprint('1')はどちらもありえて、意味が異なるというのが多いのではないかと思います。
      JavaScript例でいえば、
      print('1')に等価なのは '1' |> print になるでしょう。

      • by Anonymous Coward

        あー、やっぱり「F#, Elixir, R」系なのですね。普段のC業務では使わないや。

        あと1は数字で、'1'は文字列だと個人的に思ってます。

        • by Anonymous Coward

          C言語だと、'1'だと文字列ではなく、文字では?
          文字列は"1"。
          わりかしシングルとダブルで意味合いが違ったような。
          もう10年近く前の知識で言ってますが。

      • by Anonymous Coward

        print(1+1)とprint("1+1")の説明はちょっとね…
        JavaScript例でいえば、printを自分で定義しないで実行すると多くのブラウザでwindow.printが呼び出されます。ちなみにこの関数は引数を無視します。なんでJavaScriptの場合print(1+1)とprint("1+1")は等価っつーかprint()ととうk…
        #言語によるとしか言えませんが"1"と'1'はどちらもありえて、意味が異なるというのが少なくないのではないかと思います。しかし意味が同じという場合も少なくないので注意が必要であると。

        • by Anonymous Coward

          まぁ言語によりますが、JSなら自分だとこう書きますね。JSにprint関数があることを知らなかった。C系でprint/printfを使うけど。

          document.write('1');

          • by Anonymous Coward

            JSにはたいていあるけどECMAScriptの規格上存在しないのでそんな関数はねぇとかいわれるかもしれない。あとブラウザというかエンジンによって挙動が違うかもしれない。大抵はウェブページをプリントするプロンプトを表示する関数になっているようだ。ということはウェブブラウザ以外だと意味がない……?
            print(1+1),print("1+1"),print()を、俺は見下さん!
            すべて平等に価値がない!

            • by arlz (45121) on 2017年10月30日 21時10分 (#3304155)

              オフトピ気味なので突っ込むのも野暮なのでしょうが、

              document.write('1');

              これはDOMの実装で、Javascriptの実装ではないです。

              ウェブページをプリントするプロンプトを表示する関数

              これもDOMの実装で、Javascriptの実装ではないです。

              Javascriptがブラウザ上で実行される際、グローバル変数/関数をwindowクラスのメンバとして実行する、という仕様があります。そのせいで混乱を招いているのだと思います。
              リンク先のブログのprint()は、window.print()のことではないです。コンソール系だと標準出力を吐く実装として、print()そのものがあるんです。

              親コメント
        • by Anonymous Coward

          > JavaScriptの場合print(1+1)とprint("1+1")は等価

          ちょっとFirefoxのDeveloperTools開いて試してみたけど・・・

          print('1+1')
          "1+1"
          print(1+1)
          "2"

          になったよ

          • by Anonymous Coward

            ちなみに Google Chromeだと印刷プレビューになる

  • by Anonymous Coward on 2017年10月30日 18時06分 (#3304013)

    たまにどっかの学校がみんなで修正しましょうみたいなのやって、
    著作権侵害の山だくそったれ!広域ブロックと削除手伝ってくれ!
    みたいな悲鳴が井戸端に上がってたりするのに、分野が変われば上手く回るのだな。

  • 授業に最適 (スコア:0, 参考になる)

    by Anonymous Coward on 2017年10月30日 20時58分 (#3304142)

    学業では最先端ではなく枯れたものを扱うので
    敢て死に逝くFirefoxを選んだのは慧眼です

    研究と割り切った授業なら
    デファクトスタンダードであっても
    学生が学び終わった時点で役に立たない知識になるくらい
    変化が早いGoogle Chromeは適切な選択ではないですからね
    そういうのは学業とは別に行わないと

    # その無駄を無駄と理解し歩み始めることが卒業

    • by Anonymous Coward

      Firefox だろうが Chrome だろうが,授業での経験は無駄にはならない.
      簡単に無駄だと決めつけて,自分のためになることを見つける努力を行えない人物は成長が遅い.

    • by Anonymous Coward

      マジかよApple最低だな
      Safari使うのやめます

typodupeerror

アレゲは一日にしてならず -- アレゲ研究家

読み込み中...