A fork of Mastodon for small communities, including emoji-reaction, quote, antenna, circle and the truth of ohagi.
Find a file
2025-01-16 22:57:02 +09:00
.devcontainer Update libretranslate/libretranslate Docker tag to v1.6.2 (#32951) 2024-11-18 08:56:19 +00:00
.github Merge remote-tracking branch 'parent/main' into upstream-20241126 2024-11-26 12:56:31 +09:00
.husky Update husky and remove deprecated features (#29338) 2024-02-22 09:02:15 +00:00
.rubocop Merge remote-tracking branch 'parent/main' into upstream-20240918 2024-09-18 08:31:34 +09:00
.yarn Replace our custom compression-webpack-plugin patch with the fixed upstream version (#28510) 2023-12-29 09:33:06 +00:00
app Fix error decrementing status count when FeaturedTags#last_status_at is nil (#33320) 2025-01-16 22:57:02 +09:00
bin Update binstub templates (#32335) 2024-11-25 16:49:24 +00:00
chart helm: cleanup helm chart, now in mastodon/chart (#21801) 2022-12-09 06:36:29 +01:00
config Merge remote-tracking branch 'parent/main' into upstream-2024112 2024-11-28 19:45:31 +09:00
db Merge remote-tracking branch 'parent/main' into upstream-20241113 2024-11-13 08:17:38 +09:00
dist Merge remote-tracking branch 'parent/main' into upstream-20241126 2024-11-26 12:56:31 +09:00
install Fix: セットアップスクリプト バージョン13.0をdevelopブランチに反映 (#777) 2024-07-08 10:32:14 +09:00
lib Bump version to v4.3.2 (#33136) 2024-12-04 08:44:51 +09:00
log Initial commit 2016-02-20 22:53:20 +01:00
public Remove constant definition from global scope in embed.js (#33107) 2024-12-04 08:42:51 +09:00
spec Fix last paginated notification group only including data on a single notification (#33271) 2025-01-16 22:56:47 +09:00
streaming Merge remote-tracking branch 'parent/main' into upstream-2024112 2024-11-28 19:45:31 +09:00
vendor Increase files checked by ESLint (#9705) 2019-01-04 11:28:38 +01:00
.annotaterb.yml Change dependency from annotate to annotaterb (#30232) 2024-11-18 14:40:02 +00:00
.browserslistrc Target firefox all the way back to Firefox 78 (#31782) 2024-09-06 12:33:38 +00:00
.buildpacks Remove nodejs buildpack from buildpacks (#14364) 2020-07-20 09:48:10 +02:00
.dockerignore Do not copy public/packs-test into Docker (#27736) 2023-11-07 09:22:04 +00:00
.editorconfig Enable EditorConfig trailing whitespace trimming (#23543) 2023-02-12 08:34:17 +01:00
.env.development Enable AR Encryption (#29831) 2024-04-17 09:19:02 +00:00
.env.production.sample Change Active Record Encryption variable check to check for emptiness (#32537) 2024-10-16 08:43:45 +00:00
.env.test Merge remote-tracking branch 'parent/main' into upstream-20240524 2024-05-24 08:33:49 +09:00
.env.vagrant Add elastic search installation into Vagrantfile (#26512) 2023-08-23 15:46:14 +02:00
.eslintignore Increase files checked by ESLint (#9705) 2019-01-04 11:28:38 +01:00
.eslintrc.js Enable ESLlint no-case-declarations (#30768) 2024-10-01 16:26:30 +00:00
.foreman Replace sprockets/browserify with Webpack (#2617) 2017-05-03 02:04:16 +02:00
.gitattributes Add .gitattributes file to avoid unwanted CRLF (#3954) 2017-06-26 13:15:24 +02:00
.gitignore Merge remote-tracking branch 'parent/main' into upstream-20240906 2024-09-06 08:42:24 +09:00
.haml-lint.yml Merge remote-tracking branch 'parent/main' into upstream-20240412 2024-04-12 08:40:08 +09:00
.haml-lint_todo.yml Change: #591 ホワイトリストのドメイン一覧の保存先・画面変更 (#689) 2024-04-03 12:09:43 +09:00
.nvmrc Update dependency node to v22 (#32689) 2024-10-31 10:42:18 +00:00
.prettierignore Rework Prettier invocation (#28851) 2024-02-27 16:09:27 +00:00
.prettierrc.js Use Prettier for ESLint formatting TypeScript (#23631) 2023-05-09 19:02:12 +02:00
.rspec Remove fuubar gem and custom rspec --format setting (#30594) 2024-09-03 15:24:31 +00:00
.rubocop.yml Merge remote-tracking branch 'parent/main' into upstream-20241101 2024-11-01 08:04:03 +09:00
.rubocop_todo.yml Merge remote-tracking branch 'parent/main' into upstream-20240906 2024-09-06 08:42:24 +09:00
.ruby-gemset Make Mastodon use its own gemset (#17858) 2022-08-13 15:44:34 +02:00
.ruby-version Update dependency ruby to v3.3.6 (#32773) 2024-11-06 10:57:42 +00:00
.slugignore Remove Storybook (#4397) 2017-07-27 22:30:27 +02:00
.watchmanconfig Fix Jest config (#27834) 2023-11-13 12:19:41 +00:00
.yarnrc.yml Upgrade to Yarn 4, remove support for Node 16 (#27073) 2023-11-08 10:57:21 +00:00
app.json Refresh Heroku related thingy for heroku-24 stack (#31135) 2024-09-03 16:03:00 +00:00
Aptfile Refresh Heroku related thingy for heroku-24 stack (#31135) 2024-09-03 16:03:00 +00:00
AUTHORS.md Update AUTHORS.md (#27018) 2023-09-21 14:42:15 +02:00
AUTHORS_KB.md Add: 貢献者 (#658) 2024-03-19 12:04:21 +09:00
babel.config.js fix(deps): update dependency fuzzysort to v3 (#30315) 2024-07-24 08:13:09 +00:00
CHANGELOG.md Bump version to v4.3.2 (#33136) 2024-12-04 08:44:51 +09:00
CODE_OF_CONDUCT.md Update Contributor Covenant to 2.1 (#23980) 2023-04-23 23:11:50 +02:00
config.ru Match dependency-generator output for require_relative usage (#32800) 2024-11-08 09:55:15 +00:00
CONTRIBUTING.md Change: #456 名称変更「スタンプ」→「絵文字リアクション」 (#497) 2024-01-24 08:49:10 +09:00
crowdin.yml Case correction Github -> GitHub (#30446) 2024-06-08 10:32:39 +00:00
docker-compose.yml Bump version to v4.3.2 (#33136) 2024-12-04 08:44:51 +09:00
Dockerfile Update docker/dockerfile Docker tag to v1.11 (#33060) 2024-11-25 07:58:05 +00:00
FEDERATION.md docs: update FEDERATION.md to more closely follow FEP conventions. (#28838) 2024-01-22 11:11:47 +00:00
Gemfile Update dependency opentelemetry-instrumentation-rails to '~> 0.33.0' (#32987) 2024-11-20 07:42:53 +00:00
Gemfile.lock Update dependency aws-sdk-s3 to v1.174.0 (#33076) 2024-11-26 08:10:08 +00:00
ide-helper.js Add JS IDE helper (#13012) 2020-04-27 17:19:53 +02:00
jest.config.js Change icon SVG imports to use a default import (#28709) 2024-01-12 10:31:24 +00:00
jsconfig.json Update devDependencies (non-major) (#29089) 2024-02-27 16:07:43 +00:00
LICENSE Fix #49 - License changed from GPL-2.0 to AGPL-3.0 2016-09-21 23:04:34 +02:00
lint-staged.config.js Update binstub templates (#32335) 2024-11-25 16:49:24 +00:00
package.json Merge remote-tracking branch 'parent/main' into upstream-2024112 2024-11-28 19:45:31 +09:00
postcss.config.js Change PostCSS config to allow logical properties (#31264) 2024-08-02 13:17:36 +00:00
priv-config TOR federation (#7875) 2018-06-26 20:34:12 +02:00
Procfile Refresh Heroku related thingy for heroku-24 stack (#31135) 2024-09-03 16:03:00 +00:00
Procfile.dev Split streaming server from web server (#24702) 2023-11-14 17:43:20 +00:00
Rakefile Match dependency-generator output for require_relative usage (#32800) 2024-11-08 09:55:15 +00:00
README.md Drop support for ruby 3.1 (#32363) 2024-10-31 15:12:08 +00:00
scalingo.json Add S3 region list reference to Scalingo config (#24152) 2023-04-26 16:46:19 +02:00
SECURITY.md Add: #809 サポート対象のバージョンについてwikiに明記 (#812) 2024-08-21 12:34:54 +09:00
stylelint.config.js Disable stylelint rules that are conflicting with Prettier (#31339) 2024-08-08 19:22:16 +00:00
tsconfig.json Enable stricter Typescript options (#30435) 2024-05-27 09:24:59 +00:00
Vagrantfile Add libvirt provider parameters to Vagrant (#28102) 2024-06-04 20:28:05 +00:00
yarn.lock Merge remote-tracking branch 'parent/main' into upstream-2024112 2024-11-28 19:45:31 +09:00

kmyblue icon kmyblue

Ruby Testing

! FOR ENGLISH USER ! We do not provide English documentation for kmyblue; we assume that you will use automatic translation software, such as Google, to translate the site.

kmyblueは、ActivityPubに接続するSNSの1つであるMastodonのフォークです。創作作家のためのMastodonを目指して開発しました。

kmyblueはフォーク名であり、同時にサーバー名でもあります。以下は特に記述がない限り、フォークとしてのkmyblueをさします。

kmyblueは AGPL ライセンスで公開されているため、どなたでも自由にフォークし、このソースコードを元に自分でサーバーを立てて公開することができます。確かにサーバーkmyblueは創作作家向けの利用規約が設定されていますが、フォークとしてのkmyblueのルールは全くの別物です。いかなるコミュニティにも平等にお使いいただけます。
kmyblueは、閉鎖的なコミュニティ、あまり目立ちたくないコミュニティには特に強力な機能を提供します。kmyblueはプライバシーを考慮したうえで強力な独自機能を提供するため、汎用サーバーとして利用するにもある程度十分な機能が揃っています。

テストコード、Lint どちらも動いています。

アジェンダ

  • 利用方法
  • kmyblueの開発方針
  • kmyblueは何でないか
  • kmyblueの独自機能
  • 英語のサポートについて

利用方法

インストール方法

Wikiを参照してください。

開発への参加方法

CONTRIBUTING.mdを参照してください。

テスト

# デバッグ実行(以下のいずれか)
foreman start
DB_USER=postgres DB_PASS=password foreman start

# 一部を除く全てのテストを行う
RAILS_ENV=test bundle exec rspec spec

# ElasticSearch連携テストを行う
新
RAILS_ENV=test ES_ENABLED=true bundle exec rspec --tag search
旧
RAILS_ENV=test ES_ENABLED=true RUN_SEARCH_SPECS=true bundle exec rspec spec/search

kmyblueの開発方針

本家Mastodonへの積極的追従

kmyblueは、追加機能を控えめにする代わりに本家Mastodonに積極的に追従を行います。kmyblueの追加機能そのままに、Mastodonの新機能も利用できるよう調整を行います。

ゆるやかな内輪での運用

kmyblueは同人向けサーバーとして出発したため、同人作家に需要のある「内輪リを外部にできるだけもらさない」という部分に特化しています。

「ローカル公開」は、投稿を見せたくない人に見つかりにくくする効果があります。「サークル」は、フォロワーの中でも特に見せたい人だけに見せる効果があります。
「検索許可」という独自の検索オプションを利用することで、公開投稿の一部だけを検索されにくくするだけでなく、非収載投稿が誰でも自由に検索できるようになります。

内輪とは自分のサーバーに限ったものではありません。内輪同士で複数のサーバーを運営するとき、お互いが深く繋がれる「フレンドサーバー」というシステムも用意しています。

少人数サーバーでの運用

kmyblueは、人の少ないサーバーでの運用を考慮して設計しています。そのため、Fedibirdにあるような、人の多いサーバー向けの機能はあまり作っていません。

サーバーの負荷については一部度外視している部分があります。たとえば絵文字リアクション機能はサーバーへ著しい負荷をかける場合があります。ただしkmyblueでは、絵文字リアクション機能そのものを無効にしたり、負荷の高いストリーミング処理を無効にする管理者オプションも存在します。

もちろん人の多いサーバーでの運用が不便になるような修正は行っていません。人数にかかわらず、そのままお使いいただけます。

比較的高い防御力

kmyblueでは、「Fediverseは将来的に荒むのではないか」「Fediverseは将来的にスパムに溢れるのではないか」を念頭に設計している部分があります。投稿だけでなく絵文字リアクションも対象にした防衛策があります。

管理者は「NGワード」「NGルール」機能の利用が可能です。設定を変更することで、一部のモデレーターもこの機能を利用できます。
利用者は、独自拡張されたフィルター機能、絵文字リアクションのブロックなどを利用できます。

ただし防御力の高さは自由を犠牲にします。例えばNGワードが多すぎると、他のサーバーからの投稿が制限され、かつそれに気づきにくくなります。

kmyblueは何でないか

kmyblueは、企業・政府機関向けに開発されたものではありません。開発者はセキュリティに関する専門知識を有しておらず、高度なセキュリティを求められる機関向けのソフトウェアを制作する能力はありません。また、kmyblueのメンテナは現在1人のみであり、そのメンテナが飽きたら開発がストップするリスクも高いです。Mastodonのような高い信頼性・安全性を保証することはできないので、導入の際はご自身で安全を十分に確認してからお使いになることを強くおすすめします。
個人サーバーであっても、安定性を強く求める方にはおすすめできません。glitch-socがよりよい選択肢になるでしょう。

kmyblueは、Misskeyではありません。Misskeyは「楽しむ」をコンセプトにしていますが、kmyblueはMastodonの思想を受け継ぎ、炎上や喧騒を避けることのできる落ち着いた場所を目指しています。そのため、思想に合わない機能は実装しないか、大幅に弱体化しています。

kmyblueは、Fedibirdではありません。Fedibirdは大規模サーバー向けに設定していると思われる機能があり、例えば購読機能がその代表例です。Fedibirdの購読は擬似的なフォロー体験を与えるものですが、本物のフォローではないため、購読対象の投稿が配送されることを確約したものではありません。小規模サーバーだとかえって不便になる機能を、kmyblueは避けています。

kmyblueの独自機能

以下に列挙したものはあくまで代表的なものです。これ以外にも、細かい仕様変更などが多数含まれます。

  • 絵文字リアクション
  • ローカル公開Local Publicリモートサーバーの連合タイムラインには流れませんが、フォロワーのホームタイムラインには流れます。ローカル限定とは異なります
  • ブックマークの分類
  • 自分の投稿を検索できる人を投稿ごとに設定検索許可・Searchability
  • 投稿の引用、ひかえめな引用(参照)
  • ドメイン・アカウント・キーワードなど特定条件を満たした投稿を記録する機能(購読・アンテナ)
  • フォロワーの一部を指名して投稿を送る機能(サークル)(ダイレクトメッセージとは異なります)
  • リスト新着投稿の通知
  • 投稿のフィルタリングにおいて、自分がフォローしている相手の投稿を除外
  • フォロー・フォロワー数を隠す機能
  • 指定した時間が経過したあとに投稿を自動削除する機能
  • モデレーション機能の拡張

英語のサポートについて

kmyblueのメイン開発者である雪あすかは、英語の読み書きがほとんどできません。そのため、ドキュメントの英語化、海外向け公式アカウントの新設などを行う予定はありません。

要望やバグ報告はIssueに書いて構いませんが、Issue画面内の説明やテンプレートはすべて日本語になっています。投稿が難しければ、Discussionに投稿してください。こちらで必要と判断したものは、改めてIssueとして起票します。

そのほか開発者へ質問があれば、@askyq@kmy.blueへ英語のまま送ってください。

ただしkmyblueのドキュメント、@askyq@kmy.blue内のkmyblueフォークに関係する投稿を、許可なく翻訳して公開することは問題ありません。

開発者のアカウントについて

kmyblueのメイン開発者である雪あすかは、用途別にアカウントを分けるようなことはせず、すべての発言をつのアカウントで行っています。そのため、kmyblueの開発だけでなく、成人向け同人作品の話も混ざっています。

このうち、公開範囲「公開」「ローカル公開」「非収載」であるkmyblueフォークの開発に関係する投稿に限り抽出し、翻訳の有無に関係なく公開することを許可します。これはkmyblueフォークの利用者にとって公共性の高いコンテンツであると思われます。これは、日本と欧米では一般的に考えられている児童ポルの基準が異なり、欧米のサーバーの中にはこのアカウントをフォローしづらいものもあるという懸念を考慮したものです。