Motivation

TL;DR

I want to write an app, make it cross-platform, do it in a reasonable amount of time and with the smallest overhead possible. What framework should I use?

Well, it depends.

Do we need apps for desktop anyway? Isn’t desktop dying?

In 2018 Apple said that iOS developers earned $34 billion at App Store. That figure is 28% higher than the $26.5 billion from 2017. It’s an incredibly competitive market, iOS apps, and still, you would probably have a better chance to get paid by doing apps for iOS, not macOS.

The mobile has overtaken desktop in many ways, including traffic:

Some weird stats from net share about how desktop has fallen

Not to mention that offline in web apps is a thing. Browsers eating the market, Google Docs vs Microsoft Office as an example.

Still, 5.5m Macs were sold during 2018 Q4 and more than 75 million units of all desktop computers were shipped in 2018.

image

So desktop is definitely alive at the moment, and professional software isn’t going anywhere. Yet. A major part of this generation is still sitting all day behind computers, even they sit with their smartphones in all other time.

And by looking at effort Microsoft, Google and Apple doing, we might consider that mobile and web apps will evolve eventually into the same complex UI programs, facing the same problems.

In the end, it’s fun to learn anyway!

ChatApp is the new TodoMVC

Instead of a TODO list, we are going to implement a simplistic chat app in hope of searching some answers for various problems that need to be solved in desktop UI engineering:

It’s not that kind of test “let’s measure some metrics, get scores and choose the best”, like you read when choosing a TV. It’s merely an attempt to explore current possibilities to write GUI and learn something new.

This is the main window that was prototyped in 10 minutes using Figma:

a prototype for a chat app screenshot

We have a scrollable channel list, and scrollable message list, with the header and the footer which is a text input.

We are going to try Slack APIs as well and see how far we can go with it.