p2panda pre-released their initial verison of Reflection – a collaborative, local-first GTK text editor. They announced it a few days back in the winter update and I was curious to try it out. In this post I'll share my experience using Reflection for a couple of days.
UI is pretty slick and responsive. There are some minor bugs but those will likely get resolved in future releases. It tested with 4 concurrent connections and had almost no latency issues. The app feels polished and ready to use if you want to share notes with a friend/coworker in non-serious contexts. On MacOS, running reflection with HOME=$(mktemp -d) lets you spawn multiple instances, each having a separate temporary directory. As a native GTK4 app, Reflection follows GNOME design patterns.
Building the app from source lets you modify the UI by editing .blp blueprint file in reflection-app/src, re-run meson compile -C build, and see the change. I added a word counter to the header bar and a "wave" button that broadcasts notification to other peers saying "👋 [username] says goodbye!" – by extending EphemerialData to support a Nudge message type.
The entire app, along with its P2P networking layer (p2panda), synchronization logic (reflection-doc), and node management (reflection-node) are all opensource Rust crates under the GNU General Public License v3.0. This is not an endorsement of any kind, I genuinely like this app and their other projects. Browse the repository for installation instructions.