Programming languages ranked by popularity in privacy software
from Charger8232@lemmy.ml to privacy@lemmy.ml on 18 Aug 04:20
https://lemmy.ml/post/19279448

I was bored, so I compiled a list of 77 of my favorite open-source privacy-focused software. This ranges from Android apps to desktop apps to websites to operating systems. I scraped the programming languages used for each one from their respective repositories, and created a simple scoring system to score each programming language.

Obviously there is some bias, since Kotlin is very popular for Android apps and not much else, and it’s not an exhaustive list, so some data might be off, but it was still fun to make! Just wanted to share it with all of you, in case anyone else finds it interesting.

The full ranking

Full ranking

1. C++ 2. C 3. Kotlin 4. Java 5. JavaScript 6. TypeScript 7. Python 8. Shell 9. C# 10. Dart 11. PHP 12. Ruby 13. HTML 14. Makefile 15. Go 16. QML 17. Pascal 18. CSS 19. Clojure 20. Blade 21. Crystal 22. Batchfile 23. Swift 24. Emacs Lisp 25. Svelte 26. Rust 27. CMake 28. Haskell 29. Lua 30. Vue 31. Roff 32. XSLT 33. Assembly 34. NSIS 35. Objective-C 36. SCSS 37. Less 38. PLpgSQL 39. Objective-C++ 40. Inno Setup 41. Meson 42. WebAssembly 43. ASL 44. PowerShell 45. Rich Text Format 46. GLSL 47. Common Lisp 48. Haml 49. Scheme 50. Dockerfile 51. Perl 52. AIDL 53. M4 54. Mustache 55. D 56. MDX 57. SourcePawn 58. M 59. Pug 60. Lex 61. EJS

Scores for each programming language

Language scores

C++: 13070 C: 11734 Kotlin: 7195 Java: 6727 JavaScript: 5356 TypeScript: 5002 Python: 4250 Shell: 1903 C#: 1873 Dart: 1872 PHP: 1844 Ruby: 1499 HTML: 1389 Makefile: 990 Go: 975 QML: 955 Pascal: 917 CSS: 888 Clojure: 878 Blade: 832 Crystal: 738 Batchfile: 708 Swift: 577 Emacs Lisp: 556 Svelte: 366 Rust: 351 CMake: 342 Haskell: 326 Lua: 300 Vue: 288 Roff: 268 XSLT: 176 Assembly: 167 NSIS: 130 Objective-C: 128 SCSS: 90 Less: 77 PLpgSQL: 66 Objective-C++: 61 Inno Setup: 59 Meson: 41 WebAssembly: 25 ASL: 22 PowerShell: 21 Rich Text Format: 21 GLSL: 18 Common Lisp: 16 Haml: 14 Scheme: 13 Dockerfile: 12 Perl: 12 AIDL: 11 M4: 7 Mustache: 7 D: 5 MDX: 5 SourcePawn: 2 M: 2 Pug: 2 Lex: 1 EJS: 1

The original data

(NOTE: I am NOT looking for criticism on any choices made here)

Original data

### HuggingChat TypeScript 62.1% Svelte 36.6% Dockerfile 0.4% JavaScript 0.4% HTML 0.2% Shell 0.1% Other 0.2% ### GPT4ALL C++ 48.2% QML 32.3% Python 8.5% CMake 5.4% JavaScript 3.9% C 1.0% Other 0.7% ### Audacity C 37.6% C++ 35.3% Python 18.1% Shell 2.8% Common Lisp 1.6% QML 1.3% Other 3.3% ### Duplicati C# 87.3% JavaScript 5.7% HTML 3.2% Less 1.8% Python 1.2% Shell 0.4% Other 0.4% ### Vorta Python 99.2% Other 0.8% ### Filen (Desktop) TypeScript 96.3% JavaScript 2.1% HTML 1.2% NSIS 0.4% ### Monero C++ 81.7% C 11.7% Python 3.2% CMake 2.0% Makefile 0.5% Shell 0.4% Other 0.5% ### Ivy Wallet Kotlin 99.7% Other 0.3% ### Brasero C 98.1% Makefile 1.5% Other 0.4% ### VSCodium Shell 83.8% XSLT 16.0% PowerShell 0.2% ### GNU Emacs Emacs Lisp 55.6% Roff 23.8% C 16.4% M4 0.7% Objective-C 0.6% C++ 0.5% Other 2.4% ### GitLab Ruby 69.2% JavaScript 17.3% Vue 6.8% PLpgSQL 2.9% Haml 1.4% HTML 0.9% Other 1.5% ### Codeberg Clojure 87.8% Shell 3.9% CSS 2.3% HTML 2.2% Batchfile 2.2% PowerShell 1.0% Other 0.6% ### Wikipedia (MediaWiki) PHP 82.7% JavaScript 15.3% Less 1.1% CSS 0.8% HTML 0.1% Vue 0.0% ### 7-Zip C++ 79.3% C 17.6% Assembly 1.6% Makefile 1.5% ### PeaZip Pascal 91.7% Inno Setup 5.9% Batchfile 1.8% C++ 0.4% Shell 0.1% C 0.1% ### qBittorrent C++ 71.0% JavaScript 14.1% HTML 11.5% Python 1.1% CSS 0.8% CMake 0.7% Other 0.8% ### osu! C# 100.0% ### 2048 CSS 54.9% JavaScript 38.1% HTML 6.5% Ruby 0.5% ### Wireshark C 95.2% C++ 2.4% Python 1.1% Perl 0.3% CMake 0.3% SourcePawn 0.2% Other 0.5% ### nmap C 38.0% Lua 29.0% C++ 17.3% Shell 4.6% Python 4.3% Makefile 1.9% Other 4.9% ### VirtualBox C 67.2% C++ 25.2% Python 2.8% Objective-C 1.7% Assembly 1.4% D 0.5% Other 1.2% ### Docker Go 97.5% Shell 1.5% Dockerfile 0.5% PowerShell 0.3% Makefile 0.1% Python 0.1% ### calibre Python 79.2% C 17.1% C++ 2.8% HTML 0.3% Shell 0.2% XSLT 0.1% Other 0.3% ### Thunderbird JavaScript 60.5% C++ 21.5% HTML 6.6% CSS 3.8% C 1.8% Java 1.7% Other 4.1% ### Betterbird Batchfile 66.5% C 18.3% C++ 10.1% Shell 5.1% ### draw.io (Desktop) JavaScript 96.0% Shell 4.0% ### Joplin TypeScript 71.4% JavaScript 22.3% HTML 1.9% CSS 1.3% Java 1.2% Mustache 0.7% Other 1.2% ### LibreOffice C++ 86.6% Java 5.5% Python 1.8% Makefile 1.6% XSLT 1.5% Rich Text Format 1.4% Other 1.6% ### Proton Mail (Web) TypeScript 92.1% JavaScript 5.2% SCSS 1.5% MDX 0.5% Swift 0.4% CSS 0.1% Other 0.2% ### F-Droid Java 65.3% Kotlin 33.1% Other 1.6% ### Aurora Store Kotlin 96.8% Java 2.8% AIDL 0.4% ### Neo-Store Kotlin 100.0% ### Obtainium Dart 98.7% Other 1.3% ### Droid-ify Kotlin 99.6% Shell 0.4% ### IzzyOnDroid PHP 97.2% Python 2.5% Shell 0.3% ### Accrescent Kotlin 100.0% ### GNOME Software C 97.0% Meson 1.2% Python 1.1% Other 0.7% ### Flathub TypeScript 74.0% Python 24.2% JavaScript 1.1% Shell 0.4% SCSS 0.2% Dockerfile 0.1% ### SearXNG Python 74.7% Shell 9.9% HTML 6.1% Less 4.8% JavaScript 2.7% CSS 0.9% Other 0.9% ### GrapheneOS Makefile 87.1% C++ 11.3% Shell 1.6% ### GNOME C 97.3% Meson 2.3% Python 0.4% ### KDE Plasma C++ 45.6% QML 41.2% C 5.5% CMake 2.3% Python 2.2% JavaScript 1.9% Other 1.3% ### Arch Linux C 98.4% Assembly 0.7% Shell 0.4% Python 0.2% Makefile 0.2% Perl 0.1% ### HeliBoard Java 45.4% C++ 34.7% Kotlin 19.2% Other 0.7% ### Blender C++ 76.3% Python 14.6% C 5.0% GLSL 1.8% CMake 1.2% Objective-C++ 1.0% Other 0.1% ### FreeCAD C++ 52.7% Python 44.5% C 1.5% CMake 0.8% NSIS 0.2% Lex 0.1% Other 0.2% ### Krita C++ 90.2% Python 3.0% C 2.3% CMake 1.6% HTML 0.7% Rich Text Format 0.7% Other 1.5% ### GIMP C 95.5% Scheme 1.3% Python 1.1% C++ 0.7% Meson 0.6% Perl 0.4% Other 0.4% ### Flameshot C++ 87.8% CMake 5.8% Shell 3.3% Python 1.7% Roff 1.1% C 0.2% Other 0.1% ### Inkscape C++ 94.1% C 1.7% CMake 1.5% HTML 1.4% Python 0.3% ### Aegis Java 96.0% HTML 2.1% Roff 1.9% ### VeraCrypt C 68.8% C++ 19.0% Assembly 10.0% Shell 1.1% Makefile 0.5% Batchfile 0.3% Other 0.3% ### KeePassXC C++ 95.1% CMake 2.2% Shell 1.5% PowerShell 0.6% Objective-C++ 0.4% Python 0.1% Other 0.1% ### KeePassDX Kotlin 79.0% C 14.0% Java 4.1% Assembly 2.6% C++ 0.2% Ruby 0.1% ### addy.io Blade 83.2% JavaScript 5.2% Vue 4.8% PHP 4.5% CSS 2.3% ### Mullvad VPN Rust 35.1% Swift 26.2% Kotlin 19.5% TypeScript 13.2% C++ 2.8% Shell 1.8% Other 1.4% ### Alovoa Java 82.7% HTML 9.8% JavaScript 3.6% CSS 2.8% Other 1.1% ### Briar Java 98.0% Kotlin 1.9% Other 0.1% ### SimpleX Chat Haskell 32.6% Kotlin 32.3% Swift 26.9% HTML 2.2% TypeScript 1.4% JavaScript 1.1% Other 3.5% ### Medito Dart 88.5% Kotlin 8.0% Ruby 2.0% Swift 0.7% CMake 0.2% C++ 0.2% Other 0.4% ### coreboot C 94.4% ASL 2.2% Makefile 1.0% C++ 0.7% Assembly 0.4% Perl 0.4% Other 0.9% ### Libreboot Shell 51.5% Python 25.1% C 22.2% Makefile 1.2% ### OpenStreetMap Ruby 78.1% HTML 8.7% JavaScript 6.9% PLpgSQL 3.7% SCSS 1.2% C++ 0.7% Other 0.7% ### OsmAnd Java 95.3% Kotlin 3.9% AIDL 0.7% CSS 0.1% Shell 0.0% XSLT 0.0% ### Organic Maps C++ 71.0% C 7.5% Java 6.1% Swift 3.5% Objective-C++ 3.1% Python 2.9% Other 5.9% ### VLC Media Player C 62.6% C++ 18.9% Objective-C 8.3% QML 3.1% Makefile 1.6% Lua 1.0% Other 4.5% ### Stremio (Desktop) C++ 36.7% QML 17.6% NSIS 12.4% JavaScript 10.7% Shell 9.1% CMake 4.1% Other 9.4% ### OBS Studio C 54.6% C++ 34.7% CMake 6.1% Objective-C 2.2% Objective-C++ 1.6% M 0.2% Other 0.6% ### NewPipe Java 84.0% Kotlin 13.5% HTML 2.5% ### FreeTube JavaScript 68.5% Vue 17.2% CSS 11.2% SCSS 3.0% EJS 0.1% ### Invidious Crystal 73.8% HTML 13.9% JavaScript 8.2% CSS 2.6% Shell 1.1% Makefile 0.2% Dockerfile 0.2% ### PeerTube TypeScript 89.7% HTML 6.5% SCSS 3.1% Shell 0.4% Pug 0.2% JavaScript 0.1% ### Tubular Java 84.6% Kotlin 13.0% HTML 2.4% ### Mullvad Browser JavaScript 28.1% C++ 25.7% HTML 22.3% C 12.4% Python 2.8% ### Tor Browser JavaScript 28.2% C++ 25.6% HTML 22.3% C 12.4% Python 2.9% ### uBlock Origin JavaScript 88.4% CSS 4.9% HTML 3.4% WebAssembly 2.5% Shell 0.6% Python 0.1% Makefile 0.1%

#privacy

threaded - newest

GolfNovemberUniform@lemmy.ml on 18 Aug 04:33 next collapse

I’m glad Python didn’t score that much.

Charger8232@lemmy.ml on 18 Aug 04:37 next collapse

Vorta is made in 99.2% Python, I wouldn’t give it such a hard time!

Edit: calibre and SearXNG also both have Python as the majority language

GolfNovemberUniform@lemmy.ml on 18 Aug 04:41 collapse

The only program here I know is SearXNG. My experience with GUI Python apps was pretty bad but I guess it makes it easier for devs to make new apps so it has the right to exist as long as it’s not invasive or used in OS components.

pupbiru@aussie.zone on 18 Aug 08:26 next collapse

python makes solid backends - especially ones that deal with things like 3rd party APIs and data munging, which makes it a pretty good choice for a lot of web-based privacy apps like alternative front-ends

GolfNovemberUniform@lemmy.ml on 18 Aug 09:06 collapse

How exactly is it good for backends except for simplicity of creation?

HK65@sopuli.xyz on 18 Aug 14:03 collapse

Simplicity of maintenance, and these help with good security.

GolfNovemberUniform@lemmy.ml on 18 Aug 14:57 collapse

This makes some sense but the performance sacrifice is too big imo.

pupbiru@aussie.zone on 20 Aug 01:33 collapse

performance is basically irrelevant… when you’re a professional software engineer, ease of maintenance - adding new features, bug fixes, keeping bugs out of the code base - is paramount… you can always throw more servers at it, because they’re cheap compared to labour and mistakes

GolfNovemberUniform@lemmy.ml on 20 Aug 07:53 collapse

But how about desktops? You’re just creating e-waste with that ideas.

pupbiru@aussie.zone on 21 Aug 02:29 collapse

it’s still better than electron?

performance of the underlying programming language is basically the least of our concerns

we don’t get new computers because things become less efficient - we get new computers because we demand new features and software gets more complex… e-waste isn’t created because software is using python - e-waste is created because consumers demand fancy animations and gestures and things that programmers have to add, and it’s inefficient to pay a human to write those things in a low level language

GolfNovemberUniform@lemmy.ml on 21 Aug 08:11 collapse

This is 100% not true. Most users don’t care about fancy animations and stuff like that. I hope you will understand it at some point and if not, I just hope you stop creating software and spreading these ridiculous Big Tech inspired ideas.

pupbiru@aussie.zone on 21 Aug 08:15 collapse

users care about a polished product and don’t actually give a shit about privacy TBH - it’s not a fact that is particularly fun, but it’s the truth… users don’t care about technology as long as their thing does what they want and makes them feel good for doing it. animations are intended to guide the user between actions - show that A action led to B state… users don’t care about animations, but animations often make software easier to use, and users DO care about that in UX test after UX test

GolfNovemberUniform@lemmy.ml on 21 Aug 11:20 collapse

Bruh I didn’t say anything about privacy but optimization for older devices. I suggest you see a doctor because you seem to have quite noticeable issues with understanding what you read. Also a product can be polished and optimized at the same time.

pupbiru@aussie.zone on 21 Aug 15:06 collapse

no; i’m simply saying that users like us are not the typical users. it’s irrelevant what you’d like to be true - engineering concerns and “good products” - users don’t care about that… usability and features are more important by far than performance and efficiency and this has been shown time and time again in UX research

and i’m not the 1 resorting to personal attacks, so perhaps reevaluate your position if it’s so weak that that’s all you can muster in response

GolfNovemberUniform@lemmy.ml on 21 Aug 20:16 collapse

I don’t think there’s a point in arguing with you. Unfortunately some people are just too rich to understand the issues with planned obsolescence.

Also I knew that my previous reply could be considered a personal offense. However it was not. Your behavior seems concerning and doesn’t seem related to any obvious reasons such as limited language knowledge. This is why I suggested you to check on your health. Most illnesses are much easier to treat before they go really far.

Miaou@jlai.lu on 18 Aug 11:10 collapse

OS components

I’ve got bad news for you…

HK65@sopuli.xyz on 18 Aug 14:02 collapse

Why?

GolfNovemberUniform@lemmy.ml on 18 Aug 14:56 collapse

Speed and resource efficiency.

HK65@sopuli.xyz on 18 Aug 15:27 collapse

To be honest, I’ve seen a lot of code in my line of work, and my experience says that if the speed of a language is your concern, you’re either in high-frequency trading or working on some real-time use case, or you’re wrong.

Most time you perceive as lag as a user comes from either atrocious programming, or network lag, or a combination of the two. A decently, not even well, but decently written Python vs Assembly subroutine will have differences in execution time measured in nanoseconds. Network calls usually measure in milliseconds, and something like a badly written DB query that reads a ton of data from a disk will do seconds or worse.

My point is, I’ll take a not-badly written Python program over someone claiming to have chosen C/C++ for the blazing fast speed in a user facing application, when half of CVEs ever have been submitted over memory safety problems in C/C++.

mypasswordis1234@lemmy.world on 18 Aug 04:40 next collapse

where Rust

Charger8232@lemmy.ml on 18 Aug 04:41 collapse

Rust is ranked #26 with a score of 351. The only program that used it at all was Mullvad VPN. It was used as the majority language for that program, amounting to 35.1% of the entire program.

mypasswordis1234@lemmy.world on 18 Aug 04:52 collapse

It was more of a joking question 😅 It’s a shame that such a good, lightweight and secure programming language is not used. It’s not even in the top 20 😔

WhatAmLemmy@lemmy.world on 18 Aug 07:21 collapse

If you only included projects created in the last 2 or 5 years rust would be ahead of C/C++, possibly ahead of all other strongly typed langs. Kotlin is usually chosen explicitly for modern Android and Java lib interoperability.

I would be willing to wager that within the next 1-2 decades, LLM transpilation will be used to replace most C/C++ code, too. LLM’s can’t be trusted to write code, but they can be trusted to transpile in combination with TDD. If a codebase is already well tested then transpilation is many orders of magnitude easier.

ramenu@lemmy.ml on 18 Aug 04:50 next collapse

I like C++. :)

ramenu@lemmy.ml on 18 Aug 04:52 next collapse

I think the reason C++ is at the top is because of QT though.

Charger8232@lemmy.ml on 18 Aug 04:57 collapse

C++ is used in 36 of the 77 programs, and is one of the top 2 languages for 25 of those programs.

TheRaven@lemmy.ca on 18 Aug 05:23 next collapse

HTML is not a programming language

some_guy@lemmy.sdf.org on 18 Aug 05:27 collapse

And it is the opposite of private.

pineapplelover@lemm.ee on 18 Aug 08:37 next collapse

?? I mean maybe I understand what you mean. It’s used to display information on a website publicly. Don’t know what else you mean by that statement

WhatAmLemmy@lemmy.world on 18 Aug 11:40 collapse

Html is as private as any language — only private when secret (encrypted) — so your comment is a worthless “vacuous truth”.

redux@fosstodon.org on 18 Aug 05:42 next collapse

@Charger8232 really happy to see kotlin so high!

NegativeLookBehind@lemmy.world on 18 Aug 06:11 next collapse

I don’t see BrainFuck on here?

nightwatch_admin@feddit.nl on 18 Aug 06:19 collapse

it is a very private programming language

hperrin@lemmy.world on 18 Aug 06:16 next collapse

Personally, I would group JavaScript and TypeScript together. TypeScript is just a JavaScript extension.

pupbiru@aussie.zone on 18 Aug 08:24 collapse

in the context of privacy the distinction could be interesting: typescript is a microsoft project; foss as it may be… and that might (or might not) have significance

hperrin@lemmy.world on 18 Aug 11:43 collapse

It doesn’t. TypeScript compiles to JavaScript. The compilation process is ostensibly just removing the types. (It also checks types, builds source maps, and outputs declaration files, but none of that is run by the end user.)

kirk781@discuss.tchncs.de on 18 Aug 06:23 next collapse

I recognized majority of the languages on the list but couple of them I am hearing for the first time admittedly like Blade and Crystal. I am not a programmer, so I guess that might be the reason.

graham1@lemmy.world on 18 Aug 06:25 next collapse

I don’t think Makefile and CMake should count as programming languages in this context. There are a few weird names on the list, but these are high up the list only because they’re glue for C/C++ projects

1984@lemmy.today on 18 Aug 09:03 next collapse

It’s funny that privacy software is written in languages with so many footguns…

luciferofastora@lemmy.zip on 18 Aug 10:53 next collapse

Could this be normalised against the baseline distribution of languages for the respective platforms / software categories to see if there are any notable deviations?

WolfLink@sh.itjust.works on 18 Aug 16:55 next collapse

Don’t show this to the Rust fans

toastal@lemmy.ml on 19 Aug 16:01 collapse

Underrated language for this space: ATS from the ML family, which has a feeling of what if C met SML/OCaml then graduated.

You get more flexibility for memory safety with linear types over affine types like Rust for preventing double free or use after free-like errors (while be general for any use-X-times problems). Refinement types can enforce bounds. Dependent types + viewtypes can build complex, but zero-cost abstraction for your own code or as wrappers over C libraries to make them safe & pushing checks to the compile phase rather than runtme. On top of that, there are proof-level types/values you can interleave in your code instead of using an auxiliary language like Coq or Agda. Compiling/mapping to C you use a lot of the same tooling of C as well as performance charactistic of C (can opt in/out of GC, unboxed types, can layout the memory, as well as TCO); you also get the stable C ABI over Rust’s general difficult to be used in non-Rust projects.

All this to say you have a language that can operate at the system level, type abstractions that go beyond posterchild Haskell, & a proof language to turn those white papers into proof code right in the project. If it didn’t have a special learning curve, it should be a lot more popular in this space.