RFCs for changes to Star Haven

Appview #1

open opened by bates64.com targeting main from bates64.com/rfcs: appview
Labels

None yet.

assignee

None yet.

Participants 2
AT URI
at://did:plc:np53etbqrlladmbpwy36xwlg/sh.tangled.repo.pull/3mhu5hlg7aa22
+140
Diff #0
+140
text/0001-appview.md
··· 1 + # Summary 2 + 3 + Build starhaven.dev as an atproto appview with a community forum. Users sign in 4 + with any atproto account or sign up for a `*.starhaven.dev` handle via the 5 + Star Haven PDS. Forum threads and replies are atproto records stored in users' 6 + repos. The source lives at `starhaven.dev/appview`. 7 + 8 + # Motivation 9 + 10 + The Paper Mario modding community mainly talks on Discord. Discord is terrible 11 + for searchability and archiving, and the built-in forum feature is just bad. We 12 + want somewhere cosy - a 2000s-style web forum where threads are easy to find 13 + and stick around. 14 + 15 + We already run a PDS at pds.starhaven.dev and use tangled.sh for repos. Building 16 + on atproto means: 17 + 18 + - One identity system - no new accounts to make 19 + - Users own their data 20 + - `*.starhaven.dev` handles work everywhere (Bluesky, tangled, etc.) 21 + - We don't have to maintain a user/password system 22 + 23 + Existing forum software (Discourse, phpBB) doesn't really fit the vibe we want, 24 + and we'd need to write a custom auth plugin for atproto OAuth anyway. 25 + 26 + # Explanation 27 + 28 + ## Migration from current site 29 + 30 + starhaven.dev is currently a SvelteKit site on GitHub Pages (star-haven/starhaven.dev). 31 + It has a homepage and a /mods page that renders a JSON file of mods with download 32 + links. The /mods page is broken (500 error). The appview replaces this entirely - 33 + we should not regress from the existing functionality, so the homepage and mod 34 + listing need to be carried over. 35 + 36 + ## How it works 37 + 38 + starhaven.dev is an atproto **appview** - it subscribes to the firehose, 39 + indexes records that match our custom lexicons, and serves a web frontend. 40 + 41 + ``` 42 + browser --> starhaven.dev (appview + web server) --> database 43 + | ^ 44 + | | firehose 45 + v | 46 + relay / PDS 47 + ``` 48 + 49 + You sign in with atproto OAuth. When you create a forum post, it writes a 50 + record to your PDS repo. The appview picks it up from the firehose and indexes 51 + it. 52 + 53 + ## Routes 54 + 55 + ``` 56 + / Homepage (community landing page) 57 + /login atproto OAuth sign-in 58 + /mods Mod listing (replaces current JSON-rendered page) 59 + 60 + /forums Forum index (list of categories) 61 + /forums/:category Thread list for a category, paginated 62 + /forums/:category/:id Thread view, paginated (?page=n) 63 + /forums/:category/new New thread form 64 + 65 + /:handle Actor profile (avatar, posts, mods) 66 + ``` 67 + 68 + ## Lexicons 69 + 70 + Everything under `dev.starhaven.*`. 71 + 72 + ``` 73 + dev.starhaven.forum.thread 74 + title, body, category, tags, createdAt 75 + 76 + dev.starhaven.forum.reply 77 + thread (at-uri), parent (at-uri, optional), body, createdAt 78 + 79 + dev.starhaven.actor.profile 80 + displayName, description, pronouns 81 + dev.starhaven.reaction 82 + subject (at-uri), emoji, createdAt 83 + ``` 84 + 85 + ## Tech 86 + 87 + - **Language:** Rust. 88 + - **Frontend:** Server-rendered HTML + htmx (like tangled.sh). 89 + - **Database:** Postgres or SQLite. 90 + - **Hosting:** kuribo, behind Caddy. 91 + - **Repo:** starhaven.dev/appview on tangled. 92 + - **Nix:** Flake with a NixOS module (for kuribo/infra) and a devshell. 93 + 94 + ## Visual design 95 + 96 + TBD, but the forum area should feel like a 2000s web forum. 97 + 98 + ## Firehose 99 + 100 + Initially subscribe directly to pds.starhaven.dev. Expand to the full relay 101 + later if people on other PDSs want to participate. 102 + 103 + ## Moderation 104 + 105 + Appview-level: we choose what to display. Can remove content from the index, 106 + ban handles, pin/feature stuff. Doesn't touch user repos. 107 + 108 + # Drawbacks 109 + 110 + - It's a lot of work compared to just deploying Discourse. 111 + - We'd be maintaining custom forum software forever. 112 + - The PM modding community is small - might be overkill. 113 + - atproto custom lexicons are still early days, things might change. 114 + - If users delete records from their repos, forum threads get holes. 115 + 116 + # Alternatives 117 + 118 + **Discourse/phpBB with atproto auth plugin** - still need a custom auth 119 + plugin, doesn't give us the retro look without heavy theming, forum data 120 + isn't on atproto. 121 + 122 + **Don't do this** - keep using Discord. Works but Discord is not searchable, 123 + not archivable, and we don't own the platform. 124 + 125 + # Future Work 126 + 127 + - Mod browser (like itch.io) with `dev.starhaven.mod.listing` and 128 + `dev.starhaven.mod.review` lexicons. 129 + - Integration with tangled, so that users can push their WIP and completed mod source repos. 130 + - Build integration with papermario-dx CI. 131 + 132 + # Unresolved questions 133 + 134 + - Rich text: facets or Markdown? Markdown is familiar, facets are atproto-native. 135 + - Thread ordering: chronological or upvote-based? 136 + - Categories: hardcoded or user-created? 137 + - Notifications: atproto has no push for custom lexicons. Email? Bluesky DMs? 138 + Just check the site? 139 + - Search: Postgres FTS, SQLite FTS5, or something else? 140 + - Homepage design: what should it look like? The current one isn't great.

History

3 rounds 2 comments
sign up or login to add to the discussion
1 commit
expand
add appview RFC
no conflicts, ready to merge
expand 0 comments
1 commit
expand
add appview RFC
expand 0 comments
bates64.com submitted #0
1 commit
expand
add appview RFC
expand 2 comments

Summary#

I'm on board! But, a lot to consider for a project of this magnitude and for a community as unique as the Paper Mario Modding scene.

Current Solution#

Synopsis#

Currently, Star Haven is used as a central hub for Paper Mario modding, except for when it is not and breaks off into smaller sub-communities (Modern Paper Mario Modding, WUA, NicTube and Lily's mods, etc.) or when users migrate to larger platforms (Itch, or formerly romhacking.net)

Star Haven facilitates general chat, private chats, individual mod and game discussion, general modding assistance, mod release notifications and community events.

How Did We Get Here?#

Some modders have the social capital to promote, release and discuss their mods in their own bespoke communities and have no need for a centralised modding hub. Some modders even get news coverage when they release their mods!

However, such modders are the exception rather than the rule! Initially, most modders bounced around various forums until landing in Star Haven's Discord server, where they continued to develop and release their mods.

How does Star Haven facilitate mod development?#

Star Haven's Discord Server holds the largest repository of modding advice, through years of Discord chats and real-time assistance from experienced modders.

Additionally, Star Haven acts as an aggregation service for modders to publish their creations to a wider audience with relative ease, providing either a thread or a bespoke channel dependent on the mod's popularity.

On top of that, Star Haven aggregates and hosts modding tools, as well as similar help channels for said tools.

Star Haven also uses Discord and Itch.io to host regular jam events, where modders create teams to create themed mods in a certain timeframe.

What else do modders use?#

Modders use GitHub to collaboratively develop their mods, private Discord servers to facilitate development chats and voice-calls, and Itch.io to publish their mods.

Offline, modders use a wide variety of tools such as Star Rod, Mamar, Unsimplifier and more.

How does Star Haven assist mod players?#

Star Haven provides an avenue to discuss mods, the Paper Mario games, ask for help on a per-mod or a general basis, or have a general chat for most players.

Additionally, we offer a list of mods in the Discord, and the aforementioned broken mod browser on starhaven.dev/mods.

Is any of this ideal?#

Not really! The community is splintered across multiple technologies and platforms that do not neatly integrate with one another, limiting most modders' reach to a single medium-sized Discord server.

That and everyone quite dislikes Discord.

The Proposed Solution#

Synopsis#

We replace the Discord Server with Star Haven Forums (built atop at-proto), GitHub with Tangled, and Itch.io/GitHub with Star Haven Mod Browser 2.0. All of this is hosted at starhaven.dev!

What's Good For Star Haven Modders?#

The removal of reliance on closed-source, walled garden technologies allows us to exist as a self-sustaining community indefinitely, tailoring the platform we use to our individual community needs!

The use of open-source, federated technology also allows other communities to fork our work in their own endeavours to replace Discord in their usage.

Hosting all of Star Haven on the open web allows for easy searching of modding information, mods, and to contribute to our community without a Discord account.

We can have a bespoke theme for our forums, making the user feel more at home.

A non-Discord mod browser allows for much greater modder control of how their mods are promoted and advertised, providing descriptions, updates and promotional material all on the same page!

Integration with PM-DX (and further tools down the line) makes this a no-brainer as a future goal, because it enhances the developer experience.

What's Good For Star Haven Players?#

A modern, professional mod browser removes the reliance on Discord for viewing, downloading and playing mods, and allows users to find mods without scrolling up through discord channels to find them!

Would this be good for the greater Paper Mario Modding Community?#

It's likely! If the forums and mod browser are federated, then other sub-communities will be free to host their own PDS, allowing them to leverage our mod browser and forums while still maintaining separate communities.

Would this be good for other modding communities?#

Also likely! If I'm understanding correctly, all that other communities would need to do is fork our software solution, adapt the theming for their own game or platform, and then they would be able to host a similar solution!

Many modding communities are stranded in Discord servers that become difficult to find over time, and so a federated, web-based solution such as this could breathe new life into otherwise forgotten modding communities, as well as allow their mods to live on post-shutdown.

The scalability and federation of at-proto would allow for even larger mod aggregate sites, that aren't at the risk of shutting down and losing all mods like romhacking.net.

Considerations#

The Case for Privacy#

Most modders work in secret until they're ready to release their mods. An open, fully-public platform such as Tangled (and at-proto at large) removes the ability for modders to do so.

This clashes with the approach taken for Jams, where modders all keep their repositories private until it is time to release their mods.

Slow Adoption#

I say this with love, but the Paper Mario Modding Community is very slow to adopt new technologies. Decomp has been out for years and years, yet modders prefer to backport features from Star Rod Decomp to Classic in many cases!

This (typically) isn't due to modders being stubborn, but oftentimes older solutions have answers to problems that the newer solutions don't account for.

Classic->Decomp is a conversation that's been done to death, with every second person providing a reason to stick with Classic despite the technological superiority in most aspects of Decomp.

If users cannot access the full suite of features they have come to appreciate about even inferior platforms such as Discord, it is unlikely that they will move over, partially or in full. As a community platform is only as good as its users, if nobody moves, the work would not benefit Star Haven!

That, and the closer we stick to the Discord model, the less we benefit from the move. For example, if we were to port #pm64-modding directly over as a forum thread, people would be able to search for strings of text, but not for topics. This is not that much better than using Discord!

Additionally, channels like #star-kids may also need to be dropped entirely, as they don't really map to the forum model, which creates friction which some may object to.

As such, user behaviour would need to change slightly - instead of talking in a general modding thread, they might need to create a thread to ask questions. Thankfully, with control over the appview, we can make this as obvious, simple, and fast as we need to. Off-topic conversation may coalesce into one general thread (or even an IRC channel...), which likely doesn't need to be scrapable by search engines.

Legacy Mod Support#

As users require accounts to publish mods, it is unlikely that we will see the full Paper Mario Mods catalogue available on Star Haven for some time, unless we reach out to other communities or retired modders.

Additionally, requiring an open-source repository for mods released years before this became standard practice limits the ability for us to serve legacy mods to users, which is something the Discord Server still supports (i.e. the Pro Mode download link is still hosted with us.)

We Can't Fully Replace Discord, But That's Okay#

Star Haven Forums would not be able to support voice chats, screen-sharing or private modding chats. That's okay, because people tend to do this in private modding servers anyway! It does however mean that modders will be using Discord to mod collaboratively, and Star Haven to publish mods.

I don't think there's a way to fix that short of hosting a federated Discord alternative (that also supports invite-only servers and mobile support), but we're already hosting three services as is and I don't want to keep stressing out poor Kuribo.

2000s Forums Are Called That For a Reason#

I love the 2000s forums look! However, it fell out of favour for a variety of reasons, notably accessibility reasons and mobile support.

We can still achieve a personalised, homely look - Mario Fan Games Galaxy and Spriters Resource achieve this with custom icons, banners, fonts and palettes, but it would be wise to take cues from modern sites to ensure that Star Haven remains as accessible as it can be for all players and modders.

That, and a bespoke design gives us the opportunity to create a modern, mobile-supported look to go alongside the modern technologies we're employing.

Potential Addendums#

Optional GitHub Support#

To my understanding, while private repos are in the works for Tangled, they are not yet available. If we happen to release a version of starhaven.dev before they are available, we should allow users to link GitHub repositories to their mods until we can properly replace GitHub's functionality.

Event Support / Mod Collections#

Events are really just collections of mods with a synchronised release date. We have a lot of mod collections anyway (Master Quest, Paper Dank Rave, the Holiday Specials) and so we would benefit from including support for them, as it's something that the Discord and Itch facilitate that this proposed solution does not, yet.

Discord <-> AT-Proto Bridge#

If we can't bring Discord users to the site immediately, we can still absolutely bring over their messages! And vice versa, with webhooks.

However, this bridge would mean that, in the early days, nobody would be punished for using the site as an early adopter, which would accelerate adoption of the site.

Inversely, a Discord bridge also allows mobile users to remain able to post to the forums while we sort out a suitable solution for a mobile version of the forums.

In the event that Star Haven chat remains on Discord, this also allows us to have the best of both worlds, leveraging the only thing that Discord is really good for!

Moderator Simplicity#

I assume the same people who moderate the server will be moderating the forums. We should strive to make doing both as seamless as possible for them.

What about the docs?#

Will we be including Star Haven's tool documentation in this solution, or will that remain as a unique system?

Scalability#

Because we're already making considerations for seven different games, each with their own modding tools, it is likely that our forums and mod pages are game-agnostic.

Similarly, if we provide the ability to host mods and users from separate PDS servers, this technology may easily be of great use to every modding circle looking for a Discord replacement!

This justifies the time-sink it would take to create a bespoke software solution for about 20 users, as all of a sudden our work becomes useful to Every Modder Ever.

However, this does mean that some unresolved questions (hardcoding categories makes less sense in this context) become easier to solve, but provide us with less flexibility in making changes for ourselves.

As such, for the short-term it is likely best to focus on what would make this work for Star Haven specifically.

Conclusion#

Yeah this is something I'd like to contribute my time to setting up this community is just a little unique with it sometimes ๐Ÿ‘

thank you!

  • I really like your summary of the status quo and I think we should incoporate into the RFC, perhaps verbatim
  • 'GitHub with Tangled' I think you mean replacing our git forge, GitHub, with Tangled - but I'm being kinda pedantic
  • In the long term we could look at dropping itch.io for our own mod browser and jam system but thats a long way off and not really necessary
  • "all that other communities would need to do is fork our software solution" - yep! if we provide decent docs for how to set up the infra. we could potentially design the appview/scopes in a modular way if you could see this being useful for other communities of a particular archetype (e.g. we make "steam for atproto" as the backend and then just skin that, rather than making paper mario specific features), although im hesitant on this because it means designing for users that dont exist (yet)
  • The Case for Privacy: yes, this is a problem. it's one that the bluesky team are working on ('permissioned data') but there is no roadmap yet. I think we can encourage people to use whatever git forge they prefer (e.g. github) until this feature is done, and we can revisit it later down the line instead of trying to solve a problem that should get solved for us eventually.
  • Slow Adoption: 100% i see this being an issue for forums part. it may be that, with the discord admin team's support, we close down some channels here and direct people to the appview (the work in progress mods channels, for instance, is better served with a kind of devlog system similar to itch). we should do this later down the line instead of forcing people to migrate while its still in alpha. for the mod browser thing, we close down the released channels here and then have a steam-like homepage and player UX is much better than 'join discord and download a bps and put it on this patcher website', and people will come to use it, I think
  • Legacy Mod Support - yeah, uploading legacy content is a fun one that we should think about eventually, but i dont think it would block an MVP
    • "requiring an open-source repository for mods" - I don't think we need to make open source mods a requirement - just highly encouraged. if there is a tangled repo attached then thats great, but it can be optional. this allows closed source mods from the past to exist
  • We Can't Fully Replace Discord, But That's Okay - 100% agree, and this isnt a goal
  • 2000s Forums Are Called That For a Reason - worth looking at Discourse as an example of a modern forum. https://users.rust-lang.org/
  • Optional GitHub Support - I see some complexity with this but it highly depends on exactly what counts as a "mod" in the lexicon, and is something we can solve in a later RFC I think
  • Event Support / Mod Collections - yep. scratch has these and they work well
  • Discord <-> AT-Proto Bridge - I think I disagree with this. it's a lot of work for little gain and discourages people from actually checking the site. at best we could have a #forums channel that posts a message for new forum posts via a webhook. maybe down the line we can have our own discord bot that provides deeper integration (e.g. if there is a ranking system on the forums, we can map it to discord roles). chat can remain on discord, and we can do mobile support on the site as a first class feature
  • What about the docs? - yes, it makes sense to keep it as it is for now besides migrating the source to tangled. we can talk about making it easy to edit the docs pages on the site directly (like mediawiki) at a later stage
  • Scalability - "for the short-term it is likely best to focus on what would make this work for Star Haven specifically" I agree, although before a 1.0 we should be careful to not set any lexicon in stone that is super specific to us if we intend to open it up in future