Give us a brief introduction to yourself and Lombiq
Imagine a thriving, inspiring open source tech community with an ever-growing membership. This is what Lombiq aims to be, with a company around it. Much to our delight, Lombiq mostly actually is like that.
Tell us a bit about how the core founders of Lombiq became interested in Orchard
It was a warm summer evening in ancient Greece… Wait, no. It was actually an average autumn day in modern Hungary in 2011. This is when we started to build Orchard Hungary, after getting to know Orchard for a few weeks (“we” were the two later founders of Lombiq, Benedek Farkas and Zoltán Lehóczky, and Tamás Szecskó, our friend from university who didn’t take part in the project later).
It was Zoltán who first started with Orchard after developing PHP for 8 years, and writing a custom MVC framework with a custom CMS, being tired with all of these. He later pulled the two other guys into this beautifully architected CMS, written in our favourite C# language. Actually these were the reason for choosing Orchard: it was C#, built on the MVC pattern, well-written, open source and having a growing community.
An app like Orchard is a huge learning opportunity for developers, it’s like joining an experienced team of a big software project: as novice computer science students Orchard boosted our skills enormously. This was the main factor why we remained Orchard developers.
Give us an insight into the history of Lombiq and how you’ve reached where you are today
In the beginning of 2013, after being in the Orchard community for about 1.5 years it was apparent that if we want to “start something some time”, as we always said, then the “something” was an Orchard company, and “some time” was now. Especially after we as Orchard Hungary got a big training project from the British government agency NICE – we needed to create an official form for our Orchard services, in which we can scale ourselves with the demand.
This is how we founded Lombiq in May 2013, to debut on Orchard Harvest Amsterdam two weeks later. It was a good decision: now 14 engineers are part of the team, we have completed dozens of projects for our clients (who are mostly in Western Europe and North America) and we have several own products.
What was the inspiration behind the creation of DotNest?
We started to build DotNest because we felt that due to recent improvements to Orchard (all the multi-tenancy enhancements and fixes 1.8 brought) if it’s not us who creates an Orchard SaaS, then others will, it seemed a so obvious next step. Furthermore having a hosted Orchard solution was a very old idea that we wanted to eventually realize, so the timing seemed right.
If you had to describe your target market, what would it be?
It’s software developers who want to quickly and effortlessly spin up Orchard websites for their clients, without having to care about hosting and technical maintenance.
Orchard is a very flexible CMS, even from a user’s perspective, without server-side coding: we build on this, and by enabling unconstrained client-side customization (you can write themes for your DotNest sites) the aim is that you should be able to host a big part of Orchard sites on DotNest. We’re not quite there yet (a lot of modules are needed for common scenarios for example), but this seems possible to achieve.
Introduce us to the business model behind DotNest
We didn’t start DotNest with a business plan or some specific aim, but rather because we wanted to build it. Well, classic character flaw of developers… But not long after launch we added the first paid premium feature, the ability to use custom domains (as opposed to the default example.dotnest.com subdomain) with your site. More premium features will come too.
As it later turned out, we also learned a lot about Orchard DevOps too, which resulted in a lot of precious know-how and the Hosting Suite being born. The Hosting Suite is partially open source, partially proprietary – one of the licensees is Team Survive, created by Philip Senechal.
What are your goals with regards to shaping peoples experiences with Orchard?
With DotNest we want to enable people to start with Orchard super easily, so they can get to know the system gradually, without the need to fire up Visual Studio or deploy to Azure first. Even simpler than creating a DotNest site is to go on an Orchard test drive with Try Orchard! Now Try Orchard! is actually utilizing DotNest as a platform, since it maintains periodically re-installed DotNest demo sites.
Secondly we want to prove that Orchard is powerful enough to allow you to build websites with it for most scenarios without having to do server-side coding. This vision needs a lot of work still, but with the Media Theme concept we proved that you can enable people to write Orchard themes and deploy them from source control without ever touching the server-side.
Thirdly there should be a framework for operating enterprise-level Orchard apps where every piece of the development experience, deployment and hosting work together in harmony like the musicians of a symphonic orchestra. This would be the Hosting Suite.
Give us some insights into your development experiences and the technology stack behind DotNest
DotNest runs on Azure Web Apps and uses Azure SQL as well as Blob Storage for Media storage. We monitor the app with Azure Application Insights, what owners can do with their own sites too. What’s more, DotNest is also available in the Microsoft Azure Marketplace. So DotNest is very Azure-integrated!
Even in the early phase during development it was apparent that we need some new tool to manage a potentially very large number of Orchard sites, even though these will be tenants of a multi-tenant Orchard app: you can’t just run content migrations or apply config changes by hand on hundreds of sites. This is why we developed the mentioned Hosting Suite.
To enable complete theming of sites without allowing people to run server-side code we created the mentioned Media Theme module and also brought Liquid templates to Orchard.
Furthermore we’ve made existing open source modules available on DotNest sites: apart from some of our own modules we added Nicholas Mayne’s Forum module, the Onestop SEO module, and we also have plans on adding the Associativy knowledge graph platform. For themes we reached out to two of the best developers of Orchard themes and thus brought in several themes from BindTuning and Philip Senechal. We’ll add more modules and themes in the future according the demand.
By the way most of our team worked on DotNest for some time, especially because every new team member’s first tasks involve something with DotNest.
Was there any development challenges that you encountered and if so how did you overcome them?
There were a lot of challenges but one easily forgets most of them. Most of the challenges we faced were related to operations, but those we solved with the Hosting Suite that we already mentioned here too many times.
It was also non-trivial to make the Combinator module (that automagically bundles and minifies scripts and stylesheets) work well in such scale: since we don’t want to force users to think about stuff like CSS bundling Combinator should work seamlessly. Now it mostly is, but that needed a lot of tweaks and testing. And DotNest brought one multi tenancy-focused feature to Combinator, called resource sharing: this means that when you e.g. open an admin page on your site and Combinator processes stylesheets then later everybody else hitting the same page on their own site will get the already processes resources. All in all static resource delivery is a feature of DotNest that was surprisingly hard to get right but it works best if nobody notices it exists.
Apart from those since we all know that there is no Orchard-based project without new bugs discovered – we identified and fixed a lot of Orchard bugs.
Given that DotNest is one unique Orchard instance, how have you found the performance of the site?
We’ve paid close attention to performance and fixed bottlenecks (mostly in Orchard) when we discovered them. So the sites happily run on Azure S2 instances (2 CPU cores, 3.5GB RAM), using a fraction of server resources; so there’s still room to grow with these server specs.
There is a caching reverse proxy (an Azure Web Role, what we call Request Router as part of the Hosting Suite) sitting in front of all DotNest sites. This proxy provides output caching, but does it by communicating with the sites: so just as with the Output Cache module if you change content the change will be immediately visible by evicting any cache entries. Now if a request hits the cache it will respond immediately, so what you see is just the network latency between you and the East US Azure datacentre: from Hungary this is 120ms.
DotNest sites have the mentioned Combinator module enabled and configured, so all stylesheets and script files are served bundled and optionally minified, as well as from a cookie-less domain.
All this results in a pretty good YSlow score, though there is still a lot of room for improvement.
How do you envision the long-term future of DotNest?
This year we’ll add some more modules that are of general interest, as well as we’ll improve Media Theme’s Liquid markup templating so it can do anything you can imagine about templating. With these and the coming features of Orchard 1.10 DotNest sites will be awesome we think, and at the point where you’ll think twice before deploying Orchard sites yourself. Then we’ll ask you whether you want to move Show Orchard to DotNest, OK?
Thanks for taking the time to answer all of my questions, this is the last one, I promise. What’s the most bizarre request that you’ve had from a client?
One of the perks of Lombiq is that our clients are mostly developers themselves. So maybe the most curious thing is when somebody reaches out to us who doesn’t already use Orchard terms.