Solid Groups App


#1

Hi,

I started developing an App to create groups in Solid. The main idea is to have something like Facebook groups on the distributed Web. The groups should allow people with common interests to find each other.

A Demo installation can be found here:

https://solid-groups.solid.community/

But it can’t do anything yet, I am primarily working on being able to set up a group initially. The goal is, that anyone can just click a button to deploy the App on her own Pod or a group Pod and the app will then set up a group on that Pod. So app and data will reside on the same pod and groups can spread arround the Web.

The source code is on GitLab: https://gitlab.com/angelo-v/solid-groups


Discussion: Solid vs. ActivityPub
#2

What do you think of the following models using activity streams for join requests / proposals sent to group inbox?

Someone asks to join a group:

@prefix :      <#> .
@prefix as:    <https://www.w3.org/ns/activitystreams#> .
@prefix c:     </profile/card#> .
@prefix group: </groups/main#> .

:it
    a as:Offer ;
    as:actor c:me ;
    as:object :join ;
    as:summary "Angelo asks to join the group" ;
    as:target group:we .

:join
    as:actor c:me ;
    as:object group:we ;
    as:summary "Angelo joins group" ;
    as:type as:Join .

Someone proposes to add someone else to a group:

@prefix :      <#> .
@prefix as:    <https://www.w3.org/ns/activitystreams#> .
@prefix c:     </profile/card#> .
@prefix jane:     <https://jane.example/profile/card#> .
@prefix group: </groups/main#> .

:it
    a as:Offer ;
    as:actor c:me ;
    as:object :join ;
    as:summary "Angelo suggests, that Jane joins the group" ;
    as:target group:we .

:join
    as:actor jane:me ;
    as:object group:we ;
    as:summary "Jane joins group" ;
    as:type as:Join .

#3

Just a heads up: Tomorrow is the ActivityPub SocialCG meetup, and both Groups (in AP) and AP vs. Solid are agenda items. See:


#4

Nice!
For more formal groups, I’m thinking you might have something like

:how
a as:Question ;
as:actor c:me ;
as:object :join ;
as:summary “Angelo asks how to join the group?” ;
as:target group:we .

:apply
a as:Announce ;
as:actor group:we ;
as:object :application ;
as:summary “Group says here is the application” ;
as:target c:me .

:application
a as:Object ;
as:generator group:we ;
as:audience c:me ;
as:attachment: </groups/main#application> ;
as:summary “Application to join group” .


#5

This would allow to discover how to join groups? Interesting. But several steps ahead of what I am trying to achieve right now.

But could be interesting to discover wheter a group is open to join for everybody or one needs to send a join request


#6

Then substitute (?)

:apply
a as:Announce ;
as:actor group:we ;
as:object <groups/main#openAnnouncement> ;
as:summary "This group is open to anyone” ;
as:target c:me .


#7

You are able to log in now, and request to join the group. Please give it a try at

https://solid-groups.solid.community/

The inbox is openly readable for now, so you can check your request data at:

https://solid-groups.solid.community/groups/inbox/567d00a0-54d2-4977-a0aa-6b8999941bc5/

Any feedback welcome!


#8

Nice I was just asking myself for followers on Agora https://github.com/scenaristeur/agora if I had to ask for request like Instagram or allow automatic followers as Twitter… :+1::blush:


#9

Hello everybody, thanks for testing so far. I implemented join acceptance and you should have a such in your inbox.

A list of group members will soon be added to Solid Groups App, until then the list can be seen at https://solid-groups.solid.community/groups/main#we

Group members are allowed to read the following document, I hope this gives some incentive for more people to test and join :slight_smile: :

https://solid-groups.solid.community/private/welcome.html