Support ActivityPub

Consider implementing ActivityPub, so people from the Fediverse can interact with the site and decentralization is baked in.

This would hugely increase the user base and lower the entry barrier, when people using Mastodon, Pleroma (more useful since it allows for longer posts) and Plume (blog like software allowing for question / answer posts) can contribute without setting up an account.

This would of course involve some filtering what to show and what to hide to make sure that only relevant content is shown on the site, but it would greatly improve the independence of the site and make sure it does not depend on a single organization.

What do you mean by contributing without setting up an account?

The general concept of Codidact requires a user for posting (e.g. asking, answering, blogging, whatever we come up with).

2 Likes

While Codidact will support OAuth and Open Graph (possibly post-MVP) I don’t think this would really fit the model or vision of the project. Community moderation isn’t really possible if the content is distributed across servers the moderators can’t control.

ActivityPub is a established protocol for federated systems, that want to be compatible to each other. The overall result is called the Fediverse.

Each individual software can be seen as a clone, e.g., of Wordpress, Twitter, Facebook, Instagram, Youtube. The magic behind ActivityPub is, that they all work together. You can use your Mastodon (Twitter clone) account to comment under a picture posted on pixelfed (instagram clone) and read Plume (Blog) posts in your friendica (Facebook clone) timeline.

There is already a reddit clone (Prismo) that could be a starting point for something like a StackOverflow clone.

Not needed an account then means, that you can post your Question on Codidact and share it on your Plume and someone can answer it from friendica.

If you want so, there are accounts. Just like there are accounts when you e-mail someone. But you still do not need to sign up with his e-mail provider, but you just send your message and your handle includes the e-mail provider domain as namespace for your nickname.

This would for example mean, that @user@some.mastodon.instance would appear as the user posting the question and @somebody@plume.instance may be the name over an answer posted to the question.

While Codidact will support OAuth and Open Graph (possibly post-MVP)

These are login methods. ActivityPub is about exchanging content in a decentralized (federated) system.

Community moderation isn’t really possible if the content is distributed across servers the moderators can’t control.

Most of the Fediverse softwares have moderation functions.

1 Like

Open Graph has nothing to do with accounts or logging in.

If there are alternatives to OAuth for “loginless” accounts I’m sure they could be considered. But I expect that the actual Q&A posts will need to be centralised.

What’s does it mean for an answer to be posted from another site? Do you mean it would get sent back to the central Codidact site? Or is it just like sharing a stack Overflow link to reddit and commenting on reddit?

That sounds like controlling quality will be nearly impossible. Th txt spk qlty ppl r ok wit sumplaz elz would be absolutely a no-go on a more serious platform, like a Q&A site that is also trying to build a knowledge base.

1 Like

I suggest to have a look at ActivityPub and systems that already implement it and moderate local and remote content. I currently do not have the time to go into full details if you are not interested anyway

I just saw the discussions on SE about the motivations to build something as independent as possible and thought you should have a look into something that is already established to build federated systems that exchange structured content with relations like in-reply-to and votes.

I just thought at the moment most people here are open to think about something else than building yet another silo like SE has become.
If you are interested in looking into it, I would like to discuss it and think about how it could be extended for a SO-like site, but when you do not want it then I will not invest a lot of work trying to convince you why this could be a good idea.

Well, I think we are interested, but there are some obvious obstacles that crop up from our perspective that would be show-stoppers if there was no way around. That’s precisely where a knowledgeable advocate can help, by explaining, at a high level, the general way to work around the obstacles. At that point it becomes worthwhile to seriously investigate in detail. Otherwise, it’s hard to tell the difference between a protocol that’s clearly not designed for our use case, and one that’s non-obviously suitable with sufficient understanding.

3 Likes

Okay, I will try to present the idea in more details in the next days.
I am no expert in the protocol itself, but I know the aspects of the overall system and could imagine that there may be potential to make a more open site and lower the entry barrier for a lot of people, who are already on the fediverse.

The aspect I would like, and why I got the idea, is that it would allow you to basically publish your knowledge in your own blog under your control and without somebody you need to rely on, but it could still interact with the site and be presented in the QA format and with additional features there.

What needs to be addressed is, that the QA format works different from the typical timeline based media, but on the other hand is the SO similar to a timeline in some way.

Well there are question objects modeled in the Activity Pub Vocabulary so there’s some preparation in the protocol. There’s also rejecting activities which questions are, so some automated curation wouldn’t be protocol breaking.

The authorization & authentication part of the W3C is not very encouraging though. The most unfortunate thing however is, that there doesn’t really seem to be any “question minded” implementer out there whose activity pub we would likely want. (https://activitypub.rocks/implementation-report/)

Seems to me that this would be worth looking into at the very least. It’s not an MVP feature, but could come in the early 1.x versions if we think it’s useful to what we want to do.

2 Likes

It is definitely no MVP feature, but something to keep in mind in the database design. For the MVP things like a good interface are more important.

Sending out questions and answers would probably be no problem, so it would at least allow people to follow users on codidact and maybe answers to questions. This would be a bit like pushing notifications to a chat bot, but with more flexible following/unfollowing. Comments are also an easy target, they would just be created for replies to questions and answers.

The hard part is allowing questions and answers from outside and modeling edits. Implementations like Mastodon only implement a delete&redraft feature, that does not preserve likes and breaks threads.

Allowing answers from outside would probably not be such a problem. StackOverflow allows to answer using a nickname and e-mail address and it seems to work for them. A Fediverse handle is even a bit more an unique identifier than entering some mail address when posting an answer.

Moderation other than deletion could be a challenge as well.

To be honest, I do not want to allow answers from outside. Each community will have its own rules, policies, and conventions, help pages, etc. I think it will be important for questions to be read and answered at their home site, to give those questions their context in the site’s community. Even if federated/distributed Q&A could work, implementing such a protocol would invite answers from people ignorant of the community’s expectations, and who would reasonably say they had no way to know about those expectations because the question wasn’t read in its original context. By all means share questions on any network (through Open Graph or something else) and have comments etc all you like in any place, but answers should be made at the community’s own home instance.

7 Likes

I think the feature that could be implemented without problems and be useful would be publishing content.

One of the git systems (gitlab?) wanted to support ActivityPub so you can follow projects and see commits and issues in your timeline. Such a write-only implementation would allow you to follow a question or tag with your favourite fediverse client and share it to other users.

Other features like accepting comments or maybe linking Fediverse posts similar to pingbacks in blogs can then be considered later.

The interesting point about the ActivityPub support is in my opinion to allow content to be distributed to other platforms, so it is still available, e.g., when the site is gone for some reason.

I still think it could be useful to import posts, so you could for example publish your answer in your (ActivityPub supporting) blog for your blog readers, but it gets linked below the question on Codidact.
This way it is clearly your content on your platform, but you distribute it to a platform that allows better sorting, voting, links it to the question it answers and so on.

To combine this with moderation and ToS, importing the post under the question could be restricted to users that linked their Fediverse account with a Codidact account. Think of it similar to login with OpenID, but with an option to publish content by pushing it via an ActivityPub API.