Open Source Makes Great Source
By Ellice McleanIntroduction
A software is said to be Open source means the source code of that software is available. It means the developers have decided to share the underlying program with the rest of the world.
Critical pieces of the internet are open source. In fact, if it was not for open source, we would not have the internet as it is today. For instance,
- The servers that power most of the websites is based on Linux, an open source operating system based on Unix
- Most operating systems today are based on Linux, such as MacOS, iOS (iPhone / iPad) and Android
- The encryption technology used by most of the planet is OpenSSL, a solid open source encryption program
- Most webservers online are based on one of two open source servers (Apache or Nginx) -- Note that our application has its own server, see below.
- Most websites use an open source database PostGreSQL / MariaDB
We are part of the movement
As an organization, we are using almost exclusively open source tools for our work. The website you are browsing, the applications, graphics, editing, all done on open source tools.
Part of our contribution, is that we help fix bugs, improve documentation and so on.
Open source does not mean you take for free, it means you are part of the development, regardless of what role you take on. There is always room to contribute.
Open Source is not free
A common misconception is that Open Source is easy and free.
It is the opposite. It can actually be more expensive and difficult. But it is defnitely faster (most of the time).
Here is why: We don't need to reinvent the wheel. Some foundational tools exist and have been ironed out over the course of many years (often decades). However, using them requires more technical skill as different tools are built with different technologies and have different standards.
Documentation is often not up to date (as it depends on community members). You need to therefore have the skill to dig deeper when something goes wrong.
To have a complete production-ready system with open source you need engineers and leadership with much higher technical skills
But .. it is more secure
With open source you have access to most underlying blocks yourself and can validate if the tools used are secure. Many of the tools below have been thoroughly reviewed and tested for security.
Read this warning from the NSA about recent vulnerabilities in Windows. As the source code is not available, hackers discover vulnerabilities before anyone else by trial and error
Our Stack
Ok, so here are the main tools we use. We likely missed a few things along the way, sorry if you are the developers. We'll be updating as we remember things :)
- Ubuntu (Linux) - Server operating system
- OpenSSL - For security
- PostGreSQL / Citus - High-performance scalable distributed database
- Redis - Pub/Sub and in-memory storage
- TensorFlow - Google's AI engine, baked right into the application
- ReactJS - Display Engine for our web app
- ReactNative - Framework for our mobile apps
- Docker - For containers of our application
OneOffice does not use external services. Even AI is built-in. This makes for higher security and resilience. Also making it suitable for on-premises deployment
100% Core Code
The core code has been painstainkingly built from scratch:
- Web server - We do not use a web proxy like NGinx or Apache, we handle communication directly with the end user / application
- SSL / Encryption - We generate all https SSL certificates ourselves, right from within the application
- Services - The database drivers are 100% written by us and optimized for our application. This includes PostGreSQL, Redis and Anti-Virus
- Anti-Spam - We built an AI model with over 2M parameters, trained on over 500k emails to get one of the most reliable anti-spam engines in the industry. A typical email gets classified in under 5ms!
- Email - Our own IMAP and SMTP servers, fully optimized to handle requests at scale. We benchmarked with MS Exchange and we are 10-20x faster. A typical server can handle 500M emails a day!
- Optimized server - User requests handled real-time, giving users a much smoother experience. Real-time updates are sent when something changes, no need to refresh
- Smart apps - The web and mobile applications are designed to handle a lot of requests locally. They even includes NLP (natural language processing) to handle user commands on the fly, without having to query the server in many cases
Typical applications need 5 - 10 database hits per request. We have optimized OneOffice to have an average of 2 database hits per request. This results in faster user responses and reduced hardware resources
Conclusion
Getting to market faster and better is a key component of any successful product. OneOffice directly competes (and in some cases surpasses) the major platforms of today. We can focus on our core features and leave some of the nuts and bolts to the community.
This way, we all leverage each other to get a better and more secure product.
Welcome to the age of technology sharing.