-
Notifications
You must be signed in to change notification settings - Fork 1
Add some comments as a review. #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -17,9 +17,9 @@ _Well, now, as i'm writing this, i've [submitted](https://lov.linkeddata.es/data | |
|
|
||
| I can offer people a place to stay. But how do they ever find me? At the moment, our data live in different places, and we have no way to find each other. Internet is a vast place... | ||
|
|
||
| ### 1. Crawl | ||
| ### 1. Crawl a network of friends of a friends | ||
|
|
||
| Well, people can look at their friends, and friends of friends, and friends of friends of friends, and so on, and see if somebody offers a place to stay; and where it is. | ||
| Well, people can ask (look at the profile of) their friends, and friends of friends, and friends of friends of friends, and so on, and see if somebody offers a place to stay; and where it is. | ||
|
Owner
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I thought it would be nice to make it a bit more general in a way that in real/physical/offline world people would ask their friends and this is what the program "models" but I don't insist. |
||
| This would only work if the network of friends is dense and well established. But if i'm new to the network, or if somebody is new, they won't find me that way. | ||
|
|
||
| We could use a network of hospex contacts (To Be Done) to perform the same search. | ||
|
|
@@ -28,13 +28,19 @@ We could use a network of hospex contacts (To Be Done) to perform the same searc | |
|
|
||
| - We host people in our friends network, so we can feel safer with them | ||
| - We don't need any additional search system | ||
| - No centralized infrastructure that could be compromised at a risk of whole communities being lost | ||
|
|
||
| #### Disadvantages | ||
|
|
||
| - New people can't find others, and others can't find them | ||
| - Networks may be disjoint (i.e. two or more disconnected groups), and therefore not know about each other, essentially making separate communities | ||
| - Offers have to be public. Currently Solid doesn't have any mechanism to give permissions to friends of friends of friends of friends, and nobody else. (We could make a crawler that collects these "foafoafoafs" to a single group, and give permissions to that group.) | ||
| - We don't have any notion of a Community (e.g. cyclists, hitchhikers, ...) - like [different](https://welcometomygarden.org/) [hospex](https://www.bewelcome.org/) [communities](https://www.facebook.com/groups/hostasister/), or different [Trustroots Circles](https://www.trustroots.org/circles) | ||
| - Offers have to be public. Currently, Solid doesn't have any mechanism to give permissions to friends of friends of friends of friends, and nobody else. (We could make a crawler that for each user collects these "foafoafoafs" to a single group, traversing the graph to certain depth, and give permissions to that group (or rather request members of that group to give permission to read their data).) | ||
| - We don't have any notion of a Community (e.g. cyclists, hitchhikers, ...) - like [different](https://welcometomygarden.org/) [hospex](https://www.bewelcome.org/) [communities](https://www.facebook.com/groups/hostasister/), or different [Trustroots Circles](https://www.trustroots.org/circles) (could be done with "tags" stored in a profile) | ||
| - Search by location would require prior fetch and scan of a whole network of foafoafoafs, that would take waaaaaaay to long to be usable (scalability and app responsiveness issues) unless we cache that data locally but then it can get stale, needs refreshments, ... gets a bit complicated. A cache could be structured as a geospecial index though, specifically created for each user from their own network. That might be not that bad idea, actually. | ||
| - There is no common space to broadcast messages (invitations to stay or requests to be hosted), unless we had a wall of messages from foafoafoafs, stored locally and refreshed similarly as messages in SSB? | ||
|
Owner
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think this already assumes an architecture: That we don't send messages to others directly, but put them on a wall for others to discover? I think this, also with comparing to SSB, makes it a bit complicated. I'd keep it for future reference, but prefer not to include for now, for simplicity and clarity. Definitely makes sense to include when we'll start discussing messaging architecture (future) |
||
|
|
||
| #### Other characteristics | ||
|
|
||
| - Networks may be disjoint (i.e. two or more disconnected groups), and therefore not know about each other, essentially making separate communities. Depending on the context, this can be desired or not. | ||
|
|
||
| ### 2. Make a place to discover each other | ||
|
|
||
|
|
@@ -45,28 +51,27 @@ Improvement #2.1: Make the group members searchable by location, creating a geo | |
| #### Advantages: | ||
| - People who previously didn't know each other can find each other | ||
| - Solid has a way of sharing permissions with groups of people - our data don't have to be public - we only share our offers with members of our community or communities (well, ehm, we'll see about that in a moment...) | ||
| - Belonging to something bigger then a single individual is, like a community, can be a source of an identity (in human, offline sense) | ||
|
|
||
| #### Disadvantages: | ||
| - Centralized solution, a single point of failure, a single point of control | ||
| - Centralized solution for a community, a single point of failure, a single point of control. However: | ||
| - if there were many independent communities like this (run on different servers by different people), and everyone was a member of a few, it becomes more decentralized. | ||
| - a group could be replicated, and an index could be distributed over a few nodes, with some redundancy. | ||
| - If we don't make _Improvement #2.1_, we have to fetch all members' offers in order to find hosts in the area we travel to | ||
|
|
||
|
|
||
| ### 3. Make a distributed way to discover each other (Distributed Hash Tables) | ||
| [comment]: <> (### 3. Make a distributed way to discover each other (Distributed Hash Tables)) | ||
|
|
||
| I don't know what i'm talking about... just using some trendy words here. Only in most vague and foggy way can i imagine how this would function | ||
| [comment]: <> (I don't think it would work actually. | ||
| It is possible to have an index distributed over a few nodes, that could be queried by location. | ||
| It is also possible to have a key-value store distributed over a few nodes, implemented as a distributed hash table, it would be queried by keys, not sure what they might be. | ||
| I suggest removing this point alltogether. ) | ||
|
|
||
| Somehow, everybody would host a part of the group/network/index on their own Solid Pod, and somehow, magically, people could find each other that way | ||
|
|
||
| #### Advantages | ||
| - distributed system, no central point of failure | ||
|
|
||
| #### Disadvantages | ||
| - complicated, hard to understand | ||
| - no clear way to manage permissions (do data have to be public again?) | ||
| ### (both solutions can coexist next to each other) | ||
|
|
||
| --- | ||
|
|
||
| These are all valid options. For starters we went for the middle option - making a centralized group to discover each other | ||
| These are all valid options. For starters we went for the latter option - making a centralized group to discover each other | ||
|
|
||
|
|
||
| ## How to make a group | ||
|
|
@@ -114,9 +119,11 @@ We want to: | |
|
|
||
| 1. Make a public group | ||
| 1. See if we can authorize the group members to access a resource | ||
| 1. See if others who are not a member of a group can see us but not a resources | ||
| 1. Make the group private - self-referencing (The group can be viewed by members of itself) | ||
| 1. See if we can see other members of a group | ||
| 1. See if we can authorize the group members to access a resource | ||
| 1. See if others who are not a member of a group can not see us or a resources | ||
|
|
||
| Because ideally, the group members are visible only to each other, and can share their hosting offers only with each other. | ||
|
|
||
|
|
@@ -137,6 +144,10 @@ Basically, at this point, the options are two: | |
| 1. Everybody in the internet can see the list of hospitality exchange members | ||
| 2. Group is private, but the people's hospex data are public. ([this doesn't work if the group is hosted on CSS](https://github.com/CommunitySolidServer/CommunitySolidServer/issues/1442)) | ||
|
|
||
| [comment]: <> (What if we had a functional webId for each hospex community, and we created a public Solid Group that included them and authorized only members of this group to see people's hospex data? Each community would have a separate app/webpage, with their own webId. Only app would be authorized to access hospex data of members of the community it serves. The members directly or other apps/communities would not be authorized to read that data. | ||
|
Owner
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Interesting, let's discuss this further! I don't fully grasp: so all the hospex data would get proxied through the community? E.g. community would fetch the data (because it has the permission to read) and then it would pass the data further to the end user?
Owner
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I like a lot the idea that an organization could have its own id. Possibly How we could and wanted to use this id, that's for further discussion - i haven't properly thought through the possibilities....
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
yup, exactly. Basically, we'd add a layer of indirection into who is authorized to access the data. A user would not access it directly but rather the app would do it for them. This gives also more flexibility to what the app does with the data, could for example display a map with hosts before a person is logged in. I'll try to watch the video tomorrow morning. |
||
| Trust between communities could be established by granting or revoking access to resources of one community for the webId corresponding to the other community | ||
| Only the apps could write to hospex.ttl files and they could enforce and validate expected file format for the offers that belong to them, a format that would be specific to them and they would have freedom to change and maintain it) | ||
|
|
||
| We chose the second option to start. But it's a difficult choice, two suboptimal options... | ||
|
|
||
| ### Finally, making it | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -26,6 +26,9 @@ I think [Solid](https://solidproject.org/) is an interesting idea. But it suffer | |
|
|
||
| I don't care for the inception ideas. I don't care for authority in Solid. I don't care for your new Specification. I want it to work. | ||
|
|
||
| [comment]: <> (I don't care for your new Specification) | ||
| [comment]: <> (it's unclear to me who is "your" here. Maybe adding a link under "Specialization" will help, or changing "your" to somthing more specific?) | ||
|
Owner
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ok. So apparently this is not written clearly. I speak about Specs (i.e. RFCs) that academic-minded people like to produce, before having the proof of concept. Example of spec-focused vs lets-make-it-work-focused spec is XML vs JSON as data exchange format (not in our context, though), or as Aaron Swartz wrote in Intro to Programmable web:
Perhaps we could add link to the efforts of solid interoperability panel... :) Not sure if it's offensive to point fingers, though...
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ah, yea. I like to say that for me standards should emerge from many tested solutions to a problem as the ones that get used and adapted most often and hence they become standard(s), rather than something being enforced as a standard. Clearly top-down vs bottom-up approach to problem solving.
I think you could add a link. |
||
|
|
||
| For me, Solid is: | ||
|
|
||
| 1. an identity provider | ||
|
|
@@ -35,6 +38,11 @@ As I said, i want to develop great real-social applications. Applications that c | |
|
|
||
| One well explored, and popular use case is Hospitality Exchange. It's pretty clear what the system should do. | ||
|
|
||
| [comment]: <> (would be great if you mentioned somewhere here, here-here or elswhere on this page, how your collaboration with me or/and OHN started, what OHN is about and how it fits together with Your agenda. Maybe also a few words about sleepy.bike, who is it for and where it comes from? I'll be happy to discuss or draft parts of this if it was helpful.) | ||
|
Owner
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Great. Definitely, let's include. If you have some text, or could draft some, that could be helpful. We could even make a shorter comment here and link it to a longer text with its own separate page. :) |
||
|
|
||
| [comment]: <> (I would describe OHN as an effort to design and build next generation hospitality exchange platform. One that would be federated (decentralized and interconnected\) in order to address issues and the long-term consequances many hospex communities have faced over the years of existance and which we believe are related to centralized infrastructure they've been built on. | ||
| Or something along these lines.) | ||
|
|
||
| So, let's focus on Hospitality Exchange for now. | ||
|
|
||
| ## What is it supposed to do? | ||
|
|
@@ -45,29 +53,37 @@ In the simplest case: | |
|
|
||
| 0. Sign in | ||
| 0. Write a little bit about yourself | ||
| 0. See a map of people who offer to host travellers | ||
| 0. Open a profile of, and read about a few potential hosts, their references from other travellers, ..., get impression that you'd be reasonably safe with them | ||
| 0. See a map of people who would like to host fellow travellers | ||
|
|
||
| [comment]: <> (I like also a phrasing "people who invite fellow travellers to stay at theirs home/place". For me "people who offer to host sb" seems somehow very transactional, like the verb "to offer" implided that ones gets something in return. And I know usually they do, but I feel like it's better not to expect that. | ||
| Maybe it's that the word "offer" has sales connection to me, where things are exchanged for money in a trasactional way) | ||
| 0. Open a profile of, and read about a few potential hosts, what they write about themselves and what other travellers wrote about staying with them, ..., get impression that you'll have good time together and maybe that you'd be reasonably safe with them | ||
|
|
||
| [comment]: <> (personally I don't consider safety as something to think actively about, I follow my intuition and unless something awakens my inner sense of danger-detection I just go for it. My default is to trust people I'd say. I am writing it because I wouldn't mention safety-verification here, but I don't know how others have. Just to consider removing it.) | ||
| 0. Contact the potential hosts | ||
| 0. Wait for their reply | ||
| 0. When they reply, receive a notification | ||
| 0. When they reply, get a notification | ||
| 0. They can host you! | ||
| 0. Confirm | ||
| 0. Enjoy the new real world connection, enjoy the stay | ||
| 0. Enjoy the new real world connection, enjoy the time you spend together and the place, get some recommendations from a local where to go and what to do | ||
| 0. After the stay, write a reference for them, and establish a friendship connection | ||
|
|
||
| Now, you have a home, you want to host travellers in your home: | ||
|
|
||
| 0. Sign in | ||
| 0. Write a little bit about yourself | ||
| 0. Write about your home: Approximate location, and say that you can host people | ||
| 0. Write about your home: approximate location, and say that you can host people | ||
| 0. Wait for travellers to write to you | ||
| 0. Somebody wrote! You received a notification. | ||
| 0. Read a message from them, read about them, check their references ... get intuition that you'd be reasonably safe with them in your home | ||
| 0. Read a message from them, read about them, maybe check experiences other hosts described having with them... and get excited about new people you're going to meet! | ||
| 0. Invite them | ||
| 0. They confirm | ||
| 0. Enjoy the new real world connection, enjoy their stay | ||
| 0. After their stay, write a reference for them, and establish a friendship connection | ||
|
|
||
| [comment]: <> (just as a side note: referrences are not a mandotory component, in WarmShowers they were hardly used, other platform may have different trust systems for example based on existing connections or profiles in other social networks. | ||
| In Trustroots 'references' are called 'experiences' which I also personally prefer as 'references' seem to me a bit formal and like it was Linked-in or similar network. I belive the phrase 'references' comes from CouchSurfing but I never used it so idk) | ||
|
|
||
| --- | ||
|
|
||
| In a more complex feature: | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Definitely!