Have some kind of real-time interface. The chat-like style Spectrum.chat used was great for this (apart from Spectrum (source linked) being slow as hell).
Provide plenty of single sign-on. IndieAuth on by default could be a big help.
Have a cheap/free (at least sponsor open-source projects to be free), dead-simple way to host your own
Other nice-to-haves:
Fediverse support of some kind.
Integration with Discord (hell, using Discord's forums, and bi-directional! It's possible with Discord's API, last I checked).
@blake never say never! I've seen lots of interesting projects take on the whole "host Node.js on the cheap" aspect (@cloudron being one).
I won't bore you with details on why #nodebb fits the bill for the other parts of your post, because you explicitly mentioned it.
PHP hosting wasn't always simple either. I remember messing around with php-fpm for far too long. Node will get there (still waiting after a decade though 🤔)
ActivityPub is so neat! With all the new implementations coming out, it's slowly becoming my "one stop shop" internet aggregator.
For example, all from within my Mastodon instance I can:
Follow communities on Lemmy and Kbin, allowing me to interact with every post/comment and make my own post or comment to any community.
Follow my favorite podcasts and get new episodes directly in my feed via PodcastIndex.org
Follow WordPress blogs that have the ActivityPub plugin activated.
SOON enough I'll be able to:
Interact/follow accounts on Threads (and hopefully someday Instagram)
Follow/interact with comments/posts/communities from NodeBB forums.
This protocol is changing the internet and how I use it every day.
PS. If you want more information on how to do any of these things, just let me know and I will explain. Though please limit to asking about one or two at a time, as some are quite intricate in their implementations.
Edit: Nitter has been shut down 2 days after I posted this. Oh well. Fuck Xhitter
I think awhile back @thisismissem lamented the fact that you couldn't be notified of a reply chain unless a) you directly contributed to it (or were mentioned), and b) the replies kept mentioning you.
... and so we're in this weird situation where everybody on Mastodon just mention-spams so people don't get left out, which is... janky, let's not mince words.
#NodeBB keeps you in the loop by having the user follow a topic once replied-to, but I can't force this on Mastodon users (not morally, I literally can't). Most I can do is keep all topic participants in the loop by sending all the replies I get to their respective instances; while it'll show up in their home feed (one hopes), they won't get notified. That's a Mastodon-ism, and I can't change that.
Different implementors may handle incoming content differently though, so not all hope is lost!
@BeAware#WordPress being a php-scripted software benefits from some segregation of logic, so if a bad update occurs, parts of the site break, but the site as a whole is unlikely to become unresponsive.
#NodeBB runs on #nodejs and a bad update could literally bring down the forum, so early on a decision was made to have upgrades via cli, which is also a light form of gatekeeping.
But it's pretty easy... ./nodebb upgrade and grab a coffee 😄
@AltCode@nodebb soon! The two-way interface is still very much in active development so when queried, currently #nodebb doesn't know to respond with a Note object. That's easy to do though so I'll have that working soon hopefully!
I am not a fan of including big or obscure libraries into apps or services, but in the case of #ActivityPub I'd make an exception. If there would be a well-maintained standard compliant ActivityPub library that one could include instead of having to reinvent the wheel (and creating interoperability problems along the way) as I too often see happening right now, that would be GRAND!
@lobingera@jwildeboer I'm also writing an implementation for @nodebb but have been rolling my own logic for a lot of it for one simple reason... that while there are many parallels between #ActivityPub and #nodebb, that translation layer is not really generic enough to use by others.
However there is a lot of low level boilerplate that could be genericised out, and I'd love to do that for #javascript. Things like http signing and verification, key generation, etc.
ActivityPub defines a stream of objects whose content is essentially text, but can include HTML tags. For example, "<p>I <em>really</em> like strawberries!</p>" (wich I take from Example 8 in https://www.w3.org/TR/activitypub/).
In https://cosocial.ca/@evan/111771562317992298, @evan distinguishes short-form text (e.g., Mastodon 500 characters posts) from long-form text (WordPress article entries). Short-form text does not require much markup, but long-form text may require it to share a faithful copy of an article.
Currently, a WordPress blog does not look the same on Mastodon because the HTML elements are changed. For example, @evan blog entry https://evanp.me/2023/12/26/big-fedi-small-fedi/ has the element <h2 class="wp-block-heading">Big Fedy</h2>, which Mastodon shows as <p><strong>Big Fedy</strong></p>. I don't know who changed the original document structure (Mastodon or WordPress) but it appears that the HTML elements were modified to avoid breaking the Mastodon UX. I imagine that if we include SVG code directly on WordPress pages, these code may be complicated to render on Mastodon, even when the browser supports SVG rendering.
@evanprodromou, which HTML fragment is allowed for the content of an ActivityPub object?
Would love to hear your reasoning why!
Personally, I like the possibility of tangents in Reddit BUT I think I prefer the focus of staying on topic from a single thread.
@leroy@BeAware@multiverseofbadness sure, you're indirectly weighing in on the perceived "cultural fit" of the user in that particular forum's environment. You like what you see, you upvote.
But if you're talking literal and objectively, then also yes. #nodebb can be configured so new users with zero rep have their posts queued for approval. If you get one upvote, you clear the hurdle and can post freely.
Last week, I started my initial forays into retrieving and parsing remote content from the #fediverse. As expected much of the data structures are identical to #ActivityPub but named and organized differently, so there's a lot of bits and pieces that need connecting.
Nevertheless, it's thrilling to see remote content on a local instance!
I'm guessing the "conversation" value in an #ActivityPub Note object is #Mastodon specific, and other implementors have adopted it as a pseudo-standard?
Did some digging and it doesn't seem well supported. Happy to use it for #nodebb but bsd.network, for example, just sends the object id with #ctxt appended, which when queried just returns the same object. #Mastodon not surprisingly doesn't send one at all.
What I'm trying to get as is it doesn't seem there is one property I can rely on, so I may just have to create my own contexts as I go.
@leroy@multiverseofbadness yeah the idea is there'd be two-way communication between the local #nodebb instance and the #socialweb. Any less and it wouldn't be what I envision for my implementation 🙂
Also thanks for the kind words about the design. It took up much of our time and was released last year for our v3 of NodeBB... which is also when I discovered #Mastodon 😁
Does there exist a brief write-up of how content is federated out? Do different #ActivityPub implementors federate content differently? (@stesnac suggests so!)
Here's my head-canon at present... when a note is created, the note is sent to all followers. If users are mentioned, the note is also sent to those users' inboxes.
If a note is addressed to the public collection, do it just get blasted to all known instances' inboxes?
"Meta's fediverses", federating with Meta to allow communications, potentially using services from Meta such as automated moderation or ad targeting, and potentially harvesting data on Meta's behalf.
"free fediverses" that reject Meta – and surveillance capitalism more generally
The free fediverses have a lot of advantages over Meta and Meta's fediverses, some of which will be very hard to counter, and clearly have enough critical mass that they'll be just fine.
Here's a set of strategies for the free fediverses to provide a viable alternative to surveillance capitalism. They build on the strengths of today's fediverse at its best – including natural advantages the free fediverses have that Threads and Meta's fediverses will having a very hard time countering – but also are hopefully candid about weaknesses that need to be addressed. It's a long list, so I'll be spreading out over multiple posts; this post currently goes into detail on the first two.
Opposition to Meta and surveillance capitalism is an appealing position. Highlight it!
Focus on consent (including consent-based federation), privacy, and safety
Emphasize "networked communities"
Support concentric federations of instances and communities
Consider "transitively defederating" Meta's fediverses (as well as defederating Threads)
Consider working with people and instances in Meta's fediverses (and Bluesky, Dreamwidth, and other social networks) whose goals and values align with the free fediverses'
Build a sustainable ecosystem
Prepare for Meta's (and their allies') attempts to paint the free fediverses in a bad light
Reduce the dependency on Mastodon
Prioritize accessibility, which is a huge opportunity
Commit to anti-fascist, anti-racist, anti-colonial, and pro-LGBTQIA2S+ principles, policies, practices, and norms for the free fediverses
Would I be a bad #ActivityPub implementor if I don't maintain a "feed"?
If a post is created, NodeBB would send the Create activity to all of the author's followers, and that post would be displayed on that app, usually in the form of a feed.
On the other hand, if other apps send Creates to me, I can save them, but there's no place to display them organically within the existing forum structure 🤔 — since they're not part of an existing topic/category/etc...
@steve@mariusor am I reading this right, that if you didn't happen to already be around to receive the Create activity from a Mastodon instance, you're SOL and you'll never be able to retrieve it (at least within the bounds of the #ActivityPub spec)?! That's ... a choice, I suppose.
As for intent in the original toot, I am referring to S2S implementation. #NodeBB will definitely have an S2S inbox endpoint.
I'm looking forward to talking more about #NodeBB and #ActivityPub integration on here again, been distracted lately with other technical debt items — and of course — work to put food on the table 😄
Not going to lie, one of the support services is "mentoring on community building". You'd think the co-founder of a COMMUNITY BULLETIN BOARD SOFTWARE would be aces at building community, but truthfully, I really suck at it.
The fact that "build it and they will come" worked at all is miraculous.
@thisismissem@NGIZero I've been passively noting that you've been working on trust & safety in the #fediverse, is that right? Definitely something we'll want to discuss sooner rather than later — bridging #NodeBB's built-in moderation tools with fediverse standards would be a win for us all.
I've said it before and will say it again, that the #NodeBB team for the past ten years has been graced with a huge amount of luck. With the right people just happening to come along at the right time, to clients taking a chance on a trio of literal nobodies, etc.
That kind of luck doesn't last forever, and so I'm very excited to work with the @NGIZero to really supercharge our #DevRel
@aral ha! As with all abominations sometimes there are places they can be helpful?
I was building out additive permissions in #nodebb when I needed to communicate to the end user that even though a specific privilege was not checked, that in reality, though the additive nature, it may as well have been. (e.g. a particular user group may not have the privilege to post new topics, but if the global registered users group does, then all other groups do too). An indeterminate checkbox was perfect 🤷♂️
If you look at Wikipedia's list of forum software, it's all ancient except discourse, and discourse seems unlikely to ever be something great for users
Its performance is famously terrible. People often point out how unusable it is unless you have a fast phone and the founder's response to this has been to rant about how Qualcomm sucks and need to make faster processors
@jernej__s@danluu hey, I can provide some context for that. In 2014 or 2015 maybe, we wrote an article for #NodeBB on #Wikipedia, and it got AfD'd for being non-notable. Subsequent attempts to reintroduce the article were immediately deleted, and doing it the "right way" (aka, submitting a draft for review) went unanswered.
Overzealous editors have their fiefdoms and the "list of forum software" is one. No article = no entry, and when we make one we get shut down.
When seeking support or sharing feedback about software/website, which platform would you prefer to use? Please share your reasons in the replies (if you wish).
Still looking for responses to this one! Also I should've probably included hashtags, however I can't edit the post because that'll reset votes. I don't remember if hashtags work for replies, but probably worth a try: #Survey#Poll#Discourse#NodeBB#GitHub#Discord#Forums.
As it turns out, a lot of #ActivityPub verbs and objects correspond quite nicely with #nodebb verbs and objects (e.g. a like would be an upvote, etc.)
However I'm not exactly sure how the "announce" verb would translate. In #Mastodon, "announce" is a "boost". The closest forum-land equivalent would be the "bump", whereby a topic is brought back to the top of the list (usually through a reply).
Only downside, bumps are reserved for admins. Non-admins "bump" a topic by replying to it.
@leroy hmm... that's something I haven't thought about yet, but because now we're talking about how #NodeBB would handle it locally, the options are wide open.
Could be that when shared to the local hierarchy, it is placed at the top of the topic listing (as expected), but further shares/boosts don't adjust its positioning.