Just 55 minutes ago, I was checking some stuff related on Sitecore in Google. And found ‘SitecoreExpress‘. It are Danish guys who are creating simple sites for low costs. In looks a bit like the idea I had yesterday about shared Sitecore hosting and CMS sharing… Interested to see some work of them….

Structured programming: Sitecore Development Street

A commercial word nowadays: Development Street. You can even ride it into another company(like in Hollywoord with the sets). It is an old, very old, concept, we give it some new colors when new technics are released(for example, take ASP.NET 2.0)… So we’re talking about a product? Which means you can buy it, together with a manual, some support and can touch it? Yes. No. No. No. You can buy it, but it isn’t touchable, you can’t support it and a manual? You have to write it on your own, which is the best exercise. We’re talking about a development street.

At the office, we’re structuring our software development process more and more. You’ve got the quick and easily taken steps like Code Guidelines and the more advanced steps like never using queries again without Typed DataSets. Then you’re actually touching the programmers hand. You can do it, but in a later stadium. First you have to take the small steps, marking some irritations, solving them and making the work of the engineer more confortable.

Some others don’t think this is the Development Street. For them the environment is more the Development Street. For example, there ETAP-enviroment(Engineering, Testing, Acceptation and Production Environment) is there street. Well no problem, but for me, the development street is our main process: Software Engineering. This process has to be so easy as possible. If we can do that by bringing in some servers, faster machines of software, my manager says: No problem. But when I ask him how we can decrease the development-time by 5%, his answer will be: aren”t there any other companies which have the same problems? And actually there are. The audience of my blog are actually people who are working with the CMS Sitecore. Are creating custom solutions for internal usage or for their customers. So I want to ask you all, if you have some feedback for me, some ideas you want to share(you can also ask my opinion), please post a comment!

We all know that the devlopment on top of another system is never easy. Work from scratch ios always easier, on top of the CMS development is often getting nasty-er and nasty-er.
Maybe development isn’t the right word. Maybe the full project is a mess…. ETAP-environments are very tough to create and manage, you are working for the web which gives another look on the final product, etc.

As you didn’t mention it already, I’m actually going to start with the specific Sitecore Development Process Optimalisation. The following steps are taken first. These steps are just a way to help me and my collegues to focus ourself more and more on software engineering instead of everything around us.

Simple workflow for support@sc questions
Longer then 1 week calls are registred in a ticket system incl TicketID so it can be tracked. Updated periodly by one person.
Questions, where Support explains something or provides some exampel code, will be saved in a small Wiki /Knowledge Base.
Question which aren’t closed or answered after the expected time aren’t anymore the responsibility of one software engineer. A team-member, will be responsible for handling these questions. He’ll alert Sitecore, open their eyes and speeds up this.

Quickstart: How to begin your project
Making a Sitecore-version based document which allows other to easily start a project. Configure everything right and clean up unused mess. Maybe an Visual Studio 2005 Sitecore Project? Etc.

Sitecore deployment is a tough one as the distribution is quite big and installing script aren’t available.
We’re going to make a strict format so our Support and Maintenance team will be able to do the deployment without us.

Internal release management
Make simple, but clear, lists about releases of the core or modules, changes, features, etc.

Looking for a way in which the developer is minimally involved in the training process of the customers.

In my opinion, everything above should be ready around half Juni. Maybe earlier. At that moment, we should be able to focus us more on stuff like Visual Studio Team System, Nightly Builds, Contious Intergartion, etc. Maybe some strict Sitecore development rules will appear. Can’t tell it now. First the stuff above. 🙂

5.3 brings: Licensing and remoting

Well, didn’t kept my promise, but have written some much lines of code, that I at least can be proud of myself. 🙂

Well, the subject, remoting and licensing… As the license model hasn’t changed so far since critical notes of an amount of partners, I see some light at the end of the tunnel. We now know Sitecore isn’t the system anymore for small business(altough I just got the idea for following concept: shared sitecore hosting on a webfarm based on shared modules and shared layouts). It’s grown up. The development is getting more stable and releases are on all fronts(design, usability, commercial and technical) better then ever. So far the compliments…. 😛 Back to the licensing model: what are we going to do with the additional server which is the ‘master’ of the remoting? Do we have to pay for it?
My (unasked) opinion: it’s no Runtime, neither it is a ContentEditor, but a DataAccess layer. I’ve never seen Sitecore.DataAccess in an License.xml. So why should it there in the future? Hmmzzz. maybe it isn’t so bad to have one, delivert together with the ContentEditor/CMS license. A possibility for making money out of it is by making it possible to create a DataAccesLayer-cluster. Several of Applicationservers. Enterprise architectures are in front of our hands. 😛

* Alex dreaming …

  • Can we use it in the future for desktop applications?
  • Different Services? Document solutions?
  • AdvancedVS Team System Intergartion 😉
  • …..
  • Back to the real world:
    I’m very interested in the posibilities in Sitecore 5.3 with remoting. As more and more from our customers expect that we deliver CMS-solutions divided in several tiers(another post is upcoming on this subject), it’s definitelly a good step that the architecture of Sitecore grows with us. What I’m wondering now is what problems remoting solves. Can we get rid of the WebFarms using the &^%$ Staging module? What about configuring? Deployment? Version differences, additional object models, etc, etc. Anothe line full of questions… As soon as I’ve a alpha or beta in my hands, I’m definitelly going to tell you guys more.

    Note: I’ve talked about the remoting calling a DataAccesLayer above, I can imagine there’s several Bussines Logic in this layer, but for me the basic functionality of the Sitecore APIis a (gentle) way of retrieving my content.

    GUIDs or Names?

    It has been a while since my last post. This is my last week before I go a week on holiday, actually my holiday starts on wednesday. Tomorrow is just a normal day at the office. Wednesday, I’ll go together with one of my collegbues to a seminar of Atos Origin about Visual Studio Team System. Wondering what opportunities come out of that seminar for our Sitecore team.

    This post actually is all about the usage of Names or GUIDs of items. This is, because of I’ve seen lots of codesnaps where collegues and even the support team of Sitecore does use GUID’s and Names trough each other.
    For example: most of the time you have public content folders and non-public content folders in you datanodes. What the f*** are you talking about? Well I’m going to explain it a bit easier: When you are going to divide your content, such as ther normal menustructure, you always have those non-menu-items or non-content-items such like disclaimers, privacy notices, etc. You can choose for 2 solutions to make a logical data-tree, place the non-menu-items really outside of the tree:

    + root + content + folder 1
    |————————+ folder 2
    |———–+ bottom menu

    Or you’ll use a structure like this:

    + root + content + folder 1
    |————————–+ folder 2
    |————————–+ bottom menu

    When creating a menu-sublayout or rendering for the first tree, you are ready in a second, for the second one, you have to do some conditional work. In my opinion, the easiest way is to make 2 different templates or masters(based on the structure you have created in Sitecore). Now you can easily look which item should be included in the menu.
    So far not so heavy, do you think? Well, it isn’t so easy. I’m going to introduce a third template/master and a fourth, a fifth, etc. We we have to make it generic(hot word these days ;)). The easiest solution is adding a key in the web.config. For example: ‘MenuAllowedTemplates’. You divide the names by pipes(|). And you’re ready. Oh uhm, Am I actually? Sitecore does store my content based on GUIDs, wasn’t it? Yes, all the items, and sections of items, and fields of sections of items, etc all have their own GUID.
    This implicates that we can remove the string-compare in our code and let Sitecore do the trick! Constructing is quite easy:

    Sitecore.Data.ID myID = new Sitecore.Data.ID(“{11111111-1111-1111-1111-111111111111}”);

    Before you actually are going to rewrite your code, I’m going to tell you that this isn’t a way of writing code and managing your website. Why not? Wel.. can you handle this config settings:

    Or if you really want to make it less readable, remove the brackets….
    No, this will cause only problems, for this one time please use just your Template or Master names, use different content-structures, but definitelly do not configure IDs! System Egineers will kill you, and you have to ask yourself the questions: what happens when I configure a wrong ID? Are IDs in different database the same? Etc? Etc!
    When you need some full example code, please contact me, I’ll collect some for you.

    As I’ve to do on daily base with this kind of stuff I’m feeling mroe and more for writing a small book: Sitecore Development, what’s good, what’s bad?! When you have any suggestions, I’m very interested.

    Note: When you are going to use Sitecore XPath it’s again highly preferred to use names instead of using GUIDs. /sitecore/content/*/[name == teampleX] is definitelly more readable then:
    /sitecore/content/*/[id == {11111111-1111-1111-1111-111111111111}]

    Problems with missing licenses?

    I kept having problems with licences on blank 5.1(.1) installations on my Windows XP machine. I use VS.NET IIS Admin to create my sites in IIS which worked correctly all the time. Haven’t created any new projects since I’ve installed VS.NET 2005 and .NET 2.0. From that moment a ‘Missing License’-error appeard. This morning, I finially figured out that the default .NET version of a new IIS-Site is set to 2.0 instead of 1.1. You can see on the screenshot below how to fix this(you have to do it everythime you create a new site).

    Obsolete: New way of editing items

    Well a new way of editing items fro me :)! Just saw the following part of code in the API Overview(.chm) today:

    using (new Sitecore.Data.Items.EditContext(myItem))
    myItem.Fields[“subject”] = “You did hack Sitecore again today, Alex?”;

    From now on, I’ll never user Item.Editing again. This Accepts my changes immediatelly and I don’t have to start editing, etc. Are their any more Context-objects available? Well, going to search for them tomorrow. If you know some, please post a comment!
    Spent my today today writing more and more security-manipulate code(see post below), will post tomorrow more of the stuff written today.

    Update: As you can see the comments of the Sitecore team, the EditContext isn’t preferred anymore. It can be still used for accounts with full rights(Admins) or when you disable the security, but it’s highly recommed to use the Item.Editing object.