How to Develop Linux Applications (Part 1)
Tags: linux, todayilearned, todayisearched
Published: 2022-05-07 02:56:20

## Table of Contents
1. [Why Create More Applications for Linux](#why-create-more-applications-for-linux)
2. [GNOME Development Center](#gnome-development-center)
3. [KDE Framework](#kde-framework)
4. [Elementary OS](#elementary-os)
5. [Electron.js](#electron)
6. [Helpful Links](#helpful-links)

### Why Create More Applications for Linux
1. Ever wanted a specific application that wasn't available open-source?
2. Broaden the ecosystem by helping to build the next Linux app generation
3. Developing applications not only gives a sense of fulfillment but lets you be creative
4. Earn some extra cash
5. Develop new skills through free training resources and level up your resume

### [GNOME Development Center](https://developer.gnome.org/)
> The GNOME platform has new components, tools and docs. There's never been a better time to make apps for Linux.

[Supported languages](https://developer.gnome.org/documentation/introduction/languages.html): C++, JavaScript, Python, Rust, and Vala

[Builder](https://wiki.gnome.org/Apps/Builder) is GNOME's IDE designed for creating applications with the GNOME platform that combines technologies such as GTK, Glib and more. [Check more info here](https://developer.gnome.org/documentation/introduction/builder.html)

[Flatpak](https://developer.gnome.org/documentation/introduction/flatpak.html) is the framework for building, distributing and running apps on Linux that allows developers to easily make apps in a stable development environment. View [Flatpak's docs](https://docs.flatpak.org/en/latest/index.html) for more information.

![human interface guidelines](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/54eskog0w3xdz292t0iz.png)

There are also [guidelines](https://developer.gnome.org/documentation/guidelines.html), [human interface guidelines](https://developer.gnome.org/hig/) as well as [tutorials](https://developer.gnome.org/documentation/tutorials.html) you can view.

### KDE Framework
[KDE Framework 5](https://techbase.kde.org/KDE_Frameworks) is a collection os 82 libraries that serves as the basic building block of KDE software. KDE Framework 5 (KF5) uses CMake

#### Helpful Links
- [Kirigami UI Framework](https://develop.kde.org/frameworks/kirigami//)
- [Plasma 5](https://techbase.kde.org/Development/Tutorials/Plasma5)
- [Developer Documentation](https://api.kde.org/frameworks/index.html)

![Kirigami UI Framework](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ncbovz7zumsks3k3xyt2.png)

View the [release announcement](https://kde.org/announcements/kde-frameworks-5.70.0.php) for KDE frameworks 5.70.0

There are also [tutorials](https://techbase.kde.org/Development/Tutorials) as well as [design guidelines](https://hig.kde.org/) you can view for more information as well as [Framework API docs](https://api.kde.org/frameworks/index.html).

### Elementary OS
![elementary os](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ptgum8sh3ff4ahqkzkmn.png)

Get started with the [documentation](https://docs.elementary.io/hig/) or view [elementary.io](https://elementary.io/) first.

> Adhering to the suggestions contained here provides many benefits:
> - Users will learn to use your app faster, because it shares common elements that they are already familiar with.
> - Users will accomplish tasks more quickly, because you will have a straight-forward interface design that isn't confusing or difficult.
> - Your app will appear native to the desktop, and share the same elegant look as default applications.
> - Your app will be easier to document, because an expected behavior does not require explanation.
> - The amount of support you will have to provide will decrease—including the number of issues filed—for the reasons above.

No experience is "needed" in writing apps for elementary OS because:
> no experience in writing apps for elementary OS is assumed, but basic programming knowledge is

![elementary os dev docs](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kxqukhbu5xgbzcqkj3yv.png)

View their [developer docs](https://docs.elementary.io/develop/) and get started with your [first app](https://docs.elementary.io/develop/writing-apps/our-first-app).

### Electron
[Electron](https://www.electronjs.org/docs/latest) developers to build cross-platform desktop apps with JavaScript, HTML, and CSS and that includes Linux!

> By embedding Chromium and Node.js into its binary, Electron allows you to maintain one JavaScript codebase and create cross-platform apps that work on Windows, macOS, and Linux — no native development experience required.

Read about best practices in [performance](https://www.electronjs.org/docs/latest/tutorial/performance) and [security](https://www.electronjs.org/docs/latest/tutorial/security). And get amazing [examples](https://www.electronjs.org/docs/latest/tutorial/examples) with code snippets you can run by downloading [Electron Fiddle](https://www.electronjs.org/fiddle).

![electron code snippet](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y7e18uajmn9siqq2d8v7.png)

Join their [Discord server](https://discord.gg/electronjs) to get advice from other Electron app developers.

### Helpful Links
- [Build and release a Linux app to the Snap Store with Flutter](https://docs.flutter.dev/deployment/linux)
- [Using Visual Studio to Develop Linux Apps](https://visualgdb.com/tutorials/linux/)
- [Ubuntu Touch Documentation](https://docs.ubports.com/en/latest/appdev/index.html)
- [GNOME Developer](https://developer.gnome.org/)
- [KDE Frameworks](https://techbase.kde.org/Getting_Started)
- [Elementary OS Developer Guide](https://developer.elementary.io/)
- [Electron Documentation](https://www.electronjs.org/docs)
- [App Center Dashboard](https://developer.elementary.io/)
- [AppImage Packaging Guide](https://docs.appimage.org/packaging-guide/index.html)
- [Flatpak Documentation](https://docs.flatpak.org/en/latest/)
- [Open Build Service](https://en.opensuse.org/Portal:Packaging)
- [Snapcraft Documentation](https://snapcraft.io/docs/snapcraft-overview)

Will you become a Linux app developer?

Happy coding!