1
0
Fork 0
forked from gitea/kmybar
Mastodonのフォークとして整備しています。内輪で運用したいコミュニティ、小規模なサーバーに向いた微改造をいろいろと
Find a file
2024-08-31 19:08:53 -04:00
.devcontainer Fix Codespaces startup fails due to Corepack download prompt (#31189) 2024-07-29 08:27:11 +00:00
.github Merge remote-tracking branch 'parent/main' into upstream-20240828 2024-08-28 20:26:35 +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-20240628 2024-06-28 08:57:12 +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 Merge branch 'kmycode:kb_development' into kb_development 2024-08-31 19:08:53 -04:00
bin Use flatware to parallelize CI specs (#30284) 2024-06-27 07:42:57 +00:00
chart
config Merge branch 'kmycode:kb_development' into kb_development 2024-08-31 19:08:53 -04:00
db Add: #406 ユーザーのカスタムCSS (#825) 2024-08-29 07:55:01 +09:00
dist Remove forwarding http->https from conf file 2023-09-22 08:00:03 +09:00
install Fix: セットアップスクリプト バージョン13.0をdevelopブランチに反映 (#777) 2024-07-08 10:32:14 +09:00
lib Merge branch 'kmycode:kb_development' into kb_development 2024-08-31 19:08:53 -04:00
log
public Favicon 2024-08-24 22:38:38 -04:00
spec Merge remote-tracking branch 'parent/main' into upstream-20240830 2024-08-30 08:17:34 +09:00
streaming Merge remote-tracking branch 'parent/main' into upstream-20240828 2024-08-28 20:26:35 +09:00
vendor
.browserslistrc Add back support for old browsers (#29654) 2024-03-20 11:07:10 +00:00
.buildpacks
.dockerignore Do not copy public/packs-test into Docker (#27736) 2023-11-07 09:22:04 +00:00
.editorconfig
.env.development Enable AR Encryption (#29831) 2024-04-17 09:19:02 +00:00
.env.production.sample Change instructions to use bundle exec rails instead of rake (#30917) 2024-07-05 08:54:45 +00:00
.env.test Merge remote-tracking branch 'parent/main' into upstream-20240524 2024-05-24 08:33:49 +09:00
.env.vagrant
.eslintignore
.eslintrc.js Enable passing ESLint rules (#30726) 2024-06-19 13:42:36 +00:00
.foreman
.gitattributes
.gitignore Merge remote-tracking branch 'parent/main' into kb_development 2024-04-27 08:42:37 +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 20.17 (#31531) 2024-08-22 11:50:46 +00:00
.prettierignore Rework Prettier invocation (#28851) 2024-02-27 16:09:27 +00:00
.prettierrc.js
.profile
.rspec
.rubocop.yml Merge remote-tracking branch 'parent/main' into upstream-20240624 2024-06-24 08:38:12 +09:00
.rubocop_todo.yml Merge remote-tracking branch 'parent/main' into upstream-20240817 2024-08-17 09:38:31 +09:00
.ruby-gemset
.ruby-version chore(deps): update dependency ruby to v3.3.4 (#30969) 2024-07-10 10:04:11 +00:00
.slugignore
.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
Aptfile
AUTHORS.md
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 Fix typo in changelog (#31591) 2024-08-26 11:01:00 +00:00
CODE_OF_CONDUCT.md
config.ru
CONTRIBUTING.md Add link to org-level contribution guidelines to contributing doc (#31043) 2024-07-18 15:45:40 +00:00
crowdin.yml Case correction Github -> GitHub (#30446) 2024-06-08 10:32:39 +00:00
docker-compose.yml Fix streaming image with Docker Compose (#31615) 2024-08-27 16:05:19 +00:00
Dockerfile Use Dockerfile ADD to obtain ffmpeg and libvips source (#31498) 2024-08-19 19:44:28 +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 opentelemetry-ruby (non-major) (#31646) 2024-08-29 08:18:41 +00:00
Gemfile.lock Update dependency selenium-webdriver to v4.24.0 (#31633) 2024-08-29 08:20:02 +00:00
ide-helper.js
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
lint-staged.config.js Add rubocop binstub, simplify configuration (#30407) 2024-06-13 14:27:17 +00:00
package.json Merge remote-tracking branch 'parent/main' into upstream-20240830 2024-08-30 08:17:34 +09:00
postcss.config.js Change PostCSS config to allow logical properties (#31264) 2024-08-02 13:17:36 +00:00
priv-config
Procfile
Procfile.dev Split streaming server from web server (#24702) 2023-11-14 17:43:20 +00:00
Rakefile
README.md Change: READMEに英語圏の人への文言を追記 (#793) 2024-08-14 08:52:47 +09:00
scalingo.json
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-20240830 2024-08-30 08:17:34 +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フォークの利用者にとって公共性の高いコンテンツであると思われます。これは、日本と欧米では一般的に考えられている児童ポルの基準が異なり、欧米のサーバーの中にはこのアカウントをフォローしづらいものもあるという懸念を考慮したものです。