I am lucky enough to get to know outstanding people such as Sipke Schoorstra. He is a great member of the C# / Dotnet community and very passionate about open-source. Since I started a new series in the German "dotnet pro" magazine about up-and-coming dotnet open-source project (i.e., hidden gems - projects should have less than 1k stars, but worth knowing) I thought his project "ELSA" fully qualifies. Its a great framework for writing workflows.
In the magazine the interview has been translated to German. I'll post the original below.
1. Can you tell me a bit about your background (e.g., current position)?
SS: I still fondly remember my very first computer I got for Christmas: a Nintendo Entertainment System. It was loaded with games, some of my favorites being Mario Bros, Zelda and Battle Of Olympus. I already knew what I wanted to be when I grew up: I wanted to create my own games. So, I started saving up for my first PC, a Pentium 100 with Klik & Play. I got obsessed with scripting, and soon learned about Macromedia Director and started digging deep into its Lingo scripting language. Before long, I got a job offer by a company in Amsterdam to join their team. I accepted their offer and dropped out of college. This was my very first real job as a developer. A few years later, I started my own software consultancy gig with a friend who shared my passion for video games. We figured we’d start with earning loads of money first, and use it to launch our own game development firm. That hasn’t happened yet, and I’m currently offering my services as a freelance software developer. My current day-today work consists of working on a new microservices-based platform using ASP.NET Core, Kubernetes, Azure and a myriad of other tools and frameworks for a well-known media company in the Netherlands where we are working on Videoland, an on-demand video streaming service. The team I’m part of focuses on the onboarding user journey, including signup, sign in, subscriptions & billing. On the side, I co-founded Scubaya BV, which is a small startup consisting of two partners and myself. We are working on a new online service that will hopefully launch sometime around July next year.
2. Why did you start ELSA Workflows?
SS: There are a number of reasons I started Elsa Workflows. One of the previous projects I worked on, the customer wanted its platform to provide its power users with a workflow engine + web-based visual designer. Due to specific requirements regarding licensing, we could not leverage one of the existing workflow engines out there, such as Workflow Engine. Whatever engine we’d pick, the license had to meet certain requirements. Unfortunately, we were unable to find a good solution. And to make matters worse, we did not have enough time to build it ourselves. So, we decided to go with Windows Workflow Foundation for the MVP, accepting that the users would have to install a little desktop application that would host the Windows Workflow Foundation designer control.
Although it worked, I couldn’t stop thinking about how awesome the web-based workflow designer could have been for this project. And other projects as well. In fact, any system with a back-end might benefit from having a workflow engine that allows users to automate tasks and respond to events happening within the system, without having to drop down into the source code of the application. Orchard Core, a modular, open source framework + CMS, is a great example. It ships with a neat Workflows module that enables CMS users to implement workflows ranging from simple contact form submissions to elaborate long-running content approval processes.
If only I could reuse that module in other applications, without having to take a dependency on the rest of Orchard…
Then one day, I just got started. I had no actual use case. All I had was a burning desire to build a reusable set of class libraries that developers could use to drop into their own projects. It would have served me well in the past, and I know it will serve me well in the future.
3. What other (open source) projects do you contribute to and why?
SS: I’ve contributed a lot to the Orchard project in the past, starting around 2011. At the time, there were a number of customers for whom I created & maintained a custom-built CMS with ASP.NET WebForms I the past. However, maintaining such systems by yourself is unsustainable, so I finally decided to take another look at what’s out there in terms of open source CMSs. A year before that I completed a project built with MVC, and I never wanted to go back to WebForms. One of my requirements was that whatever CMS I’d find, it had to be based on MVC instead of WebForms. I still vividly remember the moment I stumbled upon the Orchard Project. It was started by a small group within the ASP.NET team, who made it open source and handed it over to the open source community under the Outercurve Foundation. The learning curve was brutal, with little documentation and a few blog posts here and there. At some point I got stuck and was ready to give up and settle with Umbraco. But I was in love with Orchard’s architecture & elegance, so I kept pushing through. Ultimately, I discovered the way and started blogging about all that I learned. In response to which I got hired by Onestop Internet, who was re-building their e-commerce platform using Orchard. Being hired as an Orchard consultant was one of the best things that happened to me. It enabled me to learn even more about Orchard and make significant contributions to the project, such as the Layouts & Dynamic Forms module.
4. What is your vision for ELSA?
SS: My vision for Elsa Workflows is for it to be an open-source, reusable set of building blocks that allows software developers to empower their own applications with workflow capabilities in the simplest way possible with maximum flexibility & extensibility. Workflows can be implemented in code or visually with the web based designer.
There are two models for executing workflows:
- In-process: workflows are triggered & executed within the application process.
- Out-of-process: workflows are hosted by an external process, and applications interact with the workflow host through HTTP & AMQP. This model allows any application to leverage a workflow engine, regardless of the stack being used (e.g. PHP, Ruby On Rails, etc.)
5. What feature is from your perspective missing in C# / .NET?
SS: One feature I’m missing in.NET Core is a proper workflows library, like the one we had with Windows Workflow Foundation (WF) in .NET Framework. If I had any say in the matter, I’d be advocating to add something like WF, but with a web-based workflow designer and some C# language features to simplify defining workflows in code. Although attempts are made to port WF to .NET Core, it is proving to be rather complicated for a myriad of reasons.