Intro
Desktop development refers to building apps that run on a PC’s desktop, like most programs you grew up.
Sometimes these apps are crossplatform but sometimes they’re Native, meaning they’re built with platform-specific languages, tools, and frameworks.
Why Am I Interested?
I’m looking into Desktop apps as a way to move away from Web dev and become more familiar with the sdlc outside webdev. I feel like it’s a great opportunity to learn a great deal.
- Becoming familiar with other languages and technologies.
- Interacting with the os.
- Building GUIs outside HTML and web technologies.
- Learning to package and bundle the program.
- Creating installers.
- How to build cross-platform software.
Process
First and foremost you’ll obviously need an idea for your app.
Start by outlining the concept and identify the core features and user-stories.
Choosing A Language
The language you decide on will likely determine the tools at your disposal.
Examples include:
- java : which is platform independent due to its jvm and is a well matured ecosystem.
- csharp : This is the language of choice for Microsoft’s windows, it was developed by them, especially using the dotnet framework.
- Windows also has many GUI frameworks such as UWP, WinForms, and WPF.
- python: another popular choice due to its friendly syntax and extensive ecosystem of packages and libraries. Including Tkinter and PyQt which support cross-platform desktop apps.
- electron: Using web technologies to build cross-platform apps. It runs on the Chromium V8 engine and as such is bascically a mini-browser, meaning the learning curve isn’t steep. Super popular solution for some of the biggest desktop apps, including obsidian itself. However, it’s resource heavy…
- rust: My favorite language at the moment, it’s great for this, building TUIs, GUIs, and all sorts of desktop apps. Frameworks like Tauri follow the Electron ethos but with a Rust backend, making tauri apps faster, lighter, and memory safe.
Deciding on GUI Frameworks
Once you’ve picked a language, the next is to pick a gui framework.
For each of the languages I’ve mentioned there’s a few choices, so weigh your priorities and decide on what’s best for your project.
UI/UX Design
Use modern tools to make wireframes and design your UI before even writing code.
Build
Set up your environment, tool chains, IDEs, and start.
Test
Both using unit and feature tests, and by getting user-feedback.
Deployment and Distribution
Will need to learn how to bundle everything, make executables, packages, etc.
Likely need to build install wizards and/or scripts.