090978.org - A weblog about developing umbraco - an open source .NET based Content Management Platform, written by Niels Hartvig. Click here to get back to the frontpage of the weblog

12.15.2004
The business model of our company Permanent link to this post with (0 comments )
People are beginning to get curious on the business model for our little company behind the umbraco software. How are we making a living and are we here tomorrow when we don't get paid for licensing our software?

A little bit of history first? (skip the bullocks and go strait to the master plan here)
Well, until recently it has been easy. Umbraco has been a one-man company doing implementations of umbraco, and along the way customized umbraco to their specific needs. The umbraco software wasn't public available and the business went pretty well. Then the business went from pretty well to really well and as a natural cause of effect, the pressure on the one man (that will be me) at the one man company rose.

The plan with umbraco from the very start back in the middle of 2000 was to make great software available to everybody. The open source models fitted this plan very well, so by the middle of 2003 thoughts were made on how to make umbraco open source and at the same time still have an income to pay the bills.

In the beginning of 2004 I started talking to Hans Henrik Højberg Heming (yup - an awful lot of h's there) on how to make this happen. Not that he knew much about open source, but he knew quite a lot about running a business. He also knew a lot about changing nappies as we both became fathers in the end of 2003. So it was pretty natural to discuss stuff like this while admiring our sons.

The chemistry between us was really great so we started talking more and more, and while I knew a lot about developing software and making users happy, Hans Henrik kept talking about scalability. At the same time the pressure was growing and growing, and I wasn't really good at managing this. After all - I just wanted to building great software. I needed a model to help me do that and I might also need people around me to make it real.

The umbraco business model of today
So I asked Hans Henrik if he thought that umbraco could be an interesting place to spend more of his time, and the answer was positive. And so we began investigating in what we wanted and what people wanted. We talked to users, agencies, consultants and our families too - because not only did we want to build a company that developed great software, we would also like to spend a lot of time with our sons and wonderful wives.

During the spring and the summer we made a lot of different models, some survived our filter but not many survived the feedback from agencies and consultants. And those who did had a scalability issue or were more focused on helping people use the software than building it!

The solution
During the fall we began seeing the light and we've been spending months lately shaping it and closing down the one man business implementing umbraco solutions. We knew that we had two huge issues we wanted to solve: Developing great software and teach other people how to use it the best way. Now when we give our software away, we needed some other income to finance the huge amount of hours we spend on it. But we would also like that whatever we spend our time on helps umbraco gets better. So I'm really excited on telling what we hope to do in 2005 and the years to follow.

Introducing the "umbraco developer lounge"
The umbraco developer lounge is a site available on a subscription basis filled with documentation, downloads and tutorials all relating to umbraco and is a capture of the best knowledge I've gained during the last years of doing umbraco implementations. So it should be a toolbox (or maybe even a treasure box!) for anybody professionally working with umbraco. And by subscripting to the lounge you're also financing the contenious development of umbraco. And it's pretty easy to sell to the managers in an organization. This isn't some strange donation model - you pay something and you get some really usefull in return. If I were wearing a tie, I guess I'd call this a win-win ;-)

Now the idea is too keep writing tutorials and keep making tools and publish them at the lounge. But instead of spending 90 percent of the time doing implementations and 10 percent actually creating umbraco, the master plan is spending 30 percent on the lounge and the rest on making umbraco an even better product.

I really hope this model will work, and I just can't wait getting started. We've made a small page with marketing bullocks and info on the lounge. More info will come later, but sign up for info at the page and we'll send you a really nice discount on the first year of subscription.

0 Comment(s)...


12.14.2004
[DK] Job opslag: Har du lyst til at arbejde med umbraco? Permanent link to this post with (0 comments )

Er du studerende på IT-Universitetet, DIKU, ha.dat eller lign., og har du lyst til et meget fleksibelt studiejob som supplement til su'en? Så kan det være at en af de helt store støtter på umbraco projektet har brug for lige netop dig. Det er vigtigere at du kan kommunikere med helt normale mennesker end at du er et brag af en programmør, dog er (lidt) erfaring med .NET og lidt evner ud i html et must. Send en mail til mig, hvis du vil vide mere om jobbet.

0 Comment(s)...


12.11.2004
Creating a wiki module for umbraco using around 0.3 KLOCs of code... Permanent link to this post with (0 comments )

For a demo some time ago I made a wiki module for umbraco and for that purpose I wrote 1 (as in one) single .NET usercontrol which was 292 lines long (including comments and auto-generated code made by VS.NET). It's written in c# and is not a beauty (after all - it was just made for a demo ;-)) - links to full source follows...

Only 300 lines - am I kidding?
The reason that it's only 300 lines of code, is because umbraco allready handles content storage, versioning and user control, so all I needed to do was creating the wiki-functionality. Basically that meant:

  1. Checking for pascal cased wiki words (as in WikiWord) and then either show them as links to a page existing (and formatting them nicely with a space as "Wiki Word") or making them into a link so a new page could be made.
  2. Creating tiny rutines for either creating or updating on post back.
  3. Oh - no step three as Mr. Jobs would have said ;-)

Looking into the source...
Let's see how a new wiki page is made including a security check to see whether or not our visitor has permissions to edit the page (warning: Source ahead):

// Validate user
umbraco.BasePages.BasePage bp = new umbraco.BasePages.BasePage();
bp.ensureContext();

// Create new umbraco document
umbraco.cms.businesslogic.web.Document d = umbraco.cms.businesslogic.web.Document.MakeNew(
Request["umbWikiCreate"],
new umbraco.cms.businesslogic.web.DocumentType(_wikiEntryNodeType),
bp.getUser(),
FindWikiRootDocument(pageID).Id);

// Publish changes
d.Publish(bp.getUser());
umbraco.library.PublishSingleNode(d.Id);

That's it. And using Web Matrix or Visual Studio .NET you even get IntelliSense to make coding even easier:


IntelliSense inside Visual Studio .NET gives you any information on umbraco business objects as you write your code!

And the code for updating is almost the same:

// Validate current user
umbraco.BasePages.BasePage bp = new umbraco.BasePages.BasePage();
bp.ensureContext();

// Get the current document from the business logic
umbraco.cms.businesslogic.web.Document d = new umbraco.cms.businesslogic.web.Document(_ph.pageID);

// Assign the document property to the current value from the textbox (the document property is based
// on the alias assigned through the variable "_wikiContentAlias".
d.getProperty(_wikiContentAlias).Value = TextBoxContent.Text;

// Publish the changes
d.Publish(bp.getUser());
umbraco.library.PublishSingleNode(d.Id);

// Redirect to the updated page
Response.Redirect(umbraco.library.NiceUrl(d.Id));
Response.End();

When I had finished writing my wiki, I made a couple of Public properties and some css classes for links to make it easier to customize. Now the css part makes it easy to format the different kinds of links (whether its new pages to be created or just links to existing pages), but the public properties can be read by umbraco and makes it possible for any user to modify settings in the wiki without a single line of code - just be dialogs automatically created be umbraco. All I needed to do was:

  1. Copy the usercontrol and it's dll to my umbraco website.
  2. Creating an umbraco macro which is showed below and click the auto-discover Public properties button
  3. ...you knew it - heh, still no step three ;-)

Register the wiki in umbraco
To register my user control in umbraco it's necessary to create a macro. But it's a simple task, and just a couple of mouse clicks - look here:
Using my webbrowser I'm now inside the developer area of umbraco and by right clicking the Macro icon, I can create a new macro. So I'll be doing that and name it "Wiki" and press ok:



After that I'll edit my macro and tell it the location of my wiki control and when that is done, I get a button saying "Browse properties"... Let's try that:



Now there is the list of properties made in the usercontrol, and be checking the boxes, umbraco will create the properties inside our macro and make ui when the wiki is inserted. So let's try to insert the wiki macro into a template:




Voila - here's the result:

And the cool thing is that you can have as many wikis you want inside one single umbraco website and you can re-use other modules to work together with your wiki like the Lucene search feature I made some weeks ago, and will release at the umbraco developer lounge early next year. You can also use the template technology in umbraco to create alternative versions for RSS feeds or printing...

So a wiki is created using 0.3 KLOCs of code and registered inside umbraco with a few mouse clicks - are you getting ready for umbraco?

Imagine how fast you could create forums, FAQ-lists and other content based web modules using umbraco... The release candidate of umbraco is really close, so hold your breath and prepare to switch to a content management framework that takes both developers and editors seriously..! Please mail me if you have any questions...

You can see the full source code for the wiki here - published under GPL: wiki.ascx.cs and wiki.ascx.

0 Comment(s)...




Older stuff here...

empty gif for design I love umbraco... Click here to go to the developer site

More banners here...


To the weblog frontpage
Email / Contact info
umbraco - my company
Call me through Skype
Blog archive
RSS Feed RSS Feed





commonme.org
publicMIND
urgent.dk
asynkron
Hr. Röser
Interbreed
OpenLife
Loudthinking
BlogBot.dk



Tim O'Reilly - and his books
steve mcconnel
joel spolsky
steve jobs
bruce eckel


Blogger for peace - support the opposition against the USA war for oil

This work is licensed under a Creative Commons License

empty gif for design
empty gif for design empty gif for design empty gif for design