Comments (16)
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.
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.
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.
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.
@all-contributors please add @wakest for ideas
from librelingo.
@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.
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.
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.
@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.
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.
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.
@all-contributors please add @swift2plunder for ideas
from librelingo.
I've put up a pull request to add @swift2plunder! 🎉
from librelingo.
I've put up a pull request to add @wakest! 🎉
from librelingo.
Heads up, as this is on the agenda of the next SocialCG meeting.
from librelingo.
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)
- Long Input Challenges
- Add a security policy
- "poetry install" for librelingo_json_export fails due to cython attribute error HOT 4
- Broken link in Readme HOT 1
- Exporting courses fails: "not of type 'array'" HOT 7
- Why is the course template licensed under a noncommercial license? HOT 2
- Web app sign up doesn't work and return server error HOT 2
- https://github.com/LibreLingo/LibreLingo#donate refers to defunct GitHub sponsors HOT 2
- Add .pre-commit-config.yaml and use pre-commit to run the various linters, formatters, and checks HOT 1
- Errors in external courses break the build process HOT 1
- Web SSO Options HOT 1
- docker latest image error HOT 3
- `pip install librelingo-yaml-loader` Getting requirements to build wheel did not run successfully HOT 4
- Rusyn language for Serbian speakers HOT 1
- [Feature Request] Support module, skill, and phrase comments HOT 1
- [Improvement suggestion] Use pydantic to load models from YAML HOT 2
- CORS settings on the webapp are blocking signup HOT 2
- Remove Mandatory Definition for words HOT 1
- Clarifying contributing guidelines in documentation and README.md
- Extra Whitespace in Input Causes Incorrect Answer HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from librelingo.