#Is Elixir appropriate for GUI Desktop Apps?

33 messages · Page 1 of 1 (latest)

lofty sapphire
#

Heya! I'm looking to learn Elixir in order to build a desktop CMS tool for publishing teams.
I was looking at the Elixir GUI libraries (e.g. wxWidgets) and they looked quite old or poorly supported. But then I heard Lars Wikman say that Discord was basically 100% Elixir (said here: https://youtu.be/wWRDysIpMFQ?si=BtSopEShCvSDuNlT&t=720), so I figured making a deep yet sleek GUI must be possible. My question is, just how difficult will it be? I'm a beginner, so am I going to have to labor over GUI functionality (e.g. document mini maps, concurrent editing, diffing multiple documents, etc.) much more than I would with a language that has GUI libraries as first class citizens?

Session description:
Introducing the Elixir programming language, the Phoenix web framework and what it is like to build web applications under a fundamentally different high-level abstraction. We will cover development, productivity, performance, reliability and observability capabilities that are essentially unmatched. Given that this tech inn...

▶ Play video
proper socket
#

Discord's backend has a lot of Elixir (not 100%). The discord desktop client is some electron react JavaScript nonsense. Not elixir unfortunately...

#

there are a few ways to do desktop apps, but nothing is going to come close to a more native way of doing things. I'm not a native GUI expert though, so I don't know too much, but there are a few directions you could explore

#

but in this case you'd essentially be building a web app in a desktop frame

lofty sapphire
proper socket
proper socket
lofty sapphire
proper socket
#

yep, it definitely targets iot use cases more

lofty sapphire
proper socket
#

nope, sorry, last time I wrote a desktop GUI app was over a decade ago 😅 maybe someone else will chime in, give it some time

lofty sapphire
#

or maybe I could manage to build the app entirely in the browser and use Phoenix?
I'm just concerned that processing several large documents into a web app will not be performant.

swift nest
oak mica
#

How large is large

ashen holly
#

how performant is performant?

might read like we're trying to troll you, though seriously: from experience we engineers tend to come up with non existing problems and early over-optimisation. (same on my chair tbh) so i can only advice to try to focus on an mvp solution with whatever you are familiar/quick/best with (and fits the problem at around 50% to 80%) then just go for it. focus on the significant problems along the way.

these are just my 2 cents of my personal painful learned experience: good luck. 😎 👍

ashen holly
lofty sapphire
ashen holly
#

maybe you want to share a little bit about the desktop CMS you would like to build. talking about the key value proposition, the one job a user needs to be done, the application will be able to help with. this might help in help finding a decent technological fit together with you.

lofty sapphire
#

Problem: There's no way for publishing houses to neatly track and manage the production processes for physical publications across platforms.
Example Scenario: Say you're an editor for a magazine. You could have several pieces that are yet to be written, maybe another couple of pieces are with different copy editors and a content editor, and still yet they are assigned to different designers who are designing assets.
Current solution: Your primary tool is InDesign, and most writers use Google Docs or Word, in-house editors use InCopy, some designers use Photoshop, one contractor uses InkScape. You track all of the assets themselves in a CMS and use a spreadsheet to delegate and track progress.
Desired Solution: I can track and manage the production of publication content from within the content itself. If I am viewing page 3, then I can see what has been completed by whom on page 3, what is delegated and its progress, and what still need to be done. Team members can use the tools best suited for their craft, but I can ultimately use and compare different content, be they multiple edits, design iterations, etc natively. I will ultimately use InDesign (or some equivalent tool) to create the final product, but InDesign is not a multi-pronged workflow management tool. It's just the fancy WYIWYG editor. I need [Ifona's product] to manage everything preproduction.
No suite allows anything like this. Even if your whole team is on Adobe, it's still often managed in a spreadsheet, and the composition process is done manually.

#

Even if this is all possible in a web app, is it something Elixir + Phoenix is appropriate for?

craggy sentinel
#

I happen to use Elixir for something that looks very close to what you are describing

#

But the GUI part is Vue and I'm migrating chunks of it to Liveview

#

Nevertheless, I did not try to build a desktop app. It's web-based because it made more financial / build time sense.

ashen holly
#

for the collaborative work part yes, since elixir with and without phoenix is good for server applications. if you need a heavy gui intense app that will become a second indesign, which seemlessly integrates with the colaboration part, you will at least need one more technology in your stack and a lot of time or money.

craggy sentinel
#

☝️ excellent summary.

#

Where Elixir gave me an easy time was the multiplayer coordination / synchronization. I don't use CRDTs since there are "chunk locking" mechanisms in my app that make edits conflict-free by default, but the whole coordination of editors has been easier than my previous experiences in other languages.

#

Best of luck, the industry has a lot of vacant space to optimize publishers workflows 🙂 .

lofty sapphire
#

Thank you both! I'll give Elixir a shot!

ashen holly
#

a clever, yet complex solution could be to focus on the colaboration workflow using f.e. phoenix first (excellent fit) and then research into either: A) which industry applications (like indesign or such) offer integrations to their products. B) which ways you could figure out offering "indesign document downloads" from you application. all not the perfect castle you might wish for, though in terms of MVP and low budget, clever ways to iterate your way into productivity and maybe even profitability.

#

me personally would start with the worklow part itself, since thats what i understood is the major painpoint. you wont replace and become another indesign too soon, so focus on a subproblem first.

lofty sapphire
#

Yeah, the workflow/coordination/communication part is the key.
I'm not trying to solve the design problem. There are several mature tools tackling that.

azure kettle
#

You could definitely make a cross platform gui desktop application, by hand or with desktop/scenic. I'd definitely suggest going the phoenix/liveview/whatever route since there's more resources, and running a local server.