Skip to content

Latest commit

 

History

History
148 lines (110 loc) · 7.06 KB

CONTRIBUTING_EXPENSE.md

File metadata and controls

148 lines (110 loc) · 7.06 KB

Contributing Expenses Policy

JavaScript Primer(jsprimer)はOpen Collectiveを通じて資金を募っています。 この資金は、jsprimerへContributeしてくれた方々に対して、費用を支払うために使われます。

このガイドでは、jsprimerへのContributeした場合の費用をOpen Collectiveで請求する方法について説明します。

費用の計算方法

jsprimerへのContributeしたタスクに対してPointを設定し、そのPointに基づいて金額を計算します。

タスクに対するPoint

作業量に対する基準としてフィボナッチ数列のPointを設定する。 Pointの決定は、jsprimerのProject Memberが行う。

Point Description
0 些細な変更
1 2 よりは簡単
2 大体1日分やると終わる想定
3 2 よりは難しい
5 かなり難しい
8 難易度がとても高いので、できる人は限られる

Issueが適切に分割されていれば、5や8はほとんど出てこない想定です。 5以降はブレが大きいので、参考程度のPointとして扱います。

📝 元ネタはLinearのEstimates – Linear Docs

Pointの例

Pointはやや主観的になってしまうが、既存のIssueを比較してどの程度のPointになるかをProject Memberが判断する。

金額の計算方法

金額は次のツールで計算できる。

$ node ./tools/calc-contribute-expense.mjs --point <number>

e.g. 合計のPointが2の場合

$ node ./tools/calc-contribute-expense.mjs --point 2

金額の計算式

jsprimerの年間更新コストは、だいたい30日分の作業量になるように設定している。

Pointに直すと、年間の作業量のPointは60 Point程度になる。

年間の予算はOpen Collectiveの"推定年間予算(Estimated annual budget)"を参照する

1 Pointあたりの金額は次の計算式で求める。

const yearlyEstimatedBudget = _; // Open Collectiveの推定年間予算($ドル)
const yearlyWorkloadPoints = 60; // 1年間のPoints
const onePointCost = yearlyEstimatedBudget / yearlyWorkloadPoints;
console.log({ onePointCost }); // => 1 Pointあたりの金額($ドル)
const taskPoint = _; /// タスクのPoint
const cost = onePointCost * taskPoint;
console.log({ cost }); // => タスクの金額($ドル)

Example: 推定年間予算が $2,367 で、タスクが 2 Points の場合

const yearlyEstimatedBudget = 2_367; // Open Collectiveの推定年間予算($ドル)
const yearlyWorkloadPoints = 60; // 1年間のPoints
const onePointCost = yearlyEstimatedBudget / yearlyWorkloadPoints;
console.log({ onePointCost }); // => $39.45

const costOfPoint = 2; /// 2 Points
const cost = onePointCost * costOfPoint;
console.log({ cost }); // => $78.9

金額を確定するタイミング

作業が終わったタイミングで計算して、その月のコストをまとめて申請する。 Open Collectiveからの支払いは2週間ごとに行われるため、月ごとにまとめて請求する。

費用の請求方法

計算式に基づいた金額をOpen Collectiveで請求する手順

  1. https://opencollective.com/jsprimer/expenses/new にアクセス
  2. "Invoice"を選択
  3. 請求者の情報と支払い先(銀行口座またはPayPal)を入力
  4. "Next"をクリック
  5. 請求書の画面で "Expense title" に Development and maintenance (YYYY-DD) と入力
  6. 請求書の画面で "Set invoice details"の "Description" に Contribute to jsprimer (YYYY-DD) と入力
  7. 請求書の画面で "Date" には 今日の日付を入力
  8. 請求書の画面で "Amount" は USD を選択し、計算した金額を入力
    • 自動的にExpense Currencyで選択したJPYに変換された金額が表示されます
  9. "Next"をクリック
  10. Add notesに次の内容を入力
Contribute to jsprimer 
- Commits: https://github.com/asciidwango/js-primer/commits?author=<GitHubアカウント>&since=月の初めの日&until=月の最終日

Contribute to jsprimer 
- Commits: https://github.com/asciidwango/js-primer/commits?author=azu&since=2024-08-01&until=2024-08-31
  1. 確認して "Submit expense"をクリック

あとは管理者がApproveするまで待つと、その後Open Collectiveから支払われます。

Note:

  • 入力した個人情報は公開されません
  • 公開されるのは、Expense titleとDescriptionとOpen Collectiveのアカウント情報のみです