One Week on Bubble

πŸ“… 2023-05-22

🏷 Bubble, Gemini

Bubble has now been running on for a week, and I think things are going rather well. Here are some technical and non-technical observations.

Technical notes

The first week has been very useful for testing and bug fixing. Developing a multi-user system locally is a bit challenging, so many issues will only pop up when things are running live. I got up to v1.4 during the first week with some days seeing two upgrades.

(Version number nerdery: Bubble uses . numbering β€” pretty much semver but there isn't a major version number.)

Overall performance is quite nice. It remains to be seen how things fare when the database keeps growing. I am far from an SQL expert so I may have some silly choices in the schema and queries, and Python is a CPU and memory hog. There is some headroom on the server, though: I just noticed that a Windows build VM and some VNC processes had been stuck at 100% CPU for a couple of days and it hasn't really impacted the capsule's performance.

Issue tracking

Using Bubble for issue tracking is promisingly fast and slick. All the cross-referencing and social feature (when they work...) are as useful as expected. Perhaps this will indeed be a viable choice from a developer's point of view, and maybe Gemini users will prefer this to going on GitHub or some other web interface? I can see myself preferring this.

The search feature will need some improvement: it shows issues as regular posts...

Issue trackers are hidden from All Posts so their activity is a bit hidden from view, but that is probably for the best. One can always follow the issue tracker subspace for more visibility.

Draft composer

The segment-based draft composer works pretty well, although editing segments has its pitfalls. Unless you can rely on the "Paste Preceding Line'" feature that Lagrange has, you need to be very careful when copy-pasting the previous contents of the segment. Fortunately, you can easily go back in history and see old versions of the page, so that's a kind of an "Undo" feature I suppose.

I'm working on improvements here to make the editing a bit smarter with the help of a few special commands.

Live blogging experiment

It appears Bubble lends itself quite well to fast-paced communications thanks to its notification system.

Some takeaways:

Coexistence of and

I think it's important to separate the capsule from, because the latter exists to serve the community while the former is for my own needs.

From a technical point of view, I'm probably going to pursue increasing amounts of integration between the two sites, though, perhaps even switching to be Bubble-based at some point. There are benefits from a capsule maintenance point of view, and GmCapsule is flexible enough to overlay all the static pages and other CGI stuff over Bubble. Eventually this would also give me a perfect setup for developing some kind of a federation mechanism for Bubble, as I would depend on it between and


My personal reactions

Depending on what aspect of Gemini you value, Bubble can have much more addictive pull / gravity compared to gemlogs, aggregators, and even Station. Especially if you turn on email notifications! But the goal is to serve a wide range of audiences, and you can turn off (some or all of) the notifications for a less captivating experience.

Will Bubble have a hit on my coding productivity? We'll see, but obviously time spent here is time spent not coding. Although, "coding time" and "non-coding time" are two different beasts and Bubble (social media in general) mostly comes out of the second bucket.


The discussion surrounding Bubble has centered on centralization, which is not surprising.

To summarize a little, the biggest issues are:

All of these would be solved either by 1) staying away from advanced services like Bubble, or 2) building a federation of servers like the Fediverse. Neither is a great choice in my opinion. Option 1 might lead to Gemini eventually dwindling and reducing to a barren niche as it fails to attract enough people, and option 2 involves layering on technical complexity that is not in keeping with the D.I.Y. spirit of the protocol.

It has been a busy week, though, so perhaps my thoughts on this will clarify over time. For now, I'm very excited to make Bubble a great tool and an enjoyable meeting place for Gemini users.

A bus factory

One thing I would like to address is the "bus factor". I realize that if a large portion of Gemini users rely on Lagrange and then also happen to rely on Bubble and/or, that's quite a bit of eggs in one basket. Of course, there are mitigations available: all the code is open source (BSD-2-Clause), and I plan on making periodical archives of the content on Also, the server could be physically hosted elsewhere and could have multiple admins. (Although that would require some additional funding and time to maintain a VPS and find suitable admins.) Eventually, we could have a way to federate posts and user interaction between Bubble instances, helping reduce the data ownership issue.

Subspace use

No one seems to have much trouble with the "s/" subspaces, but there is more hesitation about "u/", probably because gemlogs are inherently understood as personal and therefore owned and controller fully by the author. Which is right and proper for Gemini, of course. Thinking about my own possible use of "u/skyjake", I'll likely treat it like a microblog/fediverse account, for quick updates and short-ish thoughts. The longer stuff is nice to have on the original gemlog.

This does raise the question: how do "u/" and personal gemlogs go together? Perhaps I'll add a mechanism that allows one to register their gemlog's Gemini feed on their "u/" subspace, making posts on the gemlog automatically appear as links. That would be the best of both worlds? Social comments on Bubble without losing capsule/gemlog ownership and control. It would make a de facto gemlog aggregator like Antenna, but with social features included. I'm wondering if this will pollute All Posts too much... Filtering out "u/"-autoposts would be pretty easy.

Next steps

I plan on continuing rapid development of Bubble. The original objective of migrating Lagrange's issue tracker onto still requires further work and refinement, and many great features have been suggested by you all fine folks. Stay tuned for updates!

CC-BY-SA 4.0

The original Gemtext version of this page can be accessed with a Gemini client: gemini://