Hi #Rust developers! My Calendar team at @protonprivacy is #hiring! We are looking to fill several positions at our offices in #Barcelona, #Geneva, and #london

Job Description: https://grnh.se/op1xycx2teu

#Proton is office-first, with people coming in 3 days a week. Lunch is provided for you!

Please boost if you know a great Rust developer! If **I know you, please reach out directly** and I can refer you internally!

#rustlang #privacy #protoncalendar #protonmail #protonvpn #FediHire

Rust Engineer

Barcelona; Geneva; London;

@mgeisler @protonprivacy would be nice to get a job coding rust, I'm USA tho so cant with ya, tho I'm curious what parts y'all use rust for?

@Rin3d @protonprivacy We use it as the cross-platform foundation for our apps (and I'm told the backend and storage teams are also looking into using Rust).

So basically, we write our business logic in Rust and compile it to #WebAssembly (#Wasm) for the web, and to a shared object for loading into #Kotlin for #Android and a static library for use in #Swift for #iOS. We also have #Windows desktop clients to eventually support.

It's basically the age-old dream of write once, run everywhere 😄

@Rin3d @protonprivacy See https://proton.me/blog/authenticator-rust for a good introduction to how the new authenticator app uses Rust. The other apps will function similarly — the newly released Mail apps for Android and iOS are examples as well: https://proton.me/blog/new-mail-apps. The blog post says that the apps now share 80% of the code across the platforms.
How Rust powers Proton Authenticator | Proton

To build a secure 2FA app for all major devices, Proton turned to Rust. Carlos Quintana explains why we chose Rust and why we'll likely use it more in the future.

Proton

@mgeisler @protonprivacy interesting, do y'all have issues with wasm limitations? In #bevyengine we have issues on the file system and async side of things.

Also are y'all thinking to use tauri for the windows desktop since you already have the wasm target?

@Rin3d @protonprivacy For Mail, we're not yet using Wasm: the web page you see on mail.proton.me is a TypeScript app from what I understand: https://github.com/ProtonMail/WebClients.

But we're working on other web apps that use Rust with Wasm. We pass events over a narrow FFI bridge using #UniFFI and that works just fine, even with async Rust. Side-effects like writing to local storage is then handled on the browser side, so the app is ultimately a mix of TypeScript and Rust.

The current desktop apps are just Electron wrappers around a web view. I'm not a fan personally: I was intrigued that I could install a Mail app on my Linux deskop, but then I saw that it's just a "weird" browser that doesn't know of the scaling I have configured in my regular browser. So what's the point? 😄

I'm not sure what the plans are for the next generation desktop apps, but I hope we do something more than just ship a web view.

For #macOS, I'm told that an #iOS app can be made to work on both platforms? I imagine one will need to carefully design things to adapt to the much larger screen, but it sounds cool overall if it's possible to target both platforms with ~1.5 the effort.
@mgeisler @Rin3d @protonprivacy That is surprising. For E2EE, it would make potential timing attacks and some forms of side-channel leaks difficult

@tris @Rin3d @protonprivacy Ah, you're talking about doing the crypto in Wasm instead of using something like https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API ?

I don't actually know that detail: it could be that our Wasm code calls back out to the browser for a more native implementation of the crypto primitives.

Web Crypto API - Web APIs | MDN

The Web Crypto API is an interface allowing a script to use cryptographic primitives in order to build systems using cryptography.

MDN Web Docs
WebClients/packages/crypto/lib/subtle at main · ProtonMail/WebClients

Monorepo hosting the proton web clients. Contribute to ProtonMail/WebClients development by creating an account on GitHub.

GitHub

@mgeisler Given that the backend(s) of the Proton apps are closed source, can you shed any light on the languages or frameworks they’re built with?

If I’m not mistaken, I recall seeing a few people wearing #Proton shirts at #SymfonyCon Vienna last year. So I suppose at least some parts are written with #Symfony and #PHP? :)

@DominicLuidold Yes, that is correct! You can even see it on some of our job postings, such as this one: https://grnh.se/rbyfwf02teu.

I joined very recently and from what I hear, #PHP has been with Proton since the very beginning. The backend team is experimenting with adding some Rust here and there.

Backend Engineer (B2B)

Barcelona; Taipei; Geneva;