Idea: Launcher App

Hey all :slight_smile:

The overall goal for this project is to make a cohesive, stable user experience for a person’s daily technological needs. This is very similar to how iPhones and Android devices come pre-loaded with practical software, but this is inside the Solid ecosystem.

The Launcher App is a collection of apps that follow a similar paradigm and can be styled cohesively. Each app intends to be an MVP of “Do one thing well” with the aim to be hackable even by novice developers.

These are the apps that I could use as a daily driver to get me out of the Google ecosystem. In no particular order:

Calendar - Planned Events
Schedule - Day at a glance
Calculator - Calculator with history a la "ribbon printing"
Minesweeper - Just a simple 8 x 8
Address Book - Addresses of contacts
Messages - Groups and private messages
Birthdays - List of upcoming birthdays for contacts
Alarm - Alert at explicitly stated time
Timer - Alert after a certain amount of time has passed
Stop Watch - Track the lapsing of time
Clock - Displays the current time in an aesthetically pleasing way
Notes - Store individual notes
Photos - Manage and view photos in albums
Maps - Search for a destination and compare it to current location
Camera - Snap photos and view the camera roll
Contacts - List of all contacts with the ability to manage
Files - File management system (I think this could just be the Pod Browser?)
Music - Music player
Videos - Video player
Podcasts - Podcast player
Books - Book reader
News - RSS reader
Library - A directory of Solid Apps and downloadable data such as books, videos, movies, podcasts, news
Routine - A personal assistant to help keep the user on their pre-defined routine for the day
Friends - A feed of updates shared by friends
Settings - Manage preferences for all apps

These apps likely have a lot of overlap on the Solid data they’ll access, but have been broken apart by how the user thinks. For example, Address Book, Birthdays, Contacts, Messages, Friends all will grab information from /profile/card#me, but their presentation is going to be different depending on the user’s current state of mind.

No development has been started on this yet. I’m happy to team up if there’s overlap with either existing projects or interests. Currently, I’ve got zero Solid expertise, but a decade of web dev & design, so any guidance is super appreciated. I know some of these apps are built or are being built, maybe there’s an opportunity to streamline them together for the sake of the user.

What do you think?

5 Likes

Hi Tractor Hacker :grin:, if you don’t want to start from scratch, your help is welcome on Popock.
Already fonctionnal :

Based on vuejs, should be compatible with react/angular components :slightly_smiling_face:

5 Likes

I like this initiative and see opportunities for collaboration with myself and other developers on Safe Network. So I made a post on the Safe developer forum to see if other Safe app developers might be might be interested:

I’m paused on my Solid on Safe work at the moment, but will check in with this when I pick it up again, in the mean time good luck!

3 Likes

Thanks @Smag0! I’ll look into Popock :slight_smile:

@happybeing thanks for the x-post! That seems like it could be an awesome cross collaboration if there’s interest

1 Like

Reviving this thread. I’ve been quiet on the forums, but I’ve been hard at work.

When I took a step back to think about writing beneficent apps-- apps that respect all people from all angles, such as their time, language, technical aptitude… I wanted something simple to both use and teach.

I’ve been working on a framework with a lean API but heavy opinions on building client-side web applications.

Without further ado, let me introduce Tag: Tag

The next step is to figure out the best way to integrate Solid. I would love any input regarding this.

To give an update on the Launcher App itself… I’ve got an app skeleton put together. This skeleton could be used as the foundation for the launcher or any other application. The approach is modeled after the signup experience for Netflix-- A few pages to onboard a person before exposing a full application.

Demo: https://thelanding.page/tag/hello-launcher.html
Source: tlp/tag - src/hello-launcher.html at main - tag - Source Code for The Landing Page

Note: The entire source fits in that single HTML file, apart from the singular dependency on tag.

Any feedback on any of this would be greatly appreciated as I’ve been operating in a vacuum for the past year :sweat_smile:

1 Like

Hi there!

Tag seems interesting, it really embraces the Trivial Technology idea :). I only spent a couple of minutes looking at the documentation and examples, and I think I already understand most of it.

Although I have to say, personally I’m not sure if I would use this, because I think it is too simple. I’m not sure how I’d go about making a complete application, rather than small widgets. I appreciate the idea that beginners should be able to understand the code, and I’m also very much for the idea of having code in the HTML, without any compilation step. But at a glance, I’m not sure how making a large application would be manageable with this paradigm. This is just my gut reaction though, maybe I’m wrong. I’d love to eventually see people making apps with this :).

What use-case did you have in mind? It seems like it could be useful to enhance basic HTML websites, similar to what AlpineJS does. Or maybe to author web-component widgets. But I’m unsure about making “apps”. Maybe it would help to see a complete app such as TodoMVC.

I have tried it but, as a user (I didn’t look at the code), I’m not sure what that is supposed to be doing. I just see a couple of screens where I have to press “Continue” for no reason, and then I can’t launch anything.

Maybe Tag could be used to implement Smalltalk in the browser, and integrate with Solid pods that way? Just a crazy idea.

You could wrap the browser DOM functionality with Tag, and then the DOM manipulation could be done in Smalltalk. It looks like there is a similar project

but probably Solid would require changes and additions.

I like the way you’re thinking :slight_smile:. i’m not familiar with lower level code, Smalltalk, WASM, or Solid to speak to accurately to either though.

I can try though!

If Smalltalk can be compiled to WASM, Tag could serve as glue code. As I understand, the set and get functions from a tag should be usable in compiled modules via bridge functions.

If all that is true, should be just a little more adapting to get Solid playing with it all.

1 Like

I’m very glad you brought this point up :slight_smile: I shared this concern as I was writing it. Ultimately, the simplicity forced me to write applications a certain way. I honestly don’t know enough about the meta narrative of programming, but it feels like scaling the UI horizontally vs scaling vertically.

A bit of it has to do with my sole knowledge of the internals at this point, but there are a lot of hooks to grab onto to override defaults to keep tricky things lean.

In designing the launcher application, I wanted to think about first party apps and the launcher holistically. I ended up treating each feature as an HTML leaf node. This lent itself well to creating single-file applications. These load really fast in iframes.

All that said, I souped up solid-user tag to serve as the launcher. The button toggles between an full screen iframe and an overlay. Entering the konami code pops open developer tools on the iframe layer.

Solid User Launcher Demo
Solid User Launcher Module Source

In the above module, we’re now exporting the Solid User’s Tag properties, in addition to connect and disconnect functions. This allows us to import those into other modules.

Importing Solid User’s functions a Solid Todo App

With that Todo example, we’re able to inherit Solid’s context. With that, we’re able to render the person’s name in the todo app. This is one way to build and chain more complex features.

I see software as very tribal. By decreasing the vocabulary required to communicate effectively in a medium inherently makes it more accessible. I want anyone familiar with the web to discover a new way to call into it. Anyone not familiar, I want to have code that can be easily ported or refactored into any competing alternative. I want time spent learning it was still worth every second, even if it’s not perfect.

All that said, all the launcher apps in the parent post are the use-case I’m aiming for. I want an abstraction to be able to roll my own software so that I’ll be able to come back 5, 10, 20 years down and pick up changes with only a brief refresher. And I want to be able to share that same ability with others.

Thanks for trying out the first hello-launcher, it really isn’t self explanatory as it stands right now :sweat_smile: it was mostly for me to prove out the technical hurdles I was facing, but what those are isn’t clear externally.

1 Like

Newspeak is based on Smalltalk and runs on top of WASM:

https://newspeaklanguage.org/

and it is available from the “Ministry of Truth” on github :joy:

Gilad Bracha gave a recent talk on it to the California Smalltalk users group:

1 Like

Cool find, @tag42git. It made me think of Spritely Goblins, so I posted to fediverse and mentioned @cwebber.

Update: Fixed mention, reposted on fediverse.

Hi Arnold, it was me, @tag42git :slight_smile:

I wasn’t aware of Gilad Bracha before I saw Newspeak, but he seems to have an outlook that I like.

Newspeak is a live coding platform intended to maximize modularity, which I think is needed before all the premature optimization happening. He says that ultimately modularity equals security.

1 Like

Oops, mucho sorry :woozy_face: Fixed it, and reposted the message too. Thanks!

1 Like