Mainflux software is open-source and patent-free, published under very liberal Apache-2.0 License - meaning that you can use it in your commercial products without any material compensation (for free :)).
You can even close-source that code or sensitive parts of your proprietary code, and you can resell it.
Apache-2.0 License is most used today in enterprise open-source. If you want to deploy Mainflux IoT cloud yourself and you do not need our help, then there is absolutely no cost for using the Mainflux IoT Platform.
Mainflux Labs company was formed around its open-source IoT Platform published under a very liberal Apache -2.0 license which means that it can be used in commercial products without any financial obligations to Mainflux Labs.
If the business, government, education entity or individual can deploy Mainflux IoT Platform without our help and professional services, there is no cost for using it.
Mainflux Lab’s business model is based on the revenue that comes from several sources:
We are often asked why we chose Go programming language to create the Mainflux open-source IoT Platform.
Go is open-source, a statically typed, compiled programming language designed at Google by Robert Griesemer, Rob Pike, and Ken Thompson. Due to its comprehensive advantages, many companies are actually using Go for their services, including Netflix, Uber, Google, Slack, SpaceX, Dropbox, Adobe, BBC, IBM, Intel, Docker.
First, Go is fast. It runs straight on the underlying hardware because it is compiled directly to the machine code and not interpreted. Processors understand binaries. When applications are built-in Java or other VM languages, the first human-readable code must be compiled to byte code for JVM or other virtual machines. Virtual Machines then has to interpret those bytecodes and convert them in binaries that processors can understand.
Go, like C/C++ languages, does not execute on the virtual machine, which eliminates one step from the execution cycle and increases the performance. On the other hand, while Go has efficiency as C/C++, unlike it, Go has simple and clean syntax like Python and Ruby which makes its code also easy to maintain and to modify.
Having a central role in the Internet of Things architecture, IoT platforms must provide a full-scale of different functionalities, services, and capabilities that are essential for any kind of sustainable IoT solution due to the massive number of connected devices and the enormous quantity of data generated by them.
The crucial is high-concurrency, the capability of dealing with multiple processes simultaneously and effectively. Most of the modern programming languages like Python, Java are from the ’90s single-threaded environment and are not very efficient.
For example, creating a new thread in Java consumes approximately 1MB of the memory heap size. With spinning thousands of threads, is not memory efficient - they will put an enormous load on the heap and will cause shut down due to out of memory.
Go supports concurrency at the language level. Released in 2009 when multi-core processors were already on the market, Go is built with keeping concurrency in mind. Instead of threads, Go has routines that are lightweight, cheap and take less memory than usual threads of execution. Go routine consumes around 2KB memory from the heap, meaning you can spin millions of goroutines at any time.
In the context of the Mainflux IoT Platform which is based on a set of scalable containerized microservices, the whole binary can be packed in less than 5MB container per microservice.
Go compiles well on many operating systems and is already used for different platforms, Windows, Linux, Unix and mobile devices, which makes it cross-platform.
Go has an inbuilt garbage collector (improves the program performance with automated management and utilization of the memory) which makes concurrency more efficient.
And finally, Go is open-source and empowered by the open-source community. All codes and libraries built to solve problems are its part providing excellent tools that are shared.
It does include hosting costs, but the price can go up from $500 to whatever is the system demand, so the actual needs must be analyzed for the final offer.
Regarding the support plans, they are not hosting related, but Mainflux related - helping with Mainflux features, customizations, debugging, tracing and log analysis, and so on. .
4 core CPU, 64 bit
32 GB RAM
256 GB HDD
CentOS or Debian, while deployment of Mainflux on Windows systems (Windows Server 2016, Windows Server 2019)
is in experimental phase.
Angular 8 is used for development of Mainflux UI.
There is an HTTP API for things provisioning/management. Depending on your needs or use case, you can choose multiple protocols for messaging HTTP, WS, MQTT or CoAP.
The device will send data to “Channels” for example via MQTT, those messages can be stored in Database (Mainflux support multiple DB’s for message writers).
NATS aims to be a high-performance message broker, it is designed for massive load and scalability.
You can check the NATS documentation for more info.