Build your Drupal Meta Module - Context, Spaces, Features, Patterns
Drupal is modular. Drupal is more modular. Sometimes you feel Drupal is _too_ modular. Example: The recommended best practice for building a mainainable and generic image gallery uses at least seven Modules: CCK, Views, Filefield, Imageapi, Imagecache, Imagefield, A batch uploader like image fupload plus a template file and css for your theme. Uff. And now here you go and explain to a beginner that Drupal is easy.
Thing is: in the end it is quite a simple structure. Recently I came to my personal best practice: Using multiple values for an imagefield and the new image fupload for slick batch uploads. With the new feature in imagefield to add captions to images even when using multiple values and the ability to rearrange the order with the drag and drop widget there is not much to miss. With some Views and Taxonomy magic one should be able to build _Really_ large multiuser galleries, and if you want to seperate the images better you make single nodes of each - good news image fupload also supports this option. Sounds like a missing link, eh?
But this is not what this post is about.
Now how do I share this wonderfully flexible gallery with someone who came to Drupal only a month ago and is struggling with CCK let alone views without having to do it for him? This thought came to me and I asked people on IRC for a solution. I found that just recently an entire bunch of modules saw the light of day that make up for this strength of drupal that can be a weakness.
Lotsa nifty solutions
There is context and spaces with features and also patterns Module that are able to save complex configurations of Modules and settings into something that can be transferred to other sites given the same modules are installed. I have not investigated in depth, so forgive mistakes about the exact way the modules do this. Context and spaces come up with a module in the end that you install and which then performs his magic. Patterns produces more of a portable code like you use for importing/exporting content types / views / panels.
Here's a presentation screencast for patterns. There is also an explanation available on drupal.org what exactly is the difference in approach between the two alternatives and how they complement each other. There is even an entire group on d.o. that is on deployment and packaging. Wow.
I am not sure if any of the modules solves the problem that this approach also needs styles to be added to style.css and you might need a template file - normally the system does not have write access to the themes directory so this might be tricky. Storing styles inside the database makes every purist shout bloody murder. But I am sure this problem will be solved.
All these approaches have in common that they differ heavily from installation profiles: installation profiles can only be performed on the first install of your site. These approaches can be used anytime to add features to an already existing site. So the use cases are different and can well complement each other.
Together with the new energy that is put into installation profiles this might take Drupal to another level: We can preach the holy purity of CCK/Views/writeyourmodulenamehere solutions and at the same time make them affordable for Non-Drupal-Ninjas. I am really excited about this and we will see what the enormous creativity of Drupal Developers brings to us next. The daily needs for better solutions brings on the power to solve problems that have been there for quite a while, so one can be very confident. Rock on!