Manyverse Desktop Dev Diary
I think it'll be good to share little by little how Manyverse Desktop is shaping up, since it'll be a long journey.
@Powersource (phone) and I agreed to share the responsibility of building it, for a couple of reasons: (1) the workload is large and both me and him have limited time budget, so it makes sense to merge our time budgets, (2) Jacob can work on this earliest in July and we need to speed up mv-desktop development in May and June somehow, (3) some obstacles are Cycle.js-specific and since I created that framework, I should tackles those obstacles, (4) people need hope for an actively-maintained desktop app.
mv-desktop challenges eerily remind me of my first dev diary in 2017, where I was trying to cram scuttlebot into React Native, except this time the challenge is in the opposite direction, where I try to cram React Native stuff into conventional web and Electron development. In 2017, the challenge was mostly with the backend, i.e. running the ssb-server (database and networking parts) on mobile. This time, the challenge is mostly with the frontend, adapting React Native and Cycle.js to an Electron environment. The basic hurdles are solved by using react-native-web, but the devil is in the details, and there are lots of details (see mv-desktop roadmap).
That said, I'll leave most of the nitty-gritty details to GitLab issue discussions. In this thread I'll share the fun stuff: the achievements, the frankenstein gradually coming alive, some diagrams, etc.
Here's the big-plan diagram:
The right side of that tech stack is what we're trying to build. I started by handling the lowest layer, with electron-ssb-client, and then Jacob handled all of the other low-level right-side stack (react-native-web etc), and now the biggest missing piece is "Cycle Native Navigation Web", which will handle "page navigation". There are specific challenges related to that which I'll try to share in another update.
So far what we got working is: the backend is fully functional and correctly communicates with the frontend, and all the Electron/webpack/react-native-web machinery is working. Jacob once demoed the Thread screen working.
This time, I got the Welcome screen fully functional. Sounds easy, but there were lots of CSS and React to struggle with until everything looked pretty. Below is a demo:
The next big task will be switching to other pages. I.e. Cycle Native Navigation Web will need to be built.