Libraries: Are there libraries available for things we need and what are they like?.Recruitment - Availability: How many people are looking for roles in that language.Recruitment - Popularity: How many developers actually want to use that language.Recruitment - Cost: How much it'll cost the business (job ads, admin, interviews, etc).Training/adoption: How easy the language is to pick up for various developers.Dev time: How much development process we're able to make in the time we have.Stability: How stable the Synergy 3 service is likely to be (i.e.So, those numbers are maybe not useful for making decisions in other projects or with other teams, but it should give you some insight into how we made the decision for Synergy. A lot of the scoring is very subjective, team-specific, and project-specific. Here's a few definitions of what we mean in our decision making table. The point wasn't to create a brilliant equation to find the perfect choice, but simply to have some way of expressing what the out-of-five scores meant overall (which are arbitrary anyway). The sum is then expressed as a fraction of 160 (which is basically a magic number). So, the further down the list, the less important an aspect is in terms of it being a deciding factor. The formula and weighting are somewhat arbitrary, but essentially the score on each row is multiplied by the weight in a hidden column, which is then summed at the bottom. Nonetheless, we had a meeting with the dev team, and came up with a spreadsheet-matrix. Rust and Go are very different languages, so they're hard to compare. The team took some time to develop a few small demo projects in both Rust and Go to get a feel for the languages. Our journey of making the decisionĪfter deciding that the service needs to be written in something with better performance than Node.js, we eventually settled on Rust and Go as possible options (excluding C++ early on based on our lessons from Synergy 2). I'll discuss the service more later on in this article. The service provides auto-discovery (though mDNS), keeps the configuration synchronized between all computers, and will provide other features in future such as 1-click auto update for all computers. and, the Node.js service (a temporary prototype, written in TypeScript).the Electron GUI (for configuration, written in JavaScript, with React),.the C++ Core (which does the actual mouse and keyboard sharing),.This article is a bit technical, so strap in. If you just want to laugh at funny stuff, scroll to the bottom of this article. Incidentally, Rust is a bit more green than other languages, and the Rust community is the most welcoming to trans people (thinking about our hiring strategy). We're choosing Rust mainly for it's memory safety benefits. We're not choosing Rust just because it's Stack Overflow’s most loved language for four years in a row, though most who made the leap to Rust have fallen in love and stayed. TL DR: We decided to go with □ Rust (not Go or C++) for the Synergy 3 background service (currently written in Node.js), because we believe it will give our customers a better experience.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |