Yes, PHP has become increasingly powerful over time thanks to numerous adaptations, such as object orientation, standardized access to databases, an integrated web server and improved memory management. PHP interpreters and compilers have further increased the speed of script execution.
But all these improvements cannot hide the fact that in the years since ownCloud was first developed, the requirements regarding performance and scalability have shifted. Meanwhile, Go emerged as a new language that offers significant advantages for modern application development in general and to suit the new ownCloud vision in particular.
ownCloud now uses Go for rewriting its eponymous file platform. Based on our experience with Go in developing ownCloud Infinite Scale, we can confidently share a list of its most important advantages:
Go runs on all operating systems natively. Go’s tool set provides excellent utilities for cross-compiling, enabling the fast and immediate deployment of the application for many different platforms.
Go does not require a script interpreter or a virtual runtime environment. This makes Go as fast as the programming language C, which is normally used for particularly high-performance requirements.
Go offers the possibility to perform several computations in parallel. “This makes it easier for developers to parallelize resource-intensive operations and thus develop a high-performance application,” adds Felix Böhm, CTO at ownCloud.
Go is very easy to learn and has many parallels with the widely used programming language C. Developers can easily get up to speed with Go or switch from their previous tool stack. “It is a lot of fun to program in Go,” emphasizes Alex Unger, Senior Software Developer at ownCloud.
The language was developed by Google teams and first presented in 2009. It is an open-source project and benefits from community involvement. Many tools for cloud-native projects are written in Go, such as the container solutions Docker and Kubernetes. “Go makes ownCloud appealing to a worldwide developer community,” Felix Böhm concludes.
Go has many other benefits, such as automatic memory management and a direct and flexible implementation of object orientation. Go applications are more performant and use significantly less server resources, thus reducing both hardware costs and energy consumption.
The new ownCloud generation, ownCloud Infinite Scale, will go one step further and stores the metadata of the files directly with the data on the storage and therefore no longer requires a database. Thus, ownCloud Infinite Scale is optimized for scale – as in the number of files, users and instances, but also as in file size.
“The developers at ownCloud are enthusiastic about the switch and are thrilled about the ongoing collaboration with the very professional Go community,” summarizes Felix Böhm.