Sponsoring development of Rust GUI library iced

The Cryptowatch team has recently welcomed Héctor Ramón, also known as hecrj, who is the author of a Rust GUI framework called iced. Héctor has joined us as our first full-time Rust developer.

Héctor got a lot of attention for iced when he announced it on reddit in September, and deservedly so. It’s a nicely designed framework inspired by Elm; it provides the necessary abstractions to build a GUI while leaving an open interface for any developer to provide their own component and rendering logic. Since joining our team Héctor has been hard at work continuing to develop iced and prove it out as a cross-platform GUI framework for Rust.

With that said, we want to show some progress. Today iced is releasing its first major update.

Today’s iced release

Today’s update to iced brings a variety of improvements:

  • Support for scrollable content
  • A text input component
  • A much faster flex layout engine
  • Custom font support, and font caching
  • HiDPI support
  • async API for UI messages

With these changes, we’re also releasing a new example program: the classic To-do list MVC application. This example demonstrates iced‘s capabilities and viability as a GUI framework.

Read more on /r/rust: https://www.reddit.com/r/rust/comments/e1jckj/iced_a_crossplatform_gui_library_new_release/

Try out the To-do MVC on your computer!

What’s next?

We’re moving on to building Cryptowatch software with iced.

Héctor is working with Clark Moody, a Bitcoin OG who also joined our team earlier this year after Kraken’s acquisition of Interchange. If you don’t know who Clark Moody is, you’re probably new around here. He is known for RTBTC, later acquired by Blockchain, as well as his namesake Bitcoin charts website which has been operating since 2011. Clark is basically the father of Bitcoin charting sites. More recently he has also been active in the Rust community, contributing to rust-bitcoin.

Together we will be developing iced further while using it to build prototype Cryptowatch native applications which we ship to our clients. Using the library to build an alpha-level application released to customers will be a great way to test it out and find its limits. It will also inform its future roadmap and motivate development of that roadmap.

The vision is a framework which allows anyone to develop applications with the visual and interactive qualities of web applications, but with the stability, efficiency, platform portability, and developer-happiness offered by Rust.

The target for our first native release is a simple grid-based price monitoring application that can display an arbitrary set of markets – something you’d want to set up and keep open on a monitor all day. We’re keeping scope small so we can ship quickly, while also tying in a few further core improvements to iced as we go along:

  • Animation support
  • Viewport-dependent layout (“responsive” layout)
  • Keyboard navigation for input elements (Tab, Enter, etc)

The application will ship on Mac, Windows, and Linux.

Final thoughts on the Rust community

The Rust GUI and game dev ecosystem has been picking up a lot of momentum; it seems a lot of smart people have realized that Rust is an awesome language for this kind of stuff. Its speed, memory safety, and expressive syntax are a perfect combination for complex, graphics-heavy software. This healthy ecosystem is what enabled iced in the first place.

Our goal with sponsoring iced development is to put some extra fuel into one of the more promising projects in this space and push hard to reach the tipping point where others find it “ready to use”.

I personally find it depressing that most new “native” software applications these days are written in a dynamically typed scripting language, are deployed as a self-contained web browser, and have accustomed end-users to substantial memory footprints. I think Rust can offer the world a brighter future.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s