Having spent the last couple of weeks building a Solid app, I thought i’d do a bit of brainstorming about the future of Solid.
Browser extensions
Firstly, I think it would be a good idea to create a browser extension similar to Bookmarks sidebar, to display a categorized list of the most popular Solid apps. The Solid Apps extension could have categories for Profile management, Blogging, Photo Management, News Feeds, Chat, File Management, Dating, and so on. It would also help to organize what would otherwise be a disorganized space.
EDIT: As opposed to a list of trusted apps, they could just be the most popular apps. If we are using a browser extension to confirm write actions (see below), it doesn’t matter if they are trusted. Also, we could use my DVO Toolbar extension to determine the most popular apps
Also, getting people to switch to a different social media platform is a monumental task. Therefore, we need the apps to be one click away, and be able to provide notifications that appear on the browser task-bar, something which is easily done with an extension.
Single sign-on, gateway and universal API
How do we stop a spammer from taking a dump in our POD? Or injecting malicious JS into their posts? Could a browser extension solve these problems? I had some issues authenticating via a chrome extension. As soon as i get the chance i’ll look deeper into it.
Once we are able to sign-in with a browser extension, we can expose a universal API. We would only need to use the API for write access to our POD, and thus it would not affect the viewer. Each time an app wants to write something, we will need to confirm the action. From the user’s perspective this would be a much better experience. Install the extension once, login, and access the apps which are available to you via the Solid Apps extension. We could open up solid to web designers with little coding experience, by providing widgets, web components, and so on. All they would have to do is simply copy and paste some code on their site, and the extension will take care of the rest.
Standardized posts and comments
I think it would be good if we could have a standardized format for posts and comments, with the folders already created when the user creates their POD. All that would be required is to write them as html files using a timestamp for the file name. The file name can contain other descriptive info but cannot contain spaces or special characters because people might want to use the filename in their markup. They shouldn’t contain any inline JavaScript or CSS. The posts could be sanitized by the extension. Let’s face it, a lot of apps are going to be using posts and comments, and so a standardized way to aggregate data from different apps would be very in-keeping with the ethos of Solid.
A Solid CSS Framework
I think Solid needs it’s own, using it’s own color scheme. Something that uses CSS grid, and doesn’t pollute the markup. Sure, a lot of Solid apps would look the same, which isn’t necessarily a bad thing. Anyway, I could put something together if anyone is interested (and if get the time).
GunDB
I’ve mentioned Gun before on this forum, but I think it’s worth mentioning again. It’s a P2P graph database engine written in JavaScript. By default, data is stored in locaStorage, and is replicated to other peers who are using your application. Unlike a Blockchain, you only store data that you are subscribed to, and the data is not immutable.
I might be wrong about this, but I feel that Solid and GunDB compliment each other very well. One of the issues with Solid is decentralized aggregation of POD data, which Gun does well. One of the issues with Gun, is decentralized storage, which Solid does well (in it’s own way ). Anyway, I created a chrome extension which uses both GunDB and Solid. It allows people to like, dislike and comment on any URL (among other things). The likes and the comment ID are stored in localStorage, but the comments are sent to the users’ POD. I’ve still got lots of stuff to sort out, but it seems to work as intended.
While GunDB is P2P, you are still required to connect to a “super-peer” when you initialize an app, which acts as a relay server. However, what if the gun server was built into the solid server? When we connect to a POD, we are also connecting to a super-peer, thus making it more decentralized.
Also, could gun to provide some kind of decentralized DNS system for WebIDs? I’m not sure how that would work.
A Minimum Viable Product (MVP)
It’s easy to get distracted by tasks that are interesting, and never actually finish anything. I do this a lot. However, the resume app is what I consider to be a minimum viable product. By offering a free website/profile that can be edited directly from the font-end, there’s plenty of ways to gain adoption. We could target pretty much anyone, including job seekers, employers, teams, artists, self-employed people, and so on. As I said before, a social media platform will struggle to gain adoption, and would not make a good MVP. An MVP is something which is free, useful, simple, functional (ideally bug-free), publicly accessible, well designed and well documented. An MVP makes it easier to establish a realistic road-map. It will also help to attract other developers, and open the door for more financial contributions.
Anyway, i’ll leave it there for now. Thanks for reading.