Planet Drupal
Improving the security of Drupal's securepages module
A common scenario we encounter is where the bulk of a site's traffic is anonymous users, for whom it would be an unnecessary burden on the server to transfer pages with SSL. However, it is still desirable to serve some parts of the site with SSL (typically the admin pages, or perhaps some commerce-related pages). Luckily, the securepages module accomplishes this nicely.
This approach has a drawback, however. The same session cookie is used to access both SSL and non-SSL pages. Since this cookie is passed around in plaintext, it's easily hijacked by an attacker, who can then access your SSL-protected pages with the hijacked session.
Drupal for Facebook Wins Prize at f8 Conference
Yesterday's f8 developers conference included a hackathon, where those of us who attended discussed our work with Facebook's own developers. I'm proud to report that Drupal for Facebook was selected as one of the best, and I came home with a "sweet prize" (a Sony PS3).
Even without the prize, the conference was well worth attending. Facebook presented a lot of information about upcoming changes to the platform. And Theivery Corporation put on a great performance.
Drupal for Facebook is an add-on module for Drupal which allows Drupal sites to integrate with Facebook, and cutting-edge Facebook Applications to be built on top of Drupal. Please take a moment to help the project...
- If you're attending DrupalCon Szeged, vote in favor of my proposed session. It needs more votes to be included in the schedule.
- If you're a Drupal user, please review this grant proposal. Your vote could help fund Drupal for Facebook. It takes a lot of work to keep up with the latest changes to the Facebook platform and receiving this grant would be a big help.
My Life. The Book.
Virginia DeBolt writes at Blogher about the recent "open tutorial" session the Blogher conference had on Sunday. I'm not much on conferences, but I thought this was an excellent idea. What typically happens at tech conferences is that the experienced people connect up with the other experienced people and the newbies are forced either into a generic crowd around the well known folks, or into connecting with each other. This is no bad thing, but there's no opportunity for dispersion, so to speak, other than in the formal conference sessions.
With the Blogher one-on-one tutorials, not only are experienced people helping inexperienced people, there's a breakdown of barriers between the old guard and the new, and in such a way that it isn't a "fangirl/fanboy" situation, either, which can only be healthy for all participants.
Returning to Blogher's one-on-one, one person who Virginia helped was Frances Ellen who had an interesting challenge.
Frances is writing a book, Story of Nadia, two paragraphs at a time, published twice a week. She's using Wordpress, which means that the entries are displaying in reverse chronological order, and without any tie-in with each other. The solution Virginia and the others came up with was to create a TOC for the sidebar that pulls the entries together in proper order. An idea that came to my mind when reading the post was to create chapter "categories", and have a category listing in the sidebar ordered alphabetically: Chapter 1, Chapter 2, and so on. When publishing a new post, Frances would then pick which chapter "category" to place the posting. To ensure the publications display correctly, she can use chronological order for the postings in the chapter categories, when the chapter category pages are opened. This would effectively create a book without having to manually edit entries in a TOC.
As for the tag items Frances already has, these could be managed as "tags" rather than categories—though with a single purpose site, the meta information should be in the header as meta tags, rather than in individual post, since this information is repeated across all posts. However, these tags also tie Frances' work into the Wordpress.com tag cloud, so the repetition does serve a purpose.
Using chapter categories, with a sidebar entry, and chronological entries within the categories, not to mention, meta information in the header, should work at Frances' site without having to move any page, or leave wordpress.com. In fact, I'm not sure if Frances isn't doing this already, and if so, my apologies for a redundant suggestion. The only other recommendation I would make is that within the "Chapter" pages, to remove the sub-titles on the individual listings, as these disrupt the reading flow. This modification should be a theme change, and not impact on the existing site structure.
What Frances has works for her, but I can't resist using this challenge to plug Drupal, because it is just this circumstance that made me move to Drupal.
At my personal site, Just Shelley, I don't have a taxonomy or categories. Instead, I'm writing a series of "books", on specific subjects, with each new writing being a new "chapter" in the book. I've started two, and I'll probably end up with five or six "books" when finished. I don't plan on writing the books in order, either. I'll add a page to one, and the next time, a page to another.
I've made the first page of the books "sticky", which means they will always be on the front page, and always at the top of the page. Currently I have the site set to show three postings on the front page, but I'll eventually make it five or six: enough for the first pages of the "books", and perhaps a couple of additional entries for photos or whatnot.
However, I've set the feed to ten items, and when I publish a new book page, I publish it to the front page. Though it may not actually, physically show in the front page of the item, it will show up in the feed, so my patient, long-suffering friends following my long, meandering stories can be notified when I've published a new page to one of my "books".
Only the first page of each book will show on the front page of the site, but clicking through will open up not only the first page of the book, but a table of contents, as well as book navigation at the bottom of the page (as shown in my Drupal Live book, here at RealTech). You can then either use the book navigation or the TOC to click through to pages. You can print the whole book at once by selecting the Printer Friendly option at the bottom of the first page. This is particularly handy if you want to export the entire book in order to read on your Kindle or computer while offline. Pick Printer Friendly, and then Save As (single web page) from your browser. For Kindle users, use the free Kindle conversion email address for your account, or just pay the dime.
The tech to make this work:
- Use Drupal, of course
- I use clean URLs and the pathauto module in order to ensure friendly URLs for the book pages
- Download the development version of the token Drupal Module, because this one supports book titles, as part of the book page URLs. I believe this will end up being version 2.0 when released.
- In the Automated alias settings tab, in URL Aliases, I use the following setting for Node path settings, Book page paths: [book-raw]/[title-raw]. The only time I override the automated setting is for the first page, which I set to the URL for the book. Another option could be to add my own alias consisting only of the book title URL, pointing to the first page.
- Set the Post Settings to how ever many entries you want to show on the front page. Also set the Length of Trimmed Posts to unlimited—you'll want to manage your own book page excerpts, not let the system do it for you.
- In the RSS publishing settings, I set the number of entries to ten, but you'll want to use a number higher than your post setting count. In addition, I use title and teasers as content, but that's my own preference.
- This is also a personal preference, but I use the Atom feed module, and add a printer friendly link to the Atom feed by appending the following to the post using the Ad Insertion setting: <a href="http://shelleypowers.com/print/%id/">Printer friendly version</a>
- Speaking of printer friendly, I use the printer friendly Drupal module to enable this functionality. By using this module, people will be able to download or print the entire book from the first page of the book. They can also read the book directly from their feed if my web site design proves too much of a challenge for whatever browser and device they're using.
- Finally, and only because I am not using categories, I created a Page entry that lists each "book" with an associated image, and connected it to my Primary links via the Writings menu item. It's not necessary since all books will have their first page listed on the home page for the site. However, people are dependent on menus, so it's better to be redundant than risk confusing the readers who reach your site other than through your feed, or who may not know that the front page also serves as navigation for the site. I also have exactly one image gallery, created using the image module, containing all images I upload. I won't be uploading many, as they are mainly story illustrations or photos I think complement the site. In addition, I use the Lightbox2 module to provide slideshow and dynamic photo expansion capabilities.
I'm still relatively new to Drupal, so some of these steps may end up being unnecessary. However, the site works, the process works, and is relatively simple to maintain, so I'm happy with what I have.
Asset 1.0 Release Candidate 1!
I'm proud to announce Asset RC1. The most notable changes are integration with the media mover module, more usability improvements to the asset wizard and a lot of improvements to the asset_import module. This now allows for an easy migration from the upload or image module for instance.
With the first release candidate out the door, I'll start porting the module to Drupal 6.
Media Code Sprint (Top 3 Goals)
Andrew Morton (drewish), Darrel O'Pry (dopry, remotely), and I are heading up a Media Code Sprint in Portland this week! Come help, in person or remotely, if you're interested in multimedia and Drupal! It has now officially started, and as I've volunteered to help keep folks updated, here goes...
First the reasons.
Number One: Better Media Handling in CoreDries conducted a survey prior to his State of Drupal presentation at Boston Drupalcon 2008, and number one on the top ten (or 11) list of what would make THE KILLER DRUPAL 7 Release was "Better media handling".
Let me repeat that. Better media handling.
People have done really amazing stuff in contrib, but it is difficult (if not impossible in many cases) for developers to coordinate the use of files, as there is no good means for file handling in the core of Drupal. Thus, we have several dozen (or more) media modules doing some small part, or even duplicating functionality, sometimes out of necessity.
We need (better) media and file handling in Drupal core. In particular, there has been a patch for a hook_file in the queue for over a year, which has been in the Patch Spotlight (for the second time, no less) since May! (And has been RTBC several times during that process...) Come on folks.
One of the powers of Drupal is its system of hooks. We have hooks to modify nodes, to notify changes to user objects, to alter nearly any data (such as forms and menus). Noticeably absent is a consistent handling for files or any sort of notification. We need hook_file.
So goal Number One: get media handling in core. The means? Add hook_file and make files into a 1st class Drupal object. We'll be creating a test suite for functionality in the hook_file patch to validate it and "grease the wheels" to get it committed.
The other goals of this sprint pale in comparison to the first in utility, but are still highly desirable and worthwhile.
Number Two: Refactor File Functionality in CoreAs an extension to the first goal, there is a lot of inconsistency with how Drupal currently handles files. For instance, in some areas a function may return an object, and in others a string. Additionally, some functions are misnamed, or try to do too much to be useful as a file API.
Some specific examples: for what it does, file_check_directory may be better suited as something like file_check_writable, or maybe even split into that and file_check_make_writable. Also, for instance, file_scan_directory needs to return file objects, rather than the current associative array (keyed on the provided key) of objects with "path", "basename", and "name" members corresponding to the matching files. (The function does what it needs to, but the returned objects have keys not corresponding to anything else used in core.)
So goal Number Two: refactor file functionality in core. The means? Go through and check for (and fix!) existing file functionality for documentation and consistency.
Number Three: Spruce up Existing Contributed Media ModulesThere are several much needed multimedia modules that have not yet been upgraded to Drupal 6 (or which are still in heavy progress). This includes (but is not limited to) Image Field, Image API, and Embedded Media Field. Additionally, some major improvements can be made, both to these, and to other essentials, such as the Image module, such as creating a migration path from Image to Image Field (once that module is stable).
So goal Number Three: spruce up existing contributed media modules. The means? Get these modules upgraded!
I want to recognize the valiant and heroic efforts made by everyone to date, as fortunately, there has already been significant progress on all these fronts. That makes our job (relatively) easy. In some respects, we just need to finish up the jobs that have already been started.
Thus, drewish declared this week the Media Code Sprint!
We need your help. If you are a developer, or want to be a developer, jump on in! If you aren't ready to develop, or consider yourself too new for that, you can still help test patches and functionality. Jump on in! And please, even if you don't know how to apply a patch, you can still help with documentation and other small (but important) tasks. Jump on in!
If you're in Portland, You Have No Excuse®. If not, you can jump into #drupal in IRC any time you're available.
The official dates for the sprint are today (Wednesday July 23, 2008) through Saturday (the 26th). We'll be online and working most of that time. I'll make sure we continue to post progress as the week develops.
Of course, as is the wonderful nature of Drupal, this is an ongoing process. Even if we achieve our stated goals, there will always be more.
Thanks,
Aaron Winborn
Media sprinting
So back in April I started talking to Keiran at about doing a media and files sprint... well it's finally happening. aaronwinborn in in Portland and dopry is going to be helping remotely. Aaron posted a great writeup on what we're hoping to accomplish so I'll blockquote at length:
Andrew Morton (drewish), Darrel O'Pry (dopry, remotely), and I are heading up a Media Code Sprint in Portland this week! Come help, in person or remotely, if you're interested in multimedia and Drupal! It has now officially started, and as I've volunteered to help keep folks updated, here goes...
First the reasons.
Number One: Better Media Handling in CoreDries conducted a survey prior to his State of Drupal presentation at Boston Drupalcon 2008, and number one on the top ten (or 11) list of what would make THE KILLER DRUPAL 7 Release was "Better media handling".
Let me repeat that. Better media handling.
People have done really amazing stuff in contrib, but it is difficult (if not impossible in many cases) for developers to coordinate the use of files, as there is no good means for file handling in the core of Drupal. Thus, we have several dozen (or more) media modules doing some small part, or even duplicating functionality, sometimes out of necessity.
We need (better) media and file handling in Drupal core. In particular, there has been a patch for a hook_file in the queue for over a year, which has been in the Patch Spotlight (for the second time, no less) since May! (And has been RTBC several times during that process...) Come on folks.
One of the powers of Drupal is its system of hooks. We have hooks to modify nodes, to notify changes to user objects, to alter nearly any data (such as forms and menus). Noticeably absent is a consistent handling for files or any sort of notification. We need hook_file.
So goal Number One: get media handling in core. The means? Add hook_file and make files into a 1st class Drupal object. We'll be creating a test suite for functionality in the hook_file patch to validate it and "grease the wheels" to get it committed.
The other goals of this sprint pale in comparison to the first in utility, but are still highly desirable and worthwhile.
Number Two: Refactor File Functionality in CoreAs an extension to the first goal, there is a lot of inconsistency with how Drupal currently handles files. For instance, in some areas a function may return an object, and in others a string. Additionally, some functions are misnamed, or try to do too much to be useful as a file API.
Some specific examples: for what it does, file_check_directory may be better suited as something like file_check_writable, or maybe even split into that and file_check_make_writable. Also, for instance, file_scan_directory needs to return file objects, rather than the current associative array (keyed on the provided key) of objects with "path", "basename", and "name" members corresponding to the matching files. (The function does what it needs to, but the returned objects have keys not corresponding to anything else used in core.)
So goal Number Two: refactor file functionality in core. The means? Go through and check for (and fix!) existing file functionality for documentation and consistency.
Number Three: Spruce up Existing Contributed Media ModulesThere are several much needed multimedia modules that have not yet been upgraded to Drupal 6 (or which are still in heavy progress). This includes (but is not limited to) Image Field, Image API, and Embedded Media Field. Additionally, some major improvements can be made, both to these, and to other essentials, such as the Image module, such as creating a migration path from Image to Image Field (once that module is stable).
So goal Number Three: spruce up existing contributed media modules. The means? Get these modules upgraded!
I want to recognize the valiant and heroic efforts made by everyone to date, as fortunately, there has already been significant progress on all these fronts. That makes our job (relatively) easy. In some respects, we just need to finish up the jobs that have
already been started.Thus, drewish declared this week the Media Code Sprint!
We need you to help. If you are a developer, or want to be a developer, jump on in! If you aren't ready to develop, or consider yourself too new for that, you can still help test patches and functionality. Jump on in! And please, even if you don't know how to apply a patch, you can still help with documentation and other small (but important) tasks. Jump on in!
If you're in Portland, You Have No Excuse®. If not, you can jump into #drupal in IRC any time you're available.
The official dates for the sprint are today (Wednesday July 23, 2008) through Saturday (the 26th). We'll be online and working most of that time. I'll make sure we continue to post progress as the week develops.
Of course, as is the wonderful nature of Drupal, this is an ongoing process. Even if we achieve our stated goals, there will always be more.
Thanks,
Aaron Winborn
S3Saver notes from Sacramento Drupal User's Group
At the Sacramento DUG I did a demo of our S3Saver module.
The module is incredibly effective at moving files from a local files dir to S3 at save time, and has very little impact on a drupal install itself.
You can view the original powerpoint presentation, and download the (incredibly alpha) module as well.
There are a few drawbacks to this approach, as I mentioned in our talk:
Major advancements in Drupal file handling
I wanted to mention a few technologies that I've been working with and contributing to lately. This post will be pretty tech-heavy, so I'll throw out some keywords ahead of time so that you can decide if this is something that you'll be interested in reading further: WebDAV, desktop-web integration, RDF, and content-addressable storage, all in the context of my content management system of choice, Drupal.
My work specifically has been in porting and updating some work started by Arto Bendiken (whose projects, it seems, I just start to wrap my head around, and appreciate the foresightedness of, about two years after he himself conceives of them). Aside from writing a guide to his high-traffic caching module, Boost, and porting his debugging tool, Trace, to the latest version of Drupal some time ago, I've been porting his Drupal-WebDAV content bridge, File Server, fixing some bugs in the underlying DAV API, and integrating with the updated File Framework that Arto and my other colleague Miglius Alaburda have been working on.
I'll tackle each of these technologies in layers, starting from what the user sees on down to the gory details under the hood in how the files are stored and queried.
File Server
File Server lets you take a WebDAV client, such as Mac OS X's Finder or Windows Explorer or, better yet, a richer program like Transmit or Cyberduck, login to your Drupal-based website with it using the account that you already have, and drag and drop the files and folders presented there to you. Assuming your Drupal site has file nodes (essentially, chunks of content in the form of file uploads) on it, this dragging and dropping can be used to re-categorize the files, upload new files, and change your site's category structure.
Here's an example:
1) I have a Drupal-based website.
2) I connect to http://my-website-url/dav
in a WebDAV client and login with my Drupal user credentials. I'm then presented with a view of my tags:
3) I drag a file from my desktop into a folder corresponding with the tag that I'd like it to be categorized under:
4) When I go to my Drupal site, the file exists as a node and has been tagged appropriately:
This happens via File Server, which I've recently ported to Drupal 6, and Arto's DAV API, which lets you hook all kinds of Drupal facilities into a standardized DAV interface. In this case, we're connecting Drupal's taxonomy (i.e. tags and categories) and in turn, its file nodes, to DAV. It makes a lot of sense here because the files are going into Drupal as file nodes, with automatic conversion into other formats, automatic metadata extraction (as seen in the sidebar above), and automatic indexing into the search system.
File Framework
File Framework is the link between the actual files and the node structure in Drupal. In short, File Framework takes the default facility in Drupal for file uploads and replaces it with a more robust system for backend storage, exporting of info, and conversion into alternative formats. For example, you can upload a PowerPoint presentation and automatically get related nodes out as PNG, PDF, Flash slideshow, and more.
File Framework is a lot of under-the-hood stuff and is in active development for Drupal 6. It also builds upon two other frameworks, RDF and Bitcache.
RDF
RDF stands for Resource Description Framework and is not Drupal-specific, though it embodies a concept that Drupal is trying to move towards. RDF is a step in the direction towards the semantic web, where computers can understand what data is about, not just what it contains.
The most common application for this technology is search engine technology. Today, when trying to find a picture, we search for web pages that contain the words picture of a sunset and only turn up hits if those words are found. In the semantic web, this info could be found because the search engine can understand that there is a person who has a name of Joe, who has a profession of professional photographer, and who has a website at http://joephoto.com
, which in turn has a file which is a digital photograph, which has a description containing the word sunset. As a result, some context can be gleaned by the computers indexing all of this stuff, such as the fact that this likely to be a good photo of a sunset since Joe is a professional photographer, and can provide much richer info than the search engine merely looking for words that the content author may or may not have written near the object in question.
Anyway, RDF is the stuff that stores these triples, the idea of subject-predicate-object, e.g., website has a file. Arto has hacked together an API for RDF storage in Drupal and the File Framework now uses it. This RDF storage facilitates not only descriptiveness on the site, but also helps with cross-site searches when this data is needed.
None of this stuff is useful if people have to focus on creating the RDF, so this RDF API combined with Drupal makes it easy for people to keep doing what they were doing before and have the system take care of all of this context stuff.
Bitcache
Bitcache is a means for content-addressable storage (CAS), which means that, unlike most filesystems that we deal with today, the address or URL pointing to a file is based merely on the content, not on the set location. To put it another way, when you put a file on your hard drive, it gets an address like file:///users/justin/myfile.txt
that is assigned arbitrarily (well, actually by you based on how you name it and where you put it, but it's arbitrarily related to the actual content). In Bitcache, a unique string of letters is calculated when the file is put into the system and as long as the content remains the same, the pointer URL to that file will remain unchanged. When the file changes, a new copy is created which necessarily has a different address; however, the old file remains in the system as well. So, a benefit is that a given file that exists in a given state is never put into the system twice, since it can be continually referred to by its content address. Another benefit is that the old versions are necessarily retained for archival purposes as well.
A quick hypothetical example: a computer server is in use by an office of people to store their MP3 collections on. When someone puts a new song on the server, it gets a content address. When a second person later puts the same song on the server, a second copy is not created -- instead, the second person gets a reference to the original file's address, since the file is the same anyway. That way, half the storage is used. As more people add the same song to their collections, the storage benefit increases. This is a simplified and contrived example, but it's the basic gist of things.
The File Framwork for Drupal makes use of Arto's Bitcache project. So, when you are using the stack of tools I've been talking about here, under it all, you also get the benefits of CAS behind the scenes.
Conclusion
I'm going to stop there, as I'm sure I've done some grave injustice to some of the complexity involved, left out some of the cons that come with the pros of these systems, and I've probably mangled some of the descriptions too. But then again, that's why I'm working on a piece of it and not the whole thing ;-)
I get excited about this stuff not just because of the Cool Factor™, but also because this sort of thing, when combined with Drupal 6's capabilities in the workflow department with triggers and actions, can lead to some powerful publishing and conversion capabilities for file uploads. And all of this paves the way for Drupal to be the most forward-thinking content management system out there.
Questions? Comments? Corrections? Leave a note below and let's sort it out.
CiviCRM deployment from host to host
While working on a CiviCRMCiviCRM is an open source and freely downloadable constituent relationship management solution. CiviCRM is web-based, open source, internationalized, and designed specifically to meet the needs of advocacy, non-profit and non-governmental groups. site, I ran into a problem of migrating the installation from the development host to the QA, and from there to production. Since CiviCRM stores so much host-specific information in the database, every transfer needed to re-configure the host information. After much research and a little bit of pain, we discovered that the proper way to do this is to simply empty the config_backend field in the civicrm_domain table.
So with this little bit of code tacked onto our deployment scripts:
- #Reconfigure the CiviCRM backend
- echo 'UPDATE civicrm_domain SET config_backend = NULL WHERE id = 1;' \
- | ssh $USER@$HOST "mysql -h $DB_HOST -u $DB_USER -p$DB_PASSWORD $DB_NAME2"
deployments are once again flowing smoothly.
Drupal: Adding a footer to all of your system e-mail
Drupal’s hook system is making me almost as happy as Emacs’ hook system does. =)
There’s a hook_mail_alter function that allows you to modify any message your system sends. Example:
function mymodule_mail_alter($mailkey, &$to, &$subject, &$body, &$from, &$headers) { $body .= "\n\n" . t('This is a system-generated email, please do not reply to this message'); }
You gotta love developers who plan for extensibility and put all sorts of hooks into the code…
Content Profile - the "profiles-as-nodes" base module for drupal 6!
I'm really happy to announce that Content Profile is going to be the common base module for "profiles-as-nodes" solutions in drupal 6.x!
After a long discussion discussion about the bio 6.x port, I already thought my efforts to join bio and node profile development were for nothing.
But then the discussion continued and we were able to agree on a common base module, which avoids unnecessary code duplication and provides an API on which further extension modules may rely on. The people from FunnyMonkey started working on it and agreed with me on continuing my previous work on this topic: Content Profile :)
So now as we have a decision we can concentrate on coding..
Tying Drupal to public access television channels
I work in PEG access television and had the pleasure to present at the Alliance for Community Media national conference.
PEG (public, educational and government) access television is a model that provides local residents access to the local cable systems in their communities to produce and distribute their local perspectives within their cities. A lot of stuff comes along with that deal from the cable company, from the city, and from private non-profits. You can read all about that here if you want to learn more.
PEG faces challenges in adopting web-based distribution methods because of some very specific funding stream problems. The federal government requires cable companies to turn over a small percentage of revenue in each municipality (and lately to entire states with statewide franchising agreements) to make television. PEG organizations face risks by entering an internet-based video distribution market with their local content that cable providers and local governments may eliminate their funding streams because they are no longer making television.
With this picture fully painted, this conference workshop highlighted a number of organizations who are experimenting with Drupal as a platform to replace aspects of their television infrastructure. There are a bunch of projects in development around this PEG industry and I wanted to point some of them out. read more »
Uh. Holy crap...
http://google-opensource.blogspot.com/2008/07/and-winners-of-2008-google...
http://drupal.org/webchick-wins-best-contributor-open-source-awards
I have lots I'd like to say about this, but am a bit overwhelmed just at the moment. Suffice it to say, my sincerest thank you to everyone who nominated me for this award, and to O'Reilly, Google, and the Drupal community in general for being so unbelievably awesome.
DrupalCon Szeged Session Proposals: Aggregation, Context and Spaces, Messaging and Notifications, and Drupal Talent
We're getting excited to come over for DrupalCon Szeged in just over a month. This will be the fifth DrupalCon that Development Seed has attended, and it always amazes me how much these conferences show off just how fast this community is growing and how far Drupal has come as a platform. We've looking forward to talking about some of our latest work to add and refine functionalities to Drupal. Here's a quick summary of the sessions we've proposed to lead. If you're interested in these topics, please vote for them!
Spaces and Context Modules: Tools for Site Building: The Context and Spaces modules are two relatively new tools in Drupal's aresenal that make it easier to build complex websites. In this session, Jeff Miccolis will talk about both modules' approach and show developers how they can be used and extended. He'll also show some examples of the modules in use on community portals, sites-within-sites, and intranets. Vote here.
Messaging and Notifications Frameworks: At DrupalCon Boston, Jose Reyero introduced the beta versions of these frameworks. A lot has been done to improve them since, and in this session Jose will talk about the upgrades, specifically in how they handle subscriptions, notifications of events, and the various delivery methods for sending messages. Another focus of this session will be to discuss the shift way from email only delivery methods to multi-platform methods. Vote here.
A New Aggregator for Drupal 7: Drupal's core aggregator is getting a revamp in Drupal 7. In this session, Aron Novak and Alex Barth will talk about why this step is needed and what you can expect from the new core aggregator. Aron began this work as a Google Summer of Code project last summer and this summer has continued to finetune it. The result is a simple yet extensible and efficient architecture that should serve Drupal well. Vote here.
Attracting and Retaining Drupal Talent: At the rate Drupal's popularity is growing, we're finding that there just aren't enough developers to meet the demand. Web shops and organizations are coming up short in finding the Drupal talent they need to build and run the online tools they want. This session will look at ways to beat out the hiring competition to find and retain Drupal talent. Eric Gundersen will talk about how Development Seed has grown our team, and Kris Krug from Raincity will share his experiences and lessons learned.
You can vote on all the sessions (including BoFs) you want to see at DrupalCon Szeged here. See you in Szeged!
Presenting Ubercart and more at Drupalcon Szeged
As I posted before, I'm super excited about the upcoming Drupalcon in Hungary. I've never been further east than Barcelona, and I never imagined I'd get to spend my first anniversary with Christina in Budapest... I'm definitely up for any sightseeing recommendations for our time there.
The Uberdevs have set some goals for Ubercart at Drupalcon, and one of them is to present and share as much information and knowledge as possible. To that end, we've proposed two sessions and a BoF that I hope folks will find useful (and vote for accordingly).
I'll be doing my Introducing Ubercart session for the third time running, presenting attendees with a brief overview of Ubercart, a look at some advanced feature configuration, and an update on Drupal 6 development (with an eager eye toward the future).
Lyle and I are also planning to present A Hands-On Guide to Module Development aimed at beginner and intermediate developers. We're looking to walk through our module development "best practices" that go beyond coding and security standards into the things we've done wrong and are starting to do right when it comes to structuring/writing code and using Drupal and contributed module APIs. Code samples will be provided... check out the description for more info on the format.
Lastly, we've scheduled a BoF to talk about Ubercart in Drupal 6. We're looking to brief folks on where things stand and where we hope to be in the coming months. Hopefully there will be some good brainstorming and collaboration to make Ubercart's core more solid, consistent, and easy to work with on Drupal 6 and beyond.
We're eager to share and to learn, and we're looking forward to a good time once again.
DrupalCamp Colorado on Saturday and Sunday
In case you've somehow missed the news, DrupalCamp Colorado is happening this weekend.
greggles posted a nice rundown of things to do for DrupalCamp. Registration is easy. The price is an affordable $10 ... or $25 at the door (if there's room -- the cap is at 100 people).
Hey, and we can haz stickers! Maybe your laptop wants one, too?
Node comment D6 porting
For those interested, nodecomment.module has been getting some porting attention. The DRUPAL-6--1 branch has been created and a development snapshot should be available soon. Please give it a try if you're interested and give some feedback.
Views 2 integration
I will teach you port templates to Drupal 6 themes
If being a co-lead organizer for Drupalcon Szeged 2008, getting married in three weeks, moving flats and of course building products and services with Acquia would not be enough, I thought I'd top my Drupalcon participation with a nice surprise session submission.
If my session makes it (vote!), and you come to Drupalcon Szeged (you should), I'll teach you how can you convert an existing HTML/CSS template to a Drupal 6 theme in a matter of 45 minutes, with the full live demo from the ground up included with instructions. I've managed to do this before, so I am confident it should be lots of fun. We will break our Drupal site numerous times, and learn to live with it while the tough time constraints are looming on us, and should of course get to a gorgeous end result. We will convert the Modern World template by Solucija and will get to a Drupal 6 theme with blocks, menus a theme screenshot and all.
I'll also tell you how can you contribute the theme to drupal.org or through other means if the template license does not allow you to upload to drupal.org. This is of course not a requirement, since you might as well only work for your own client. You decide!
Just make sure to vote on my session, to help me get into the program and come to Drupalcon not only for this great session, but all the other fun programs which are on offer. You definitely should not miss it!
Acquia named AlwaysOn Global 250 Winner
We recently received word that Acquia was named a AlwaysOn Global 250 Winner. Initially the AlwaysOn 100, this year marked the expansion of the list to 250 due to the "rapid growth of startup communities around the world." According to AlwaysOn, "this year's AO Global 250 reflects a set of trends that are about to ignite new market opportunities the whole world over."
Drupal: Testing multisite/domain-access Drupal locally and on a testing server
We’re using Domain Access to manage a number of related subdomains on a single server. I prefer to develop and test locallly, then push my changes out to a testing server so that other people can try the system. I use the same domain names on my computer and on the test server so that I don’t have to make any changes in the database. To switch between them, I comment or uncomment a line like
127.0.0.1 example.com sub1.example.com sub2.example.com
in my /etc/hosts file.
However, Firefox caches the domain name information, and it can be confusing to figure out which server I’m on. The following setup makes this much easier:
- Install Domain Details to show the IP address of the server in your status bar. Good for a quick check - am I on 127.0.0.1 or elsewhere? (NOTE: I started with ShowIP, but it looks like ShowIP caches the information.)
- Install the Clear Cache Button extension.
- Restart your browser and customize your toolbar. Add the Clear Cache button. Click on this before switching sites.
In an ideal world, I’ll have a plugin that automatically twiddles my DNS entries, too. =)