If you have subscribed to a newsletter of another startup you have very likely received an email with a summary about the year 2019. It was all exciting and awesome. New features have been developed, people have been hired and sales have gone up. But honestly this is boring. There are so many challenges you have to face as a new company and in this article I would like to talk about ours.
It starts with Squidex being Open Source. Don't take me wrong, I love Open Source projects and I think it was a good decision. There is no better way to showcase the quality of your product and to gain trust and it is wonderful when other people share your vision and contribute to the project. But there are also major challenges, from the technical and business perspective.
Let's talk about coding first. Software as a Service (SaaS) is an extremely successful business model for many small and big startups and companies. The idea is that you buy a license to use the software which is usually operated and hosted by the same company that also builds it. We use this model for the Squidex Cloud and so do most of our competitors. I think one important factor why this model is so successful is that your source code can be “crap”. When you start a project you choose a cloud provider and then you start hacking and you focus on getting things done just to acquire your first customers. As long as you can generate value for your customers, your solution works and the performance is not too bad, nobody cares about test coverage, code quality, performance, maintainability and the overall software architecture. It is more important that the user interface and user experience is good and that everything looks nice, modern and shiny because a good user interface communicates that you care about the product and your users will assume that when the UI is great everything else is state of the art as well. But your users cannot get an insight about the quality and they have to trust you. If your startup is funded or if you are profitable you can integrate third party cloud services into your product and with relatively low effort you can even provide more value to your customer. It does not matter if your setup with all these external services is very complicated now, because it is very likely that you will never deploy it again.
In the Open Source world this is different. Everybody can read your code and you have to focus on code quality from day one. Your software is also installed in different environments like Linux, Windows, MacOS, Docker and Kubernetes. So it must be easy to install. Furthermore you don’t want your users to install dozens of other services. Therefore we ended up building a custom full text solution based on Lucene, instead of just using ElasticSearch.
But the combination of Open Source and SaaS also has advantages, because you are running an instance of your Software in production as well and you can feel all the pain your users might have. This is called dogfooding and in my opinion it is essential for the success of a (software) product. Furthermore the Open Source principle has helped us to establish cooperation with big companies that use Squidex for their internal products. Some of them also pay and support as to integrate new features into Squidex. An example is the workflow system that has been integrated into Squidex in 2019 and was built to help organizations with dozens of content editors to implement their processes and business rules.
But the combination of Open Source and SaaS also has business challenges, especially if you want to bootstrap your company as we do:
If you want to use Squidex you have two options. You can install it on your own or you can use our cloud service, where you pay as per your subscription. The product is similar, but you have a few more options than when you use the Open Source version. So why people decide to use the Open Source version instead of the cloud?
What can we do to make the cloud version more attractive? Our plan is that we will think about premium features that are only available for the cloud version and for a paid on-premise solutions. We will use features that are easy to implement on top of Squidex, and do not need tight coupling with other modules, so that we can keep the differences to the cloud version as small as possible. An example could be a global search that will use ElasticSearch to search for content across all apps and schemas. Furthermore we think about looking for investors. So far we tried to bootstrap our company and we like the idea to be free from the pressure that is coming from external shareholders, but we might give the idea to have a seed investment a chance in 2020.
There is an additional challenge we would like to talk about:
In 2018 the General Data Protection Regulation (GDPR) has been introduced in Europe. More and more companies are very sensitive about data privacy. Especially bigger organizations take it very seriously. They also store very sensitive and business critical information in Squidex and want to have full control of their data. Squidex is like a database with additional services and a user interface on top of it and many companies would never use a SaaS model for their database. It is all about security and performance and you want to have your database as close to your servers as possible. If you use a SQL database server you often do not want to have all the hustle around maintenance and configuration and therefore many developers choose a cloud offer from Amazon or Google or Microsoft or something like MongoDB Atlas.
From the product side this will be one of our main challenges and we will see how we can provide you a solution that gives you more control over the system, hosting and data where we will take care about the boring side such as maintenance and availability for our customers.
Besides all these challenges we are very proud of what we have achieved in 2019. I think from the product side we can compete with many big competitors already and we will work hard to be even better. We have also established a software architecture that is stable enough and easy to change and extend so that we can build new features very efficiently. Announcing new beta versions is a sign that you have failed and not a success in my opinion.