You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: practice.md
+20-20Lines changed: 20 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,17 +10,17 @@ In July 2024, we reached out to a handful of developers who have produced end-us
10
10
11
11
---
12
12
13
-
# 1) What's your experience with making Solid apps interoperable? What challenges have you encountered? What possible solutions are you looking for or working on?
13
+
##1) What's your experience with making Solid apps interoperable? What challenges have you encountered? What possible solutions are you looking for or working on?
14
14
15
-
## Timea
15
+
###Timea
16
16
17
17
Making Solid apps interoperable is possible, but you currently need to know how, which I believe is not easy. First, you need to know RDF and about data models/shapes/vocabularies. Then, you need to know about a Solid library in the language you use, or at least an RDF library. After you learn all these, you need to know where to find existing vocabularies if there are any. Then, if you want true interoperability, you need to share yours and properly document it, if you can find the right place…
18
18
19
19
So, while I have no problem with creating the data model myself, I didn't make time to share my vocabularies or shapes because I felt the ecosystem wasn't ready for it anyway.
20
20
21
21
I'm inclined to believe we need education in different specs of Solid in order for developers and data engineers to even want to share data models in the first place.
22
22
23
-
## Tim
23
+
###Tim
24
24
25
25
I have created prototype versions of two apps so far: [PASS](https://github.com/codeforpdx/PASS), a management app for government housing data; and [Solid Calendar](https://github.com/timbot1789/solid-calendar), a personal calendar management app. The main challenges I have encountered are:
26
26
@@ -29,15 +29,15 @@ I have created prototype versions of two apps so far: [PASS](https://github.com/
29
29
30
30
For solutions to this problem, I've experimented with data retrieval via SparQL queries to the Solid server provider. This allows for the creation of more complex data views, and it makes data retrieval far more performant. However, this means my apps are not technically Solid compliant, and I'm not sure how this behaves with access control.
31
31
32
-
## Noel
32
+
###Noel
33
33
34
34
I've made all my apps with interoperability in mind, but in practice I haven't seen others that are interoperable out of the box (maybe [Solidflix](https://github.com/OxfordHCC/solid-media/issues/8) was the closest one). Although I haven't seen many apps tackling the same use case as mine either.
35
35
36
36
One challenge is that the main story for interoperability is not clear, and there's no "official way" to do it. So each developer has to decide what they want to do. There are basically two possibilities now: Type Indexes and Solid Application Interoperability (SAI). Type Indexes is the only one you can use in practice, so it's the way my apps work, but it's still a draft and has some limitations, so I understand why some people don't use it yet. SAI is also still a draft and requires server-side implementation, so even though I'm very excited about it, I don't think I'll use it until it's part of the official spec and supported in most pods.
37
37
38
38
I'm interested in Shapes, but haven't used them yet because I haven't found any practical advantage for my apps. I'm also very interested in RDF reasoning and schema migrations, something like [Cambria](https://www.inkandswitch.com/cambria/) applied to Solid. As far as I know, all the current solutions for interop rely on knowing about some shapes during the implementation: to support new schemas, developers need to update their existing apps; this includes the work going on in solid-data-modules. I think it would be great if we could make apps interoperable after the fact, without requiring an update.
39
39
40
-
## Vincent
40
+
###Vincent
41
41
42
42
> What's your experience with making Solid apps interoperable?
43
43
@@ -62,9 +62,9 @@ I might make an exception for apps that only concern private data that applies t
62
62
63
63
---
64
64
65
-
# 2) Which aspects of app development more broadly do you struggle with? What kinds of tooling could be helpful with that?
65
+
##2) Which aspects of app development more broadly do you struggle with? What kinds of tooling could be helpful with that?
66
66
67
-
## Vincent
67
+
###Vincent
68
68
69
69
It's mostly still just a hassle to lay out all the data the right way in a pod.
70
70
@@ -76,69 +76,69 @@ I'm still toying with the idea of one day writing a validator that allows you to
76
76
77
77
As I tend to focus on web apps, I suppose there's an adoption challenge in getting people to think about them as such, rather than automatically reaching for a phone's app store.
78
78
79
-
## Noel
79
+
###Noel
80
80
81
81
I think I'm missing best practices and final specifications (as opposed to drafts) moreso than tooling. But that might be because I've been building my own tooling, so I'm biased there 😅. I'm missing some alternatives for authentication though, because at the moment Inrupt's library is the only existing solution.
82
82
83
83
If you want to know what I struggle with in App Development the list is endless xD. But to make it short, I'll only mention dependency hell :/. That is, making sure that updating one dependency doesn't break something, finding the compatible versions of two libraries, all the ESM vs CommonJS dilemma, etc. Dependency management in general is a bit of a mess, specially in JavaScript -.-. I think the problem arises from the fragmentation in the JS ecosystem, there are just too many tools and environments: Node, Deno, Bun, Webpack, Vite, Rollup, ESBuild, etc… All of that coupled with the fact that JavaScript is supposed to be backwards compatible, and add TypeScript into the mix, and you've got a big mess 😵. But it seems like most JS devs feel the same way, so I'm definitely not alone :/.
84
84
85
-
## Tim
85
+
###Tim
86
86
87
87
A lot of Solid apps have moved to a design pattern of "load all the data you can from the pod into local memory, make changes locally, then commit all the changes back to the pod." This design pattern has numerous tradeoffs, but if it's the intended design pattern for pods, a framework that handles the data loading and saving for us would make things significantly easier.
88
88
89
-
## Timea
89
+
###Timea
90
90
91
91
For me it's the frontend. I am not a designer to make things looks nice and functional at the same time 😅. And if one wants the RDF capability to make the frontend flexible, to adjust to the data model, well.. that is again difficult even if you know about RDF forms.
92
92
93
93
I know some of my friends are working on 'web components' for exactly this reason.
94
94
95
95
---
96
96
97
-
# 3) What comes to mind when you think about interoperability working well? Can you share any examples or inspirations?
97
+
##3) What comes to mind when you think about interoperability working well? Can you share any examples or inspirations?
98
98
99
-
## Tim
99
+
###Tim
100
100
101
101
To me, interoperability means different apps can access the same data in new, novel ways that fit their use case. A todo app allows you to create calendar events for each todo item without opening your calendar. Emails can be opened with either a traditional "inbox" interface or an IM chat interface. You can message your doctor, and then in the chat, share your medical records with them.
102
102
103
-
## Vincent
103
+
###Vincent
104
104
105
105
I always was a bit sceptical about TimBL's "[Bag of Chips](https://www.w3.org/DesignIssues//BagOfChips.html)" idea: that different applications can look at different subsets of the same data. However, I recently tagged a Mastodon account on a Lemmy post, and then having their reply show up in-thread did feel magical. Likewise, when encountering an interesting post in my Mastodon timeline only to find out that it was a full-fledged blog, with replies shown as comments.
106
106
107
-
## Timea
107
+
###Timea
108
108
109
109
Jackson Morgan's chat app LiquidChat and the one in SolidOS both use the same data.
110
110
111
111
What I would like to see is, for example, fitness data stored on my pod with different fitness apps writing it and displaying it; maybe one app tracks movement well and another is awesome at suggesting improvements based on that data.
112
112
113
-
## Noel
113
+
###Noel
114
114
115
115
To me interoperability should be transparent, where users don't even notice that it's going on. Quite the opposite, an ecosystem with working interoperability would be one where users are surprised if an app is not compatible with others.
116
116
117
117
Some examples are Emails, RSS, the fediverse, webpages (browsers are interoperable), etc…
118
118
119
-
# 4) What potential / ideal / dream Solid interactions or app paradigms would get you excited as a developer? And as a user?
119
+
##4) What potential / ideal / dream Solid interactions or app paradigms would get you excited as a developer? And as a user?
120
120
121
-
## Noel
121
+
###Noel
122
122
123
123
As a developer, something like Cambria for Solid would be awesome. As I said, it would be great if it could work even without changing the code in my app. For example, if users themselves can "install schema translations" (or if that can happen automatically even better). In theory this is all possible with RDF reasoning, but in practice I don't think that's working anywhere.
124
124
125
125
As a user, I would like apps to leverage my pod data to augment the experience. For example, even though a recipe manager's main focus would be to manage recipes, it would be nice to see a list of friends when I'm sharing a recipe, or easily export the ingredients into a TODO list (visible in my Task Manager app), or schedule meals for specific days and see that in my Calendar app, etc… It would also be nice to see "companion apps". For example, I have an app to manage the movies I have watched or will watch. Some companion apps could be a movie recommendation engine, a social network where you see what your friends are watching, etc… There are infinite interesting things you can do with "movies", but if you try to fit everything in a single app it could become cluttered and bloated. With interoperable apps, many applications can work together to give users the experience they want without implementing every possible use case.
126
126
127
127
I've written more of my thoughts around this topic in [Interoperable Serendipity](https://noeldemartin.com/blog/interoperable-serendipity) and [Why Solid?](https://noeldemartin.com/blog/why-solid).
128
128
129
-
## Timea
129
+
###Timea
130
130
131
131
Oh, I'm excited about everything when it comes to Solid so it's hard to choose ☺️ In theory, a developer can focus on creating the best frontend and functionality without bothering to learn databases and backend. Security topics which can be quite heavy should just work out of the box with Solid libraries and the developer shouldn't have to know how to configure it even (I'm thinking about spring security configuration which is not easy).
132
132
133
133
I see advantages for users who care about privacy or supporting local businesses (rather than data monopolies), and there will be more as the ecosystem develops. I want to see an explosion of maximizing the usage and benefit of one's data in every aspect (which is not possible at the moment).
134
134
135
-
## Vincent
135
+
###Vincent
136
136
137
137
I got interested in writing software because I was interested in what it could do for me, such as being able to learn from and keep in touch with people from all over the world, for example. Just the fact that Wikipedia exists is nothing short of amazing, to mention but one thing.
138
138
139
139
So what gets me excited as a developer is what gets me excited as a user. And the primary thing that gets me excited about Solid as a user is being able to have my data collected somewhere under my control, rather than the current status quo where it is scatted across various arbitrary servers, vulnerable to app developers cutting off my access to it any moment. For example, to have my photos somewhere where I can find them in fifteen years (rather than spread over the different platforms I've used over the past fifteen years, or worse, gone forever because those platforms are gone), and not used by e.g. Facebook to tell other people that I'm in their pictures, or whatever other uses they'll come up with in the future that I haven't thought about today.
140
140
141
-
## Tim
141
+
###Tim
142
142
143
143
I imagine Solid as a highly interactive data vault that can store any data you want, and that you can carry around with you for your entire life. You don't need to worry about losing your computer, or changing operating systems, or updating software. It follows you forever, always understandable.
0 commit comments