Nibble

Thoughts,tips for creating umbraco packages

I’ve created my share of umbraco packages and thought I’d try to share some tips/insights.

Creating packages is easy, the built-in package creator makes it super simple and with package actions you can perform additional common tasks (like updating the xsltextensions) without having to write a single line of code.

It really takes a minimal effort to package something up that you made, even if it’s very project specific it should be possible to isolate the functionality and package it up.

Dare to share

Even a simple package can be a great help, so don’t hesitate and share

Naming

To avoid conflicts and overwriting other existing items when installing a package, make sure you have unique and meaningful names

  • Assemblies

Starting these with your name or company name followed by a project name should be enough to make them unique
FE: Nibble.Umb.Poll

  • Stylesheets, Scripts, Document types, Templates, XSLT files, Macros

A unique and meaningful name that links them back to the package, so it easy to see that they are part of a package
FE: not style.css but starrating.css
not list.xslt but bloglistposts.xslt       

  • Usercontrols

placing these in a new unique folder inside the /usercontrols folder makes it easy to see that they are part of a package
FE: /usercontrols/Nibble.Umb.Poll/poll.ascx

  • Config files

place these in the /config folder (again, with a unique and meaningful name)

Installation

Package are really easy to install but in some cases the package installation might fail. So it’s always great to provide some manual installation instructions, just in case.

Think ahead

You might have created a package with a simple site in mind, but don’t forget they can/will also be used on multilingual sites, site running a different database engine. Or in case it’s a datatype, will be used with Canvas, autoform, doc2form. It’s a great plus if this is taken into account.

What doesn’t work

If the package only works with a certain umbraco version and up or if it only works on sql server, don’t forget to mention this to avoid that people install it on non supported installations.

 

I’ve also added this post to the wiki on our.umbraco.org, if you have anything to add/change (or correct my bad spelling) please do so .

4 Comments so far

  1. Chris Houston on July 7th, 2009

    Hi Tim,

    Another great blog post and a good idea to add it to the Wiki as I am sure it will be a useful document that could grow as the Package installed matures.

    Cheers,

    Chris

  2. Daniel on July 8th, 2009

    Is there any support in package actions for specifying prerequisites?

    For example, if a package needs feedcache , doc2form, or any other package in order for it to work.

  3. Søren Spelling Lund on January 20th, 2010

    As far as I know there’s no way to specify dependencies between packages. It’s too bad really because we’ve had a use for that a couple of times for uCommerce. Might be worth looking at for Umbraco 5.

  4. Dipun on August 11th, 2010

    I have been using packages recently and I have a few tips and suggestions for the cms.

    Firstly, it would be great for the package generator to find any dependencies (dll files etc) and automatically create them; this isn’t really a biggie though, its just a nice to have feature.

    One of the most useful features would probably be the ability to lock or at least prevent deletion of things like dictionary items and datatypes from the cms. This way, the user can see that they shouldn’t remove the item and the only way to remove it is to remove the package. This sort of protection would be priceless to a package developer. It could be further improved by giving packages ownership to these items. This way another package would not be able to replace it.

    Oh, and one bug, it seems that when I exported my document types, they came out in the wrong order and the whole heirarchy was lost. The way to resolve this was to open up the xml file in the zip and rearranging the document types so that parent nodes came first.

Leave a Reply