Hi,
We have been working on Solid for the last months to understand better the technology and came up with a small proof of concept.
Funny enough just yesterday @root66 published a wicked new app that almost does the same as ours.
We started our POC as probably everybody else, working on a explorer to understand the APIs and how they fit together. Then we moved to a chat with the idea of expanding it further to a social network where files can be shared, commented and liked.
On the explorer side of the app you have the following functionalities, upload files, create folders/files files, rename or delete files/folders. Additionally clicking on the lock icon you can see and edit your ACL.
For the chat, we have implemented in a way that you can chat only with people you both are friend with. There is no group chat yet though.
Issues we have faced and hope you can give feedback:
-
Inbox folder: When someone sends a notification to your inbox, there is not reliable way to figure out the authenticity of the sender. In order to solve this, we have created a folder under the inbox for each user (friends) with append permissions for only that user.
-
Websockets: Websockets are randomly triggered. We have them pointed to inbox and outbox folders, whenever a user modifies the log.txt of any of its user´s folder, sometimes we see that another websocket is also activated.
-
Pagination: When data grows, we tested with around 1000 messages in each folder, performance drops considerably. Taking up to 300ms seconds to read a message on a HDD. Even using SSD which would improve performance, let´s say to around 15ms per message, this would just not be enough. A total of 6000 messages would take 1,5 minutes for the app to scan.
We tried implementing a cache system in the front end (writing all messages in one single file) but it does not scale when size increases to around 100MB. The next thing we thought about was using SPARQL in the server side but unfortunately is not in the solid spec. We were suggested to create a plugin for the CSS to allow to query over a file without having to load the whole file in the front end.
You can access the app at https://dev.ideniox.com/
There are two requirements for the app to work.Grant full control and you need to create a outbox folder such as https://ch1ch0.pod.ideniox.com/outbox/
Open code GitHub - JorgeMartinezPizarro/solid-ideniox
You also can ping me your webid and I can chat with you to test the app. Mine is https://ch1ch0.pod.ideniox.com/profile/card#me
Thanks in advance for all feedback and tips.