m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m # What is Bee ? - Hi, welcome to this new episode of Open Sourced Series - I am Thibault Martinez, Software engineer at the IOTA Foundation and I'm very happy to introduce bee today - As you may know, Chrysalis is the biggest update to the IOTA protocol so far and bee is a major component of it - So what is Bee exactly ? - Bee is part of the foundation's effort to move to the Rust langage - Most of our new projects are already being written in Rust: our new Node implementation, our permanode solution, IOTA Streams, IOTA identity, our wallet abstraction, and stronghold are some examples - Bee is then a completely new way for the community to interract with the IOTA protocol - To developers we offer a unified approach and clear guidance on how to build on top of IOTA by providing safe, audited and easy to use fundamental blocks - To node operators, we offer a brand new node implementation # Why a second node implementation ? - So, why a second node implementation ? - At the moment, IOTA networks rely on the Hornet project, a community driven node implementation written in the go langage - While the Hornet team has been doing an amazing work with this node, this can still be seen as a single point of failure in the network - If a major issue was found on the node, this could result in general outage of the network. - By having a second node implementation by a different team, in a different langage, we drastically reduce this risk - Having two nodes also helps improving the quality of both implementations by mutual error discovery, for example hornet discovering issues in bee and bee discovering issues in hornet. - One could argue that it's not absolutely mandatory to have two nodes right now because the coordinator is here to prevent major issues happening to the ledger state. - But we are already preparing for Coordicide where errors without a coordinator could have huge consequences - Having two nodes implementations overall gives more confidence to all involved parties - Obviously, the bee node comes with feature parity with the hornet node so that operating both nodes is done in a similar way # Plans for Coordicide - Currently working on Chrysalis Part 2 - Worked with the experience team then just released the alpha version -> fixing issues - After the release, maintenance mode on cpt2 then switch to coordicide - We are already coordinating with Research department - Waiting for Nectar to be release, we can start some components - We can keep the bee architecture # Team org - If you are interested in either IOTA or Rust, I invite you to join us on our Discord server; - The bee team is very active, working there on a daily basis; - Everything is very transparent and we try to answer community questions as much as possible; - We also do Weekly Youtube livestream and we will soon do impromptu livestreams on Discord; - We publish weekly digests and Meeting reports so that everyone can keep track of the progress; - Our issues and scrum kanban board are available on our repository if you want to contribute; # Rust ## Advantages Why was Rust chosen for the bee project ? Rust provides a lot of advantages that helps making the node safer and more efficient. - **Rust is very fast**, arguably the fastest portable general-purpose programming langage - **It gives you a lot of guarantees at compilation time**, meaning that it's a bit more annoying to make compile but when it does, you know it will run just fine - **Rust is memory-safe**. As an example Microsoft and Google reported that 70% of their software crashes were memory-relates. This is a whole range of errors that don't exist in safe Rust. - **Rust has a very powerful and strict type system** enforcing that APIs you write are being correctly used. - It has a **strong ecosystem** of battle-tested crates and a the dependency management tool makes development really convenient - **Rust doesn't have garbage collection**, this is very useful when you want your node to be responsive and your network to be low-latency - **Forces developers to acknowledge and act on errors**, unlike other langages. Rust won't let you easily get away with unhandled errors. - **It has a powerful trait system and generics** that allows for building modular architectures - **Integrated test, benchmarking and documentation tools** - **Rust's RFC process and monthly release cycle** make it really easy for everyone to improve the langage The result of these advantages is that: - **Rust has been the most liked programming langaged for the past 5th years on the Stack Overflow Developers Survey** - More and more companies start either completely building on Rust, or provide bindings or client libraries or even investing to improve the langage At the bee team we are very happy working with Rust on a daily basis as we think it makes us better programmers. ## Disadvantages - long complilation times but constantly being improved - getting async code right is hard - immaturity of some dependencies (MQTT, rust-libp2p, ...) - steep learning curve - verbosity (type inception) - Rust requires more time to learn and experts are rarer - Rust is still a new language and 'best practice' design patterns are still being explored