Giter Club home page Giter Club logo

Comments (16)

kantord avatar kantord commented on July 22, 2024 8

This is definitely an idea that I would like to experiment with.

There's 2 things I would like to emphasize:

  • LibreLingo should be safe for everyone, even small children for example. Social features should focus on things that don't need to be moderated and don't give a platform for cyber-bullying.
  • I want LibreLingo to be very future-proof, so I'd try to avoid adding features that would require server infrastructure to be maintained, or things that depend on 3rd party things. It will probably not be possible to avoid that completely, but it is still something to think about.

With those things in mind, I'm very open to discussing any specific ideas about how the social features would look!

from librelingo.

swift2plunder avatar swift2plunder commented on July 22, 2024 2

Moodle (courseware) is currently testing federation. Moodle and CommonsPub use GraphQL for their client to server protocol and federate using ActivityPub

Servers offering ActivityPub C2S include NextCloud and Pleroma. I'm looking at writing a C2S client library just so JavaScript developers can find one on github, but it's scarcely necessary

AP is just a JSON envelope. It isn't complicated to implement for a client with a specific purpose. It's reputation for being maddeningly difficult comes from trying to generalize an implementation and from poor findability of coherent implementation guidance. I'm working on the guidance 😎

from librelingo.

decentral1se avatar decentral1se commented on July 22, 2024 2

Related: #416.

Also, I guess, it is worth noting that projects like https://little-boxes.readthedocs.io give you the shell of what you need to communicate with the protocol and leave the back-end to you. That might be an approach to get something on the fedi to start with without having to implement the full stack. I guess you'd just plug your data model in and expose the end-points.

from librelingo.

swift2plunder avatar swift2plunder commented on July 22, 2024 1

The shortest path to sharing courseware would probably be to leverage an existing open source courseware server. There is a courseware server, based on a fork of Pleroma that (last I checked) had federation on its roadmap. I need to fact check myself on the status of federation in that project, but if you're open to leveraging an existing server application for the backend, I'll verify the details and help with the client protocol

from librelingo.

kantord avatar kantord commented on July 22, 2024 1

@all-contributors please add @wakest for ideas

from librelingo.

sebilasse avatar sebilasse commented on July 22, 2024 1

@redaktor is interested in helping. Talked to @wakest via ActivityPub before ;) :
What we would like to achieve is a safe collaborative translation UI.
I'd like to answer your two bullet points directly

LibreLingo should be safe for everyone, even small children for example. Social features should focus on things that don't need to be moderated and don't give a platform for cyber-bullying.

I think "safe for everyone" is the same for the ActivityPub projects which would help.
It should be pluggable and configurable.
That means the users should hand out keys just to the users they trust.
So I encourage to read https://gitlab.com/spritely/ocappub - it would be a journey.
However : I agree that this point is a MUST.

I want LibreLingo to be very future-proof, so I'd try to avoid adding features that would require server infrastructure to be maintained, or things that depend on 3rd party things. It will probably not be possible to avoid that completely, but it is still something to think about.

This is exactly how ActivityPub was initially thought and it requires to use the Client2Server portion of the spec.
You have a thin, generic ActivityPub server.
As long as it follows the specifications ActivityPub, ActivityStreams, ActivityStreams Vocabulary we only need to define some special LD things and then it would be a client-only thing.
And here we could simply start with a UI wich understands ActivityPub objects.

from librelingo.

swift2plunder avatar swift2plunder commented on July 22, 2024 1

First, nothing is safer than offline. As a homeschooling parent, there have been times in my child's life when that was very important to our family. We can definitely keep CouchDB as the local datastore and make replication over the internet optional, preserving that desirable feature. The moderation profile of the Fediverse provides a lot of latitude for expression on connected services and complete autonomy of services with regard to moderation. So the contents of the global feed is entirely in the hands of the local moderation team. Moderation policy is the main point of differentiating servers, and several options for self hosting are available. I would add that the additional complexity of creating an account on a distributed service would be a compelling reason to preserve an account-free onboarding workflow

ActivityPub is a w3g recommendation that extends ActivityStreams 2.0 with CRUD semantics, the actor model, and several other standard collections for profiles. It also establishes a pattern of using JSON-LD to provide those features to any semantic vocabulary. One characteristic of the protocol over the network is that extensions are treated as a black box by intermediaries, so unknown extensions are transmitted without being altered or deleted. So LibreLinguo, as an ActivityPub client, should be able to connect to Pleroma or another ActivityPub server offering AP C2S and use it as remote store to save a backup of progress and optionally to federate social or gamification features. The client could be perfectly functional even in a moderation free COPPA compliant mode where no free text from the network is rendered in the UI, if desired.

The extent of collaboration with server developers required for the client to "just work" is that the AP C2S must be offered and enabled on the target server and the client must be able to acquire permissions to create the collections and other objects required by the application, which may also involve creating an OAuth2 scope

By leveraging a w3c specification used on multiple servers (though not the more popular ones, for historical reasons) you fully externalize the maintenance of server infrastructure without being dependant on any one project or vulnerable to development churn. Moreover, object capabilities and other security policies would be administered at the server level

So that leg work I promised... I'll start in tonight

from librelingo.

aschrijver avatar aschrijver commented on July 22, 2024 1

Looks like there is a lot of interest for ActivityPub support. Is there any chance that this becomes part of the roadmap? Are contributors wanted/required for this (I can do a shout out on Humane Tech Community channels)?

from librelingo.

kantord avatar kantord commented on July 22, 2024 1

@aschrijver based on the little I know about ActivityPub, I really like the idea! My biggest priority right now is the course editor, but it could definitely become part of the roadmap. Also, you are free to submit PRs any time :-)

I know very little about ActivityPub, so I'm not completely aware of how this would work. I think what we'd need:

  • A rough outline of the technical implementation
  • A rough design of the simplest ActivityPub-based features users would find useful and enjoy
  • Assessment of any hosting extra costs or regular duties/responsibilities

Based on such information I can give you feedback on whether there are any feasibility issues we need to solve, and also give you feedback on how I can help with it.

Does that make sense?

Are contributors wanted/required for this (I can do a shout out on Humane Tech Community channels)?

Definitely!

from librelingo.

aschrijver avatar aschrijver commented on July 22, 2024 1

Thanks for the info (just sent this toot). And adding pointers to Guide for new AP implementeres on SocialHub, and Feneas AP watchlist and AP developer watchlist.

from librelingo.

stale avatar stale commented on July 22, 2024 1

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

from librelingo.

kantord avatar kantord commented on July 22, 2024

@all-contributors please add @swift2plunder for ideas

from librelingo.

allcontributors avatar allcontributors commented on July 22, 2024

@kantord

I've put up a pull request to add @swift2plunder! 🎉

from librelingo.

allcontributors avatar allcontributors commented on July 22, 2024

@kantord

I've put up a pull request to add @wakest! 🎉

from librelingo.

aschrijver avatar aschrijver commented on July 22, 2024

Heads up, as this is on the agenda of the next SocialCG meeting.

from librelingo.

stale avatar stale commented on July 22, 2024

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

from librelingo.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.