Panel: Building products on Umbraco
Hear from 3 different product vendors, on how and why they decided to built a product on top of Umbraco, and how the friendly CMS is a friendly platform for both closed source applications, open source ecommerce and agency side projects.
View transcript
VideoDays, WebinarSpots, RawMode, Thomas Madsen-Mygdal, Every, Be kissy, I'm going to sit in this one for my notes, OK? Wow, that's great. So we'll just wait another minute or so before we kick off, but hopefully you've all had a lovely lunch, well-fed, having a good time? Yes? That's what I like to hear. So this is going to be a very informal panel session. So we've got some guys here who build products on Umbraco. So let's just do some quick introductions. So this is Max. Max, tell us a little bit about yourself. Sounds like a dating show. Yeah. Well, my name is Max, and I'm from a company called Media Workers, and we do all kinds of Umbraco things. So how long have you been using Umbraco? I'd say six, seven years. Okay, so a long time. Yeah. So XSLT days, yeah? Yeah, yeah. Oh, yeah. Okay. XSLT for the win. It's all I know. Okay, cool. So... So moving on, we have Rusty in the middle. Rusty, what's your background? My name is Rusty. I've been using Umbraco since probably about 2009. Okay. And started really building packages for it, and probably soon after that, we committed to it as soon as we started. Yeah, we... So, and on the end, we have Theo. Theo, how have you got involved with Umbraco? Yes, I was also in 2009. So I also started with XSLT. And I have been using Umbraco exclusively since. And my agency, GrowCreate, in the UK, we do nothing but Umbraco implementations. Pipeline is the first big comprehensive package that I've built. Okay. I'm here to tell you about it. Cool. So how this is going to work, each of these guys are going to have 10-ish minutes to kind of talk about their product or their kind of package or what they've built on top of Umbraco. Okay. Okay. Very informal. And then we'll take some questions afterwards as a panel. And then I will jump out in the audience and take any questions that you guys have. So, without further ado, I think over to you, Theo. Sorry, Max, even. I'm terrible with names. Or you. Thanks. One slide too far. Well, I'd like to talk about the product that we have built called Collabo, which is a digital workspace or workplace, as we call it. It's for... For lack of a better word, it's an intranet. And as I said before, we've worked with Umbraco for quite a few years. And we have quite a few Umbraco developers. So the reason I don't really know anything about XSLT is because I haven't really been working in Umbraco myself for a long time. I'm what they call... We call a product evangelist. So, you know, something fancy, not really doing any real work. Anyway. Collabo is an intranet. And we started out. We started out basing it on Umbraco. And just to mention a few of the functions in our system. Actually, we ended up having a few customers who wanted an intranet solution on their... Or as part of their Umbraco installation or their Umbraco website. As a lot of you probably know, many people go, well, intranet and intranet. That's basically the same thing. And it makes a lot of sense, or it did back in the days. But what we kind of found out was we needed a lot of social features, a lot of communication features, document management. All kinds of things that a company of 100 plus employees will need. So we made this solution which has some different functions, communication functions, storage functions, knowledge sharing, documents and work groups and so forth. And that's what I'd like to show you today. And before I do that, just a few words about why we chose Umbraco. It's called building products on Umbraco, right? Yeah, exactly. I'll just show you a product. So first of all, we chose Umbraco because we wanted to quickly get to market with a solution. And we had a bunch of money that were burning in our pockets. So we could kind of start out doing something. But if we had to start out doing a whole back-end administration interface... All that kind of foundation of an internet, we would have to use a lot of time doing that. So we chose Umbraco and started out developing on that. And of course, knowing and being as happy about Umbraco as we are, it made a lot of sense. But one of the things was also a business potential. What we saw is there's really not any intranet solutions out there for Umbraco. And there's a hell of a lot of you guys. So... Perhaps we could create a solution that could actually be partner-driven. Kind of like when you buy Ucommerce or Meshello or whatever. That you would have the ability to sell an intranet solution that is an enterprise intranet solution. And frankly, make us some money. And yourself, of course. Yeah, and if you... Do you want a hand? Okay. I use PC. Okay. There you go. Great. Thanks. So this is the front page of our solution. And basically what it is, is... It's inspired from many of the systems that you guys already know, like LinkedIn and Facebook and so on. And this is actually version one. Right now, in the rest of the years, we got a bunch of money from an investor. So we're using some time making version two. But it's basically going to look like this. Anyway, what you see here is kind of the main functions in our system. And first of all, we have, of course, a main menu where you can go to all kinds of things. Your organization, activities and so on. And this is in Danish. So it makes a lot of sense to 10% of you guys. But one of the things that our system does and one of the things that has been like the major assignment for us here is... It works upon the infrastructure of the companies that you work with. So if they have an Active Directory with a lot of users in it, it will automatically have them in this system with all the data from the Active Directory and so on. But now we... In the year we've built this, we've gotten up to 44,000 active users in our system. And I'll just say that a lot of companies don't have all their employees in the Active Directory. So our system can take users from all kinds of sources and data sources and so on and put them into the solution here. Okay. And that's kind of the authentication layer of it. It's a single sign-in system as well and works with ADFS and all those things. Anyway, what it does is when a new employee is put into the Active Directory, they will automatically be logged in here if they open their computer. And one of the things... We have single customers with 1,000 or 2,000 users. And actually, 5,000 I think is the biggest. And one of the issues is finding each other. So we made this little address book or phone book over here. And in the beginning, we kind of took the SharePoint or classic internet solution. Let's just show every employee alphabetically. But in a big company, you just get a lot of people starting with A. And that might not feel very personally for you. So what we did is we made what we call a relevancy system. So right now our system, when you search documents, you search people, or even just... Showing the list of people here. It looks into the system and goes, where are you in the organization? How many groups do you have in common with people? How much do you communicate? And so on and so forth. And it sorts the people by doing that. And what that does is these people that you see here is people you know even in a big organization. But where it becomes a little bit better is that if I search for a person over here, well, then it will find the people who are closest to me. So let's say I'm looking for someone called Martin and there are 50 Martins. Then probably the Martin I'm looking for will be at top of the search result. And even better, if I search for someone with a specific set of skills, because we have a whole skill management system in here as well, well, I'll find the people with that skill that I know. And that breaks down the barriers for contacting that person and so on and so forth. Of course, the system also is responsive, as you saw in the screenshot before. If I click the phone number, if I have an IP telephone system, I'll just call the person. If it's on my phone, I'll call the person and so on. So, sorry, Max, to interject. So how easy is it for you to set this up for your clients or your customers to kind of customize all of this? Yeah, it's quite easy. But one of the reasons it's so easy is it looks more or less like this. You can change the colors. You can add different widgets and so on. But we kind of set a design that should look in a specific way because we're using a lot of the data we're getting right now from our customers to tweak these things so that this is actually a good system for people to understand what they're reading and responding and so on and so forth. So it's kind of like in the good old days when you had a MySpace page and you could change the background and the colors and so on. So semi-customizable. But this element that you see here that says Guten Tag, Henne, and shows the local weather, that's what we call a widget. And widgets are used through an API. So anyone can develop a widget. And that's actually one of the points of this system. Every bigger company who has an internet, for some reason, they see this as business critical. Of course they do. But they have a different budget. They don't just have the marketing budget. Now all of a sudden it's the sales department. It's all kinds of things. And they need different features inside of their internet. And this is what the widgets can do. You can use standard web technology against our APIs. And then you can integrate these different components and blocks that are kind of what's special in the solution for your customer. And hopefully that's where you're going to make some money. And you can have different widgets for different groups of people and so on and so forth. And basically it's kind of like Facebook or whatever. You can see what's happened since then. Since you were here last. And let's say that I want to know why something happened. You see all these little icons here? The colored icons? Those are what we call... Actually, we change what they're called every single day. So let's just call them icons. But we use them as kind of a logo for each group, each department. And that makes it easier when you scroll through here. You can see. This is the running club. Well, if you click that, you'll go into that group. And you'll see only the things that has happened here. So it makes it easier to kind of scroll through and see what's happened and which areas are interesting for you. And when you create anything in the system, everything is from the front end. We don't even show the general users on Braco. They don't go in there. If you want to create something, it's just from the front end. Everything happens from there. And then you have super administrators who go into Braco. And fuck everything up. So what would the super admin set up or do in Braco then? We're trying to minimize it, honestly. We're very happy of using Braco. But we're trying to minimize what they're doing there. It's adding widgets, for example. Adding competency skills. It's a list. And doing the more management things in the system. Creating the organizational structure. Taking ownership of, you know, some... Someone in the organization might create a group and call it management. And then management goes like, that's not management. We're management. And then you have a super administrator taking charge of that group through Braco. So it's got a lot of features and so on. And you see these little numbers that shows there's a new thing here and a new thing there. And all the things, bells and whistles you'd expect from an internet in this scale. And, you know, searching and all kinds of things. But... Normally I use a couple of hours just showing the system to potential customers. One of the things I would like to show, though, is we have a whole document area in the system. Where you can have... These are basically a kind of a wiki structure. Where you kind of put more or less the good old-fashioned standout content. And you can drag files in. You can have a page that just says what are your rules about vacation. Or you can have different rights on these different things. Rights on these different folders in here. And you can give them colors and icons and so on. Again, everything from the front end. And depending on what rights the individual user has. Or maybe has from the Active Directory they're coming from. So basically... We had a lot of headstarts using on Braco for this. We built a hell of a lot of things on top of it. And we're basically not using any of Braco's rendering anymore. For us on Braco is... A CMS. It's the administration database and system behind it. And there are some... We've done many things integrating into on Braco before. There are some pitfalls when you do that. You shouldn't use on Braco just as a relational database. Because of a lot of different things. But we have a lot of features in our system where we need the things on Braco does. For example, if you change a document in here. We want to be able to roll back to an earlier version. We want to be able to find the earlier version of the file. And so on. And on Braco does all those things for us. And it makes sure that we can do all kinds of things quite quickly when our customers need it. Awesome. Anything else you want to show before we move on to Rusty? Not really. If anyone is interested in talking to me about our system, of course, I'd like to show it to you. But this is just the short and sweet. Okay. Cool. So once I switch over to Rusty. I have the slides. Yeah. Okay. Take it away, Rusty. So I run a. Is this thing on? All right. I'm currently the project lead for Marcello, which is a package for Braco. As I said in the introduction, I started using Braco in around 2009 when I was running a small design studio. We pretty quickly went totally on Braco with the experience. We had a lot of e-commerce customers that we could just never quite get to run. We had really weird requirements for some of these e-commerce customers. So we never really did find a good package that would fit really well with the client needs. So right around 2013, we teamed up with ProWorks, which is another company in the United States. And we started working on the Marcello project. And one of the things that we really wanted to do is make sure that it was fully open source. Because that was another thing that we felt that the Braco community was kind of missing is an open source e-commerce solution. Over the past three years, and I guess in the last two years, I've been pretty much working exclusively on a Marcello. But over the past three years, the organizational structure of Marcello has changed. So Mindfly is actually sold a couple times. It's now owned by Scandia. I kind of went with the Marcello project. And now I've settled with, not settled, but I've partnered with Lee Messenger in the UK. And we have a little entity called Across the Pond that we're managing the project with. I think that this partnership has actually really turned out to be a good thing for the project. Because Lee himself, he owns three or four, maybe five stores, online stores. That he operates and manages. So he gets the benefit of using Marcello and kind of helping direct the project based on some of his needs. I get the benefit, because he's a pretty technical guy, of he wants to do such and such stuff. And it's kind of forcing some of the development in the core to say, hey look, we need to be able to provide these sorts of solutions. And then it's also really good from my perspective. Rather than having a whole bunch of demo sites. Running out there where you're constantly just using demo products or four or five orders or something. To be able to look at an actual store implementation. And so I'll take three, four weeks. Be working on that project. Then jump back into the core development. And it's really been a good back and forth. So I'm not being kind of siloed into just developing the project. I'm not going to go into too much detail. I'm going to go through a full on Marcello demo. Because everybody's seen the store checkout. And kind of guess what the features are in the back office. So we only have ten minutes anyway. But I'm going to show a couple of quick screen shots of implementations that are out there that we didn't do. I could nowhere near design this well. So this one I thought was pretty cool. Because he did quite a bit of customization. And this is pretty early on. So he got into the core APIs. And he's actually looked at the code obviously. Because there wasn't that much documentation. So he's figured a lot of stuff out. And that's really started to show some of the things that we're focusing on. It's the open source aspect. We want to make sure the community is getting involved. That's one of the things that we're kind of measuring for success. Another one. I just love this one. The design of it was just, I don't know, cool. Kind of funky. Anyway. When it installs. It does have a fairly large back office section. So it does kind of has everything that you kind of expect from an e-commerce platform. You can manage products. You can view orders. You can fulfill sales. Create shipments. Split shipments. Track inventory. Do some basic reporting. But the really cool thing about it is most of it, all of it is pretty much resolvable. So everything that has a provider in the back end. We've really tried to set up a set of base classes at least. Or interfaces that you can implement. And then you can customize it. And those get resolved in. And you can use your own. Or override what we have. This is a quick view of the back office section. So it looks like in quickly just flick back maybe. It looks like you could organize and maintain quite a lot in Mercello. You can, yes. Report in. There you go. So yeah. You can manage your. You can manage your whole shop. Just entirely in the back office. And then that's just the top level of the tree. So you can go. You can add collections. Kind of whatever you want. You can manage your customers. Very, very nice. Yep. So one of the things when you're running a project like this. So we try to do. Because it is open source. It's free. And we put a lot of effort. And a lot of money into it. So we want to kind of track. If we're expending the resources in a way that makes sense. To keep going. Right? So one of the things that we know with a project like this. Is it's getting people in the community involved. And like how do we measure that? So I mean early on it was just like. All right. Is anybody downloading it? How many installs are we getting? And we've consistently seen that go up. So it's no surprise when you look at the end of a month. That yeah we have incrementally more. Yep. Installs and downloads. But the really cool thing now. That I'm really starting to focus on. Is the interaction and the forum. And the community. And the issue tracker. And the content that they're actually putting in there. It's not just how do I display something. It's more complex topics. I suppose e-commerce. So obviously Micello was started as a U.S. project. But commerce is dealt in various different ways around the world. So I presume this is the amount of kind of feedback. And pull requests. And the contributions that you're getting. Exactly. And actually the next slide is probably a really great example of that. So in the U.S. when we're doing shipping. I mean when you're thinking about breaking things down. Lots of times we're concerned with states. So if I'm shipping something that's in the continental U.S. I might have consistent rates. But if I'm shipping something to Hawaii or Alaska. I might want to add a little bit of charge. So that was built in from the beginning. Okay. So Simon, which is an active project right now. Which is totally out of the blue surprised me. Writes this big forum post. About hey look this doesn't really work for the Europeans. Because I've got to enter a shipping rate table for every single country. And it's all exactly the same. So what he's doing is he's saying. I want to take this make a zone out of it. And group all these countries into a zone. And then apply the rules to the zone. And it's going to work much better for the Europeans. But early on it's something that I completely never would have thought of. Because I don't know anything. And it's such an exciting thing to see projects like this going on. That have nothing really to do with something that I started planning. But you know and he was nice enough. To spend the time. And it was great to see him. You know contact me and say this is what I'm trying to do. And I helped him out. And now he's got this project going. We're going to create a branch. And this will eventually wind up in the core. The wonders of open source. It's perfect. And then this last iteration that we have. We've seen so many people that are spending a lot more time consistently. So it's not people that I've gone out. And it's like the best buddy next door or something. It's people from New Zealand and Spain and the UK and Italy. It's just from all over the place. And I've never met. I met a couple of them. But not all of them. And it's been great. So this new. We just released a second starter kit. Okay. So largely based off of Tito's and Trevor Loader's input. Yep. And they've done just some fantastic work. And Trevor even was building a site. An active site. While I was off the dev branch. Which that's good. Okay. And it was a great testing. He was sending me lots and lots of comments and critiques. And just write it all up. And I punch them all out. And get right back to him. It's awesome to get so much feedback and contribution from the community on such a product. And that in itself is what we're really kind of looking at. As a measure of success at this point. Because as the project grows. The fact that people are using it. And getting deep enough into the code to kind of from the bottom up to understand. They're not obviously they're not reading the documentation. Because the documentation doesn't cover that. It doesn't exist for that. So they've gone in and they've figured it out. And that's really showing a competency growing. Which I think is a really good indicator that we're moving in the right direction. Yeah. That's it for me. Oh. The other people. I forgot. The people that have bought a gratitude license. That really helps us. Because we helped fund my trip here. And helps us keep Polish on the site. Yeah. It takes a lot of time and effort. So, yeah. Why not? Awesome stuff. Thanks. Theo. Let's learn about is it pipeline? Pipeline CRM. Yeah. That's right. Awesome. So, I don't have any slides today for you. I'm going to jump straight into a demo, really. But before I go into the demo, maybe some words of introduction for pipeline. The history is like this. Perhaps two years ago, something like that, we became keenly aware of HubSpot. Which is a service that started going into our domain a little bit. Into our water. So, HubSpot starts with inbound first. So, it starts with a conversion. It starts with calls to action, landing pages, all that. SEO and analytics and forms. And then, on top of that, then they deliver the website. So, it's kind of like a reverse approach of what we have been doing. Which is build the website and then market it. And it's a reversion of that. So, one of the things with that approach seems to find some traction with clients. And we deconstructed that. We kind of started playing around a bit with that. One of the things that HubSpot does is that CRM underpins everything. So, the bottom of everything that they do from inbound to websites is a CRM. It's so important that they actually give it away for free. You can get a free CRM from HubSpot. And they use it as a way to sell the other services. So, that became my inspiration. I decided to kind of build a CRM for Umbraco. So that I could provide a target for all the conversions. So that we can actually offer that approach that seems to resonate so well with clients. And thus, Pipeline was born. Maybe I released kind of like a version of that towards the beginning of 2016. Something like that. So, it's only been going for a few months. And I'm here to demo that. Really, very quickly, a couple of principles behind it. It's a new section for Umbraco. So, I needed it to look the part. I needed it to look like it belongs into HubSpot. Into Umbraco. I needed it to use as many APIs and as many dialogues, as many hooks into Umbraco as possible. And the third one was to actually give it a lot of APIs. To make it as extensible as possible. So, starting with the basics. In your Umbraco installation, Pipeline is a new section. It looks like that. And the main things that you would track are opportunities. Tasks that are linked to opportunities and users. Then you have got contacts, organizations, and then obviously recycling bin and settings to help you adjust things. Now, with the opportunities, this Trello-like board over here. This is your, if you like, your workflow of how you track your leads into negotiation. Whether opportunity is won or lost. And then you can also open the opportunities over here. And filter them out. In this case, I have got a lead over here that has just arrived. And I can move it around. And then it will kind of change its opportunity value. If I open it, you will see it's got a little timeline. So, these are the different tasks. Little conversation that has been playing out between me, the salesperson, if you like, or the company representative. And my user. Before I show you more of this, let's jump into our first use case. Which is handling inquiries. Handling inquiries. That's kind of the most basic of implementations. And I have got just a sample website over here. What you are seeing here is a Numbrako form. And then my user. I think. And that doesn't... Well. So, my user will submit the form. And that will... In the back office now. I have got a little integration with Numbrako forms. So, there is a custom workflow. That as soon as it kicks off, it picks up. And it creates an opportunity in pipeline. Now, at this point, possibly my... I might have a little workflow that my sales rep, somebody in my team will receive a notification about that. But they will also see it as a lead into pipeline. They can start moving it along. But one of the things that you can do is you can start, first of all, putting some replies in. The first thing would be to raise a task. So, if in this case this user is not responsible for replying it, they could say, please reply. And just say, give it a type. And if it is a task, assign it to me. And give it a due date. Do it by tomorrow. Save that. And that creates a task for me. Now, if I go over to tasks. You can see that my task is done. My task is over here. And obviously that kind of builds in a little line, a little flow of all the tasks. As you would expect, the basis, the basic building blocks of any CRM is an address book. So, contacts and organizations. In this case, contacts. This is Alice that was just created. And these are all her details. Some of the things I talked about earlier about integrating with the Braco itself is, for example, if I want to add some files. I just integrate with the media section. And there is a couple of more other places where you do that. The next area where you do that actually is the membership system. There is a configuration in pipeline, true or false, whether you want to create a member from every new contact that gets created. In this case, Alice has been created as a member. So, Alice can go in. It's one I created earlier, obviously. Because she has a password. She's a member of a particular account. And I think that's her password. Okay. The work we've built over here is a little customization, a little extranet, a little members area that interfaces with pipeline. Pipeline is not in itself a members area. It's a CRM behind it. So, this is an implementation of it. So, this is not out of the box then? No. So, you're using your own APIs to talk to the CRM. Exactly. So, this is something that you would build. You make it look like your own. However, inspired by the e-commerce packages, I will also build some starter kits based on what people ask me for. So, things like the integration with Umbraco forms, things like a login area. These things. I'm going to have plenty of examples of that. The idea here, the use case, is that you can also, using the same APIs, basically initiate a conversation with the user. So, in this case, I have got this task. Theo, please reply to Alice. And straight from pipeline, here are some docs. And I'll mark it up for my own reporting as I send the file. It's not a task. It's a reply to the user. And I pick from my members, from my media area. But, the task has been saved. I'll tick my task as done. And in the front end, because it knows to expect that. Alice will receive my reply together with the document. And you can see my earlier test down here. So, that's why it's a duplicate. Similarly, the API takes over. So, there is not only an API for getting data out of pipeline. But there's also an API for getting data into it. And if Alice replies, that's going to go into pipeline. It's going to get saved here. Similarly, once I refresh this, the entire conversation will be saved. And the conversation is available through here. So, that's how the login bit works. A couple more things to show you. The first is custom properties. So, as you know, with any CRM, you can customize what information you hold for a user. Similarly here, similarly with pipeline CRM. And for this, I use the doc type editor. So, you can customize pipeline to take in, to look for a particular document. And then, you can configure this in the config. But in this case, I have got, for example, a pipeline contact. And I have created these social, say, flags or these profile tags. And then, you can create more of these. And then, pipeline will pick over. And when you're looking at the contact, you'll see that these properties here are available to you. You can expand it. You can do anything you like with this. One last thing is that you can also... These are available also through the API. So, if you need to adjust the custom properties, you can do that from the front end as well. Okay. Okay? One very last use case. Yes. Do you have time for that? Very quickly. Very quick one. There is an events hook. So, you can get things outwards from a pipeline. And one last thing to show you is here the opportunities. If you wanted to, say, you have an integration. Alice actually places an order. And you want to have in the CRM information about your order detail. You can create, say, for example, a custom property type and attach it using the custom properties. So, that's one nifty little way of kind of getting data from the outside world into pipeline. Very, very nice. Okay. And that was the demo. Thank you very much. So, now we've seen all three. I think it's best to take a couple of questions. So, why did your company decide to build a product on top of Umbraco? Let's take Max. So, I know you briefly mentioned it in your slides. But why Umbraco? Why not something else? Or why not just build it from scratch? Why build it on top of Umbraco? Well, as I started out mentioning, it saved us a hell of a lot of time. Yeah. So, we ended up having a lot of time to use on the features that our customers actually need. And I think that's why everyone uses a CMS, right? Back in the day, we built everything in our hands. So, basically, just getting a head start. Awesome. Rusty? For me, it was totally self-serving. I mean, we were running a studio. We were devoted to using Umbraco. And we had all these e-commerce customers that we were trying to wedge in. And we were trying to go out and buy off-the-shelf e-commerce products. And so, it really became a management headache to keep track of so many different applications. And we really just wanted to silo. Theo? Yeah. For us, I think it was building a feature or an application that we thought was missing from Umbraco that will help us build more websites and help us build better websites. So, that was the solution for an Umbraco, a missing area in Umbraco. Okay. Okay. So, I suppose the next thing is talking about advice you could give other budding developers or companies that want to build a product. What advice would you give them if they wanted to start building something? Max? Well, that's kind of an open question. From my point of view, the most important advice has always been to build a product. And that has nothing to do with Umbraco. It's just start out prototyping. We did a lot of prototyping before we actually started building anything of our software. In our case, our software is very interactive with the users. So, we used a lot of time creating interaction prototypes and figuring out does this make sense. Is this the product we want to create? And we used a lot of time prototyping some of the technology that we knew Umbraco wouldn't be able to solve, such as authentication and users and so on. So, prototype, that's what we do. And I think that works awesome for us. And the great thing about Umbraco is you can also prototype on that. So, you guys just had an idea and it was like you got together. It's like let's just start hacking and prototype this quite quickly. Basically, we had a customer who had an assignment that they wanted us to do. And we just sat down a couple of people and made a sketch of what should this be. And then more or less we bought that sketch more than the customer did. We were like this is awesome. We're so awesome. So, we more or less started building a product to ourselves instead of the customer. And we do that all the time. And we've had some success doing it. So, it makes sense for us. Rusty, any advice you can give fellow people who want to spin up or build a product on top of Umbraco? Right. I do think it really kind of depends on the type of product that you're trying to put out. But something that gets me every once in a while is I want to keep in mind that I want to be extending Umbraco, not augmenting Umbraco. So, if you ever get into a situation where you're actually changing a behavior that somebody would expect when your package isn't there. Yep. That's not good, I don't think. And you should really pay attention to making sure that you're keeping Umbraco in place. Keeping Umbraco, Umbraco. At the same time allowing, adding, extending Umbraco with your functionality. Yep. So, yeah. Theo, any other? From my point of view, I think it's a, the word productize kind of brings to mind. So, we used to make websites, you know, very specific custom solutions for clients. But to productize something involves a number of tasks that you don't have to do. And you need to kind of prioritize them. Now, I don't know much about this. I'm learning because it's a pipeline. It's fairly young. But I do appreciate that things, tasks like the documentation, the APIs, the pricing, the marketing of it, things that do not have to do with programming, if you like, are as important, if not more important than the code itself. So, yeah. That would be the advice. Yeah. So, you touched on a good point, though. Yeah. So, coming from your work at agencies who build Umbraco websites for clients. So, how does it differ building a product? Like you said, documentation, things like that. Yeah. Is it, how did your company approach the different styles? Obviously, building a website for clients, you have a deadline. And how do you manage, I suppose, the time as well to deal with client work? And then, I suppose, fun internal product work? Max? Well, having a lot of customers already gives you a big head start. Yeah. So, what we do when we want to create a product is, as I mentioned before, we kind of sketch it out and then we start prototyping something. And often what we prototype is actually what we need to convince a potential customer and ourselves to create this product. So, in this case, we prototyped kind of the interface, how it should work and so on, and we found a customer. And we pitched the idea to them and said, don't you need this intranet? And they were using a lot of money and a lot of time on their existing solutions, so they bought it. And that kind of gave us a head start, so we could kind of, you know, use a lot more hours and a lot more time on it. And also, something that is so important, and I see this every day, if you forget the customer that you're actually trying to create a product for, then you probably won't create a good product. So, having a few facilitating customers in the beginning, and I know it's a luxury that not everyone has, but having those customers makes sure that we create a piece of software that is actually, you know, in everyday use, effective. So, we're not just sitting in our little bat cave, figuring out what does a huge company need for intranet. And, I mean, we're 62 people, we're not a huge company. So, we don't know what they really need. We need them to tell us. We need them to talk to. We need them to figure out what we need. So, having these customers in the beginning and selling them in on the idea made a huge difference for us. And we've done that on different products as well. Russ? Anything to add? Well, my situation is a little bit different because we spent a lot of time, probably started working, trying to get the Marcello project going a year before we actually started. Okay. Because we needed funding, really, to do it. So, it was coming up with the idea and basically making sure the idea was good enough for somebody to sponsor the project. And over time, different sponsors figured out or decided whether or not it was a good idea or not for them. And eventually, the way the project goes, I've been fortunate enough to maintain a level of enough resources to keep the project going. But the larger the project goes, the more resources it needs. So, it's kind of a catch-22. So, we need people. Phil? How do you kind of manage the product stance? Well, for us, it was a... Suppose what I'd like to say is that it needs to fit in with your overall strategy. There needs to be some benefit that you can see, if not right away, but quickly enough. Because you have to take the time to develop a product so that it doesn't die and kind of keep developing it. For us, at first, we thought it would be a case of, you know, what you would recognize as an alternative. We recognize an alternative revenue stream basically charge a license, right? So, Pipeline, if you look at the website now, would have a license. Now, talking to a lot of the guys who make the packages, I actually decided to scrap that. So, here first, Pipeline is free and it's going to go open source this summer. And we decided to concentrate on different ways of supporting the product. So, we'd like everyone, you know, as many people as possible to take it. And then it's going to fit into our own strategy by being closer to what it is that we do. So, things like support and custom development, which is essentially bringing the product closer to what we do as an agency. Okay. That's interesting. So, how do you guys think about most of these products are relatively in the early stages or newish? How do you see it long term in terms of maintaining and continuing to develop a product? How are you going to find the time to make sure you stay on top of it along with day-to-day other work? Max, any comments in terms of maintenance and long-term goals and ensuring that you kind of stay on top of things? For us, we have a business plan that we're using right now. And we have seven developers just working on this. And we have a few salespeople and so on. And that's because, I mean, we have customers already. We have 44,000 users on our system. And they pay recurring revenue for us. So, that means that... It could be still funding right now. But it's not because we know all the things we want to change. Okay. So, we're still pouring money into this from a perspective that's basically, as you mentioned before, giving it the chance that it needs to have, making a bit greater product. We know... You all know that feeling. You've created something, but you really... Even though the customer says it works great, you're still feeling like this is only 10% of what you need. And we want to reach 100%. Of course. But having, you know, the luxury of having a sales organization and having customers, having all these things has given us something that many people don't have. It's given us the chance of getting the customers at an early stage and making sure we quite fast had a business that is actually up and running. Nice. Rusty, anything to add? The funding issue is definitely something we pay attention to. And the idea is, especially moving to the UK where the saturation of developers is much easier to and cheaper to get in contact with. For me to go to the next big group of Umbraco developers requires a plane and several hundred dollars and a hotel. Yeah. Whereas you guys are Europeans in general, but in the UK, you can hop on a train and go to a meetup an hour, two hours away. And so, we're really... I think going to start focusing on training to start reducing the bleed. I don't think that it's feasible to think that training is going to... It's not going to be profitable. And we do have some control of how much we're going to expend on resources by basically just not doing it. I mean, we just let it sit for a while. So, yeah. Maintenance, we've in terms of training and getting people educated. Exactly. Yeah. That's a nice plan. Phil? Yeah. So, what's the plan long term and kind of maintaining this product? What's the plans? Well, the plans are to get the core developed to a point where I'm happy that I can support most of the use cases I wanted to support. So, things like the automation piece, the personalization piece, the core CRM and everything like that. And then just once that's out there, then just listening to the market, to the developers, the community, to what it is that people are looking for, especially the bigger projects. In my case, it's likely to be things like integration with all the e-commerce packages, for example. Okay. So, pre-build that, the form. So, it's first instance, it would be about getting all these add-ons out there. And that helping us support a commercial backbone, if you like, to product development. All this time, pipeline as a CRM kind of developing in an open source way. Very nice. Very nice. So, I think that's wrapped up in terms of my questions. I think it's best that we open the floor and take any questions from you guys. Don't be shy. I will come and find you. So, any questions for these guys? I'm coming. Hang on. So, I think this is mostly for Rusty and Theo. Because Max, I can see your product is a big one. Yeah. And the clients pay for their products. But, Rusty and Theo, how do you... What's your business model? I mean, Rusty, you had your donation thing going on. But, I mean, in terms of keep developing, I mean, there's a lot of time and probably money invested. A lot of time, a lot of money. Right now, I'm partnered with Lee Messengers, who has his store. So, we're definitely going to get his stores going and fully going on Marcello. So that he's continuing to make money on his stores. And his stores are moving in the direction he's going. The training, basically, we don't want to increase the amount of financing the project requires. So, we really want to kind of reduce that burn. So, training and doing different things like that. Well, we may start eventually taking small projects. Or doing support work. So, if somebody has a project and they get stuck on something, we may have support contracts or guarantee contracts. I mean, I don't write that down. Because I don't know what they would look like. But, yeah. I mean, we will be offering services to the community to try to make it easier for them and cheaper for them to implement things in Marcello. But, yeah. Just by not beating their head against the wall. Bringing somebody in to kind of clear up what they're stuck on. And let them get back to work. So, I think that that's another way we can make money. Well, for us, as you just heard, I just changed our business model entirely in the last two minutes. But, what essentially means to me, I think, going open source with this. Is... Actually... Actually putting together a framework to... Or a business model, as you said. To ensure that there's some revenue coming in that I can essentially put back into product development. Not to mention to put food on the table. I suspect that the first thing... I think I know that the first thing that we're likely to do is a collection of add-ons, integrations. A suite that you might kind of associate... You might call like a pro, a professional kind of version. That will have like a one-off fee or something like that. And then on top of that... Catering for larger installations that... I think it's similar to you. It's a suite of services or reassurance that they can actually use it. And this is the bit where we're actually more comfortable with. Because that's what we do as an agency there. Support, the SLA, the customization. It's things that are much closer to our original business model. Any other questions? Yes, hang on. I'm coming somehow. I'm going to climb over the chairs. Thank you. It's a question for Max actually. So your SaaS product... You said you got 40-odd thousand users on there. So when you get a new organization signing up to this product... Do you create a new Umbraco instance and install... I can't remember what it's called now. I can't remember what your product's actually called. But you do install the product on this new Umbraco instance. Or do you have one big Umbraco instance with all the organizations on it? Well, our customers... Our customers are often the type of customer who wants to know their data is their data. So basically what we do is we run new instances of Umbraco. And we have all the things ready just to run up a new instance. And depending on the customer, sometimes that instance will be in their own IT infrastructure. They will still pay us a license per user. So it's more of a license. And we also have the opportunity to have it as a SaaS solution. So is that kind of like a quote pricing model? Is it like a per quote basis pricing model? Is it like a tiered pricing? Right now we have like a baseline price which is for the software itself. And then there's a price per user per year after that. And then there's on top of that the installation and extra modules and so on. Basically our business model is kind of twofold. Because we have a business model for our Collabo business. Which is selling the software itself and the recurring revenue. But then we have a business model for our potential partners and the rest of our company. Which is basically creating widgets and modules and so on for the individual customers who have the internet solutions. So it's kind of twofold. Okay, thank you. Okay, I'm coming Matt. So Theo, your potential plan is to add some kind of commercial element on top of your free plan. Whereas Rusty, you're staying towards open source totally free plans. So it's just like how sustainable do you feel that's going to be to remain open source? I didn't understand the last part of that question. It's just how sustainable. It's just how sustainable do you feel that staying open source will be purely open source. And you've got no commercial elements to it other than kind of third party funding. Other than support and training and that sort of thing? Yeah. Well, I mean we do have other opportunities where we could have paid extensions to it. We could do something like that. And obviously we have some of those kind of put up on a shelf as ideas that we could flesh out. Flesh out, flesh out. Whatever it is. And so we have certain fallbacks that we can do. But I think that really it's important to reduce, not plan on making money overnight. Because that's not really the idea. It would be great. Can't argue. But it's not likely. No. And I think that when an open source project is growing, the most important thing to do is get people using it. And get people. Get the community engaged. Which in turn gets their customers engaged in a sense that they're using it. And that needs to be supported. And even if the person that implemented it goes away, that person that has the project running in your software needs to find somebody else to get it. So it's time. And so in a lot of ways it's a game to. Not a fun game. To make sure that you give the project enough time to grow enough. And that you can fund it to the point where you're not sinking yourself. And then somehow figure out, which I haven't yet, how you grow with the needs of the project. Because at a certain point it's just like a business too. You hit to the point where you have too many tasks to do. And you have to somehow get help. So. Yeah. It's like growing a business I think from that perspective. So you've not got a plan or a goal at which point Micello will be profitable by certain means or not? Or is it? We set benchmarks. So, you know, it's, if we make it here, we're doing okay. If we make it here, we're doing okay. If we don't make it here, we need to sit down and make a decision. So. And are those just. And what that decision is, it's not just black and white. It's like what do we do? We ratchet down and not. And I go get extra work on the side. Or do I start working for a couple months and let things go and just manage as a fort. So it's not like something that, I mean, in some respects it's easy. If I'm 99.9, well, other than trips to like Code Garden or something. I'm the largest expense in the company. Because that's what I live off of. But if it's not working out or it's sinking, all it really needs to do is I go freelance or I go work for another company for a while. And we continue to support the project. Do training. Gain resources. Build support contracts. So, I mean, there is that. But there's a lot of other things that could happen too. Yeah. So I think we're almost out of time. Have we got time? Have we got any last minute questions before we wrap up? I take that as a no. So thank you to our lovely panel guests. Give them a warm round of applause. Thank you. See you. Thanks. Have fun. Thanks. All right. Happy on one finger. Happy . Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you.