<@U04H34VPCJZ>, here is a brief description of our...
# compose-desktop
d
@Alexander Maryanovsky, here is a brief description of our experience using Compose for Desktop to build ClearWell (see screenshots above), an analytics app for High Throughput Screening (HTS). TL;DR: HTS is a scientific method used primarily in drug discovery*. It utilizes automation and robotics to rapidly test thousands to millions of chemical, genetic, or biological samples for specific biological activity. The idea for ClearWell was conceived by a friend of mine who works heavily in HTS and lab automation. Mitch created the first version in C# for his own use. He and I had been throwing around ideas for a product. Mitch suggested recreating his HTS analytics app from scratch with new features and a modern look and feel. The project would be built from scratch. We discussed it for a couple of weeks and then jumped in. We wanted a high-performance, multiplatform desktop app framework, concentrating on Windows and macOS. We first took a look at Flutter, which is a solid framework, but Dart doesn’t have the same developer experience, clarity, or efficiency that Kotlin enjoys. We also prefer Kotlin’s approach to concurrency (coroutines). The Compose framework allowed for very easy construction of the customizable components needed for this kind of application. Mitch did all his work on a Windows machine because that’s what most people in labs use. I used a MacBook. This worked out well in terms of maintaining consistency across our two platforms. Access to Java libraries from Kotlin was also very helpful for things like molecule rendering. We created an app framework with a dynamic set of screens that could be easily added, removed, reordered, or hidden. Then we added an event bus and key binding structure. We decided to defer plugins until we had a better understanding of all the key components. I was expecting to use Kotlin Script for user scripting, but it seems to have been untouched for a while. I also couldn’t find a good JVM version of Python, so I decided to build a simple scripting language that was STEM-friendly with optional typing, units of measure, and constraints that can be used with variables and parameters. With help from Claude, KiScript (KS) only took about two and a half weeks for a working version. I’m currently working on a standalone version of KS with more features, including an embedded data DSL. We are planning to open-source that version. We may also add Python as an option if an up-to-date JVM version becomes available. The first screen we created was the Plate Viewer, which is on the bottom of the screens posted above. All those little squares are wells organized on a plate. The wells contain the chemical, genetic, or biological samples being tested. After the wells have been injected with compounds, a set of sensors records their state over time and provides data that can be analyzed by ClearWell. After the Plate Viewer was finished, we created the other screens, gathering feedback from HTS experts as we went along, and ended up with what you see above. The available screens are Plate Viewer, Gallery (side-by-side plates), Dose Response Curves, Import/Export (plate data), Scripting (a mini IDE), Documents/Help, and Settings. We also have a scientific spreadsheet that allows KS expressions in cells, but it won’t be released until the next major version. You can see more details on FellStreet.bio, including screenshots (click to enlarge) and a video. https://www.fellstreet.bio/ *HTS is primarily used for drug discovery, but it is also utilized in agrochemistry, materials science, and other areas.
👀 2
🚀 8
🧵 4
a
Thanks for the detailed write up. This will help convey to leadership that developers want Compose for Desktop.
👍 3
If you have any more thoughts about difficulties you've had, or areas you think we could improve, let us know (in private is ok too).
d
@Alexander Maryanovsky Thank you! You guys have always had the best support. Packaging, deploying, updating (efficiently) and licensing is frustrating, especially if you are targeting macOS, Windows and Ubuntu. It would be great to have a built in packager and license manager that handles all platforms well, supports updates and has license / payment management for commercial offerings like JetBrains does for it's products. @אליהו הדס’s new project looks like a good move in this direction for the packaging part.