Drupal.org
Drupal.org Scheduled Downtime Monday, May 7, 5:00 PDT (May 8, 00:00 UTC)
Drupal.org and its sub-sites (api.drupal.org, groups.drupal.org, etc) will be going down for 20 minutes Monday, May 7, 5:00 PDT (May 8, 00:00 UTC). This maintenance window will be used to upgrade our single sign on system. Please follow the @drupal_infra twitter account for updates during the downtime and thanks for your patience!
Sites will remain functional for the majority of the scheduled downtime, but everyone will be logged out. You may not be able to log into sub-sites for a few minutes as the update is rolled out.
Drupal 7.14 and Drupal 6.26 released
Drupal 7.14 is now available, which contains bug fixes as well as fixes for security vulnerabilities from Drupal 7.13.
Drupal 6.26, which fixes known bugs (no security issues) is also available for download.
Download Drupal 7.14Download Drupal 6.26
Upgrading your existing Drupal 7 and 6 sites is strongly recommended. There are no new features in these releases. For more information about the Drupal 7.x release series, consult the Drupal 7.0 release announcement, more information on the 6.x releases can be found in the Drupal 6.0 release announcement. Drupal 5 is no longer maintained, upgrading to Drupal 7 is recommended.
Security informationWe have a security announcement mailing list, a history of all security advisories, and an RSS feed with the most recent security advisories. We strongly advise Drupal administrators to sign up for the list.
Drupal 7 and 6 include the built-in Update status module, which informs you about important updates to your modules and themes.
Bug reportsBoth Drupal 7.x and 6.x branches are being maintained, so given enough bug fixes (not just bug reports) more maintenance releases will be made available, according to our monthly release cycle.
ChangelogDrupal 7.13 only includes fixes for security issues. Drupal 7.14 also includes bugfixes. The full list of changes between the 7.12 and 7.14 releases can be found by reading the 7.14 release notes. A complete list of all bug fixes in the stable 7.x branch can be found in the git commit log.
Drupal 6.26 only includes bugfixes.
Security vulnerabilitiesDrupal 7.13 were released in response to the discovery of security vulnerabilities. Details can be found in the official security advisory:
To fix the security problems, please upgrade to Drupal 7.13.
What is included with each release?We made two versions of Drupal 7 available, so you can choose to only include security fixes (Drupal 7.13) or security fixes and bugfixes (Drupal 7.14). You can choose your preferred version. We are trying to make it easier and quicker to roll out security updates by making security-only releases available as well as ones with bugfixes included. We hope this helps you roll out the fixes as soon as possible. Read more details in the handbook.
Known issuesNone at this time.
DrupalCon Munich Accepting Session Submissions
The call for papers is still open for DrupalCon Munich -- but only until May 11! Trainings too! The DrupalCon content team is looking for sessions that cover pushing the boundaries of Drupal and its increasing use as a cross platform system. Help shape what is presented at DrupalCon with this year's theme, "Open Up! Connecting systems and people."
Any proposals for sessions should fit within one of the following tracks:
- Coding and Development
- Community
- Design and Theming
- Business and Strategy
- Site building
- DevOps
To learn more about each topic, view the Session Track page. Here you can find out the anticipated audience and the topic focus, as set forward by each track chair. Selected Sessions and Trainings will be announced May 29.
Curious to learn how sessions are selected at DrupalCon? Learn more about the session selection process.
Core conversations will open for submissions on May 29, read more about Core Conversations on our website.
We are also inviting all organizations with training experience to submit proposals for the Pre-Conference Trainings, to be held on Monday, 20th August 2012.
Open Up - submit your session before May 11! We look forward to seeing you in Munich August 20-24. Join the Drupal community in Europe this summer and register now for early-bird pricing.
Google announces Summer of Code results for 2012 - Drupal gets 13 projects!!
We are thrilled to announce that Google will be sponsoring 13 Drupal projects for Summer of Code 2012. We would like to extend our sincere thanks to Google, who are investing over $72,000 in the Drupal project.
As always, we had many more projects that we would have liked to accept than we were able to. The mentoring team deliberated fiercely over the past two weeks, and arrived at the final acceptance list.
Drupal will benefit from microdata support for contrib field types, help topic module for documentation team, sales reports integration for drupal commerce, materialization plugin support for views, search api statistics etc.
If you would like to keep up to date on Summer of Code happenings, would like to volunteer to help test students' projects, and/or would like to help students as they find their way in our community, please join the SoC 2012 working group and help out in whatever ways you can.
Here's to another great summer! :)
Application Student Mentors Auto Tagging Articles using Semantic Analysis/ Topic Modelling Arjun Kapur Matt Chapman Enhancing Feedback module (D7) Manu Chaudhary Alex Weber Enhancing Secure Code Review Module Udit Jaggi Michael Hess Extend microdata support to contrib field types Anca Dumitrache Lin Clark Help Topic module for the Drupal Documentation Team and for the help system temaruk Jennifer Hodgdon Improving RESTful Web Services Sebastian (sepgil) klausi Materialization Plugin for Views Dhruv Baldawa Janez Urevc Phone / SMS / VoIP integration with Drupal Commons nitech Leo Burd Port Og_panels to D7 and Improve Message notify to make it the source of email notifications sanjay rohila ezra-g Preparing Menu Block Module for Drupal 8 Core Chad Whitman Dave Reid and John Albin Wilkins Sales Reports for Drupal Commerce Christophe Van Gysel Daniel Wehner Search API Statistics Michael Timofejev Thomas Seidl Translation Management Tools Server Sebastian Siemssen Miro DietikerDrupal.org Scheduled Downtime Thursday, April 19, 5:00 PDT (April 20 00:00 UTC)
Drupal.org and its sub-sites (api.drupal.org, groups.drupal.org, git.drupal.org, etc) will be going down for 45 minutes Thursday, April 19, 5:00 PDT (April 20 00:00 UTC). This maintenance window will be used to upgrade our backend media servers. Please follow the @drupal_infra twitter account for updates during the downtime and thanks for your patience!
NOTE: During this downtime window, we will also disable access to the git repositories via SSH. The git:// protocol will still be functional.
Groups.Drupal.org Update: New maintainers and plans for Drupal 7
Back in 2009, Groups.Drupal.Org (GDO) went through a major transition including upgrading from Drupal 5 to Drupal 6, a redesign, and adding new maintainers. We are currently in the process of a similar transition. The site has already gone through a redesign, and as we make plans to transition to Drupal 7, we will also be moving to new maintainers for the next year.
Making it easier to contribute to GDOBetween the Drupal Association’s initiative to improve *.drupal.org, the community brainstorming on site improvements, and feature requests in the Groups.Drupal.Org issue queue, there is clearly a lot of interest in making improvements to GDO. However, for folks who want to roll up their sleeves and help by filing a patch, the path to replicating GDO for development purposes hasn’t always been clear. As a strategy for making it easier for anyone in the Drupal community to file a patch and streamlining maintenance efforts for the site, we have proposed that GDO will run the Commons distribution of Drupal for Drupal 7. Of course, this means that improvements made to GDO benefit sites powered by Drupal Commons and vice-versa, that generic improvements to Commons will benefit GDO.
New maintainers: Meet Ezra, Scott, and JustinHelping with this transition, Ezra Gildesgame (ezra-g), maintainer of Drupal Commons, is also now a maintainer of groups.drupal.org. Ezra is the technical lead for Drupal distributions at Acquia, has been contributing to Drupal for over 5 years, and also maintains the Conference Organizing Distribution (COD).
Our other new Groups.Drupal.Org maintainers are Scott Reynen (sreynen) and Justin Toupin (justin2pin) from Aten Design Group. Scott is Lead Developer at Aten and has been contributing to Drupal for over 5 years, including helping to organize the Denver group on GDO. Justin Toupin is CEO at Aten, and has been leading the organization’s involvement in Drupal since version 4.7.
Getting involved: How you can make GDO betterThis process of upgrading Groups.Drupal.Org is an especially good time to get involved by joining a few different groups and queues:
- Commons related are the Commons group, and the Commons issue queue for bugs/ideas that affect all Commons sites.
- The GDO issue queue is for features and tasks specific to Groups.Drupal.Org.
- Groups to discuss the site: http://groups.drupal.org/maintenance and http://groups.drupal.org/groups-drupal-org
Note that Ezra, Scott, and Justin have agreed to work on the site for at least a year. If you think you might want to take over in a year, the best way to do that is to get involved working on the site in these issue queues.
Thanks, Greg & Josh!This is also a great opportunity to thank Greg Knaddison (greggles) and Josh Koenig for their help maintaining Groups.Drupal.Org over the past few years. Josh and Greg found they were too busy with other projects unrelated to community site building which made it harder to find time for GDO (Josh building Pantheon and Greg working with Acquia’s Profesional Services Security Group and the Drupal Security Team). Greg and Josh hope that transitioning to people who spend more of their lives working on community sites will help GDO be an even more valuable collaboration platform for our community.
/drupalgive initiative
Hi friends. I'm hoping that you'll support another Drupal community initiative that I've recently dreamed up. All you have to do is add a /drupalgive page to your organization's web site.
Two organizations have published already at http://www.acquia.com/drupalgive and http://www.chapterthree.com/drupalgive. These pages are based on a design by Nica Lorber of Chapter Three. Feel free to reuse this design or just publish a plain listing page. It is better to publish a plain page than none at all. Or use the Feature at http://drupal.org/project/drupalgive.
A /drupalgive page highlights the great work that your organization is doing for the Drupal project. Not only does your organization receive credit for the work you do, but we also nudge other organizations to give back as well. I expect that employees and potential hires from non-contributing organizations will start demanding to give back. This initiative gives those folks something to point to when advocating and educating inside their organization.
Here are examples of appropriate and inappropriate items for a /drupalgive page:
Appropriate- A podcast educating folks about great Contrib modules.
- A link to a significant patch review or commit on drupal.org.
- A blog post about Drupalish wireframe templates that anyone can use.
- An announcement about your latest site launch (even whitehouse.gov).
- A new video was added to your commercial video subscription service.
- New features for your paid Drupal hosting service.
Your /drupalgive page should also emit an RSS feed at /drupalgive/rss. We'll add your feed to the new Planet Drupalgive (page, RSS). To get added to the feed, follow the Drupal Planet process. Lastly, please include a link to http://drupal.org/project/drupalgive so that folks can learn more about the initiative.
One simple way to build a /drupalgive page is to add a 'drupalgive' term to your site taxonomy and tag posts with it. Alias the term detail page to /drupalgive and you are done. An alternative is to create a dedicated content type for these entries and a simple View at /drupalgive will show the listing.
Please comment below and lend your support or provide other input.
UX Team Q1 2012 update
Bojhan Somers and Roy Scholten are the Drupal UX Team leads.
We believe that Drupal 8 User Experience needs a lot of work to truly make all users of Drupal love what they are working with. We believe that by improving core, we improve the entire Drupal experience for everyone.
How are we doing this? By working with core initiatives, providing ideas, sketches, wireframes, detailed designs, and actively engaging in discussion. D7UX taught us a lot of hard lessons, we now know how to communicate our design rationale more clearly, maintain a UX vision throughout the maze of issues, and empower developers.
What are we working on? We are working on a few initiatives; mobile, blocks & layouts, multilingual and leading a lot of smaller efforts around improving our content authoring and site building experiences.
Drupal 8 design progress so far Content creationOur content creation experience is still far from being great, but we have been improving the content creation experience from all angles. We have received lots of feedback on our proposals, and iterated with the community on various parts of this experience.
- Research on a interaction model for the content creation page
- Redesigning the Create Content page
- Find content iterations
We have now finalized most of our research activities and we want to start implementing a few of our major ideas. For this to happen, we need developers who want to improve this part of core.
There are two very actionable issues at #1510532: Implement the new create content page design and #1510544: Actual preview of content for you to help out on!
Blocks & LayoutsThe blocks & layout initiative started by EclipseGC focuses on solving the messy experience of placing parts (blocks, views, panes) on the page. We believe this can be fundamentally better if we tackle it in core. This initiative will allow us to arrange and organize blocks into flexible layouts through a drag and drop interface. This initiative has many UX components, from finding the right blocks, to selecting the context, to creating mobile layouts.
We have done a lot of research the past few months to understand the space we are designing for. It’s incredibly complex, but will be a huge win if we can provide a great solution straight out of the box.
- Research on pages & components; what are the fundamental concepts?
- Research on context usecases; what are the primary use cases?
We will need help from everyone; developers, designers, user researchers, end users and business owners! Become part of the discussion in the Drupal 8 Blocks & Layouts everywhere initiative group.
UX team activities UX team bi-weekly office hoursWe started to hold bi-weekly UX "office hours" (next one will take place 16 April, 20:00 UTC, 4PM NYC, 4 AM Tuesday Singapore/Shanghai), where we will discuss recent activities of the team but also review contributed modules. This has resulted in modules such as Taxonomy Acces Control making major improvements.
UX team activityThe team has been busy in Q1 2012:
- Becky Gessler, Garen Checkly and Jen Lampton conducted a usability study at the Google offices, resulting in a detailed findings report and Drupalcon Denver core conversation talk on how to solve it.
- Lisa Rex, Dharmesh Mistry (dcmistry), Erik Stielstra (sutha), Alexander Ross (bleen18) have done a total of 22 interviews about how people use the module page.
- Lewis Nyman has been working hard on designing Drupal’s mobile interface, resulting in interesting discussions around navigation, principles and actual implementation of ideas in the mobile issue queue.
- Roy Scholten(yoroy) has presented on Core product: 3 is the magic number and organised several sprints around UX at Drupalcon.
- Jared Ponchot has been contributing design proposals, to our effort to redesign the content creation page.
- Kristjan Jansen (kika), Jeff Noyes (Noyz) and Kevin O'Leary (tkoleary), Michael Keara (UserAdvocate) have put out various ideas around media UX, creating UI standards for add/edit flows, optimizing the content listing and research for the Blocks & layout initiative.
We have also released our ideas around redesigning the module page, adding a project browser to core, adding search everywhere, draft revisions and much more in the usability issue queue!
We need your help!We need volunteers:
- Developers who can help us with the PHP, CSS or JS parts of these changes.
- New and experienced UX designers to work on the new features that we want to introduce in Drupal 8.
- A project manager who can help break down tasks, coordinate contributors, update blog posts and issues, and help the UX team & leads focus more on UX.
If you're interested in becoming a contributor to the UX Team in one of the roles above, contact Bojhan Somers and/or Roy Scholten.
You can find us in in the usability group, contact us directly by e-mail (or drupal.org contact form), join us on IRC in #drupal-usability, or find us in person at Frontend United.
The cool stuff we're working on
Still not sure? We we love a lot more help to pursue all these crazy ideas within the next 7 months:
- Improving the content creation experience. Discussion take place in our design proposal, and implementation is taking place in #1510532: Implement the new create content page design
- Layouts & Blocks initiative, building a drag & drop editor where you can place components, build layouts and manage pages. Discussions take place in the Layouts & Blocks group.
- Mobile administration, Drupal 8 should be great to use on any phone help us in making the administration mobile friendly. Discussions are taking place in the Mobile group
Thanks!
- Bojhan and Roy
AttachmentSize ux_sprinting.jpg55.93 KBDocumentation Team 1st Quarter 2012 Update
Hello from Jennifer, your friendly Drupal Documentation Team leader! It’s time for a quarterly update on what’s happening in the Documentation team.
First off, I just want to remind everyone that I’m still planning to step down as Documentation Team Leader at the end of 2012. If you’re interested in becoming the co-leader or assistant leader now, and taking over at the end of 2012 as the main team leader, see http://groups.drupal.org/node/203258 for more information. It would be good to find someone soon!
Events- The Documentation Team is currently holding weekly "Documentation Office Hours"—one-hour IRC meetings on Tuesday afternoon (North American time), open to anyone for questions and discussions about contributing to documentation. This schedule is likely to change soon; join the discussion about a new time for office hours.
- The API documentation cleanup sprint from last quarter has continued into this quarter. The goal is to bring the Drupal 7 and 8 core API documentation much more in line with our documentation standards. To join in, visit the issue page.
- Lots of content was updated on Drupal.org this quarter. Of particular note:
- There used to be a "Community and Support" link in the top navigation of Drupal.org; now there are separate Community and Support links, and the Support page has been completely redone (a redesign of the Community page is also in the plans). Hopefully this will help people new to Drupal connect with the help they need to get started. Thanks to Lisa Rex, David Hernandez, and others for making this happen!
- The Omega theme project organized a group to update the Omega section of the Community Documentation.
- The Media module project organized a group to update the Media documentation.
- An effort is underway to create a Mobile section in the documentation.
- We started a New Contributor Tasks section on Drupal.org. This is a place where people new to contributing to Drupal can go to find meaningful and doable tasks to start with. If you have ideas for the section, there’s a page describing how to add to it (with templates), and a suggestions page too.
- 712 different contributors made a total of 3976 revisions to documentation pages on Drupal.org. Wow! (I have a new statistics page that totals this up). Apologies if your project didn't make it into the list above -- there's a lot going on and I can't keep track of it all!
- Neil Drumm and I (with the help of other patch contributors) are continuing to make updates to the software for http://api.drupal.org. This quarter, there were major improvements to the linking and references features of the site -- check it out if you haven't been there lately! If you would like to work on the API module, check out the issue queue (http://drupal.org/project/issues/api) or find jhodgdon in IRC to get oriented.
- I was given permission to commit Drupal Core 7/8 documentation and coding standards patches in February, and to help out in case of "Core Is Broken!!" emergencies. Hopefully this will lessen the burden on Angie, Nat, and Dries, freeing them up to concentrate on bugs that improve the Drupal software functionality.
Last year, the Docs Team (or at least its leadership) got a bit discouraged about Documentation infrastructure improvements taking quite a while to get deployed to Drupal.org. But now there's a new process for getting improvements deployed, and Neil Drumm is working on them with hours funded by the Drupal Association. So, I'd like to get us working on improvements to "docs infrastructure" (tools, navigation, etc. for Drupal documentation writers and users) again.
I started working on that this quarter, and several small things were deployed. That went well, so there are now more in progress. Two that we hope to get done soon are a Docs Team effort to have better navigation for Community Docs, and LoMo's project to replace the Books page with a content type/View. Join in the discussion and/or help out!
And as a preview, this summer I would like to really get working on the "curated docs" we've been talking about for a year or more... Watch http://groups.drupal.org/documentation-team for updates!
Next StepsIf you're interested in helping with Drupal documentation:
- New contributors: Check out the tasks in the New Contributor Tasks section, or read http://drupal.org/contribute/documentation to learn all about contributing to documentation. Or come to the weekly office hours (see Events section above) to ask questions and get started.
- Drupal Documentation announcements, discussions, and events are posted on http://groups.drupal.org/documentation-team and on Twitter (@drupaldocs).
- API documentation cleanup sprint (for programmer-documenters): http://drupal.org/node/1310084
- Work on the API module: http://drupal.org/project/issues/api
California Institute of the Arts (CalArts)
The nation's first art institute to offer BFAs and MFAs in both the visual and performing arts, CalArts is dedicated to training and nurturing the next generation of professional artists, fostering brilliance and innovation within the broadest context possible. Emphasis is placed on new and experimental work and students are admitted solely on the basis of artistic ability. To encourage innovation and experimentation, CalArts' six schools--Art, Critical Studies, Dance, Film/Video, Music and Theater--are all housed under one roof in a unique, five-story building with the equivalent of 11 acres of square footage in Valencia, California, just 30 minutes north of downtown Los Angeles.
Describe the project (goals, requirements and outcome): The nation's first art institute to offer BFAs and MFAs in both the visual and performing arts, CalArts is dedicated to training and nurturing the next generation of professional artists, fostering brilliance and innovation within the broadest context possible. Emphasis is placed on new and experimental work and students are admitted solely on the basis of artistic ability. To encourage innovation and experimentation, CalArts' six schools--Art, Critical Studies, Dance, Film/Video, Music and Theater--are all housed under one roof in a unique, five-story building with the equivalent of 11 acres of square footage in Valencia, California, just 30 minutes north of downtown Los Angeles. INTRODUCTION: After years of managing an ever-growing static-HTML website which included sub-sites for each of its six schools, CalArts was preparing to move their web presence to a Content Management System and looking for an Open Source solution to meet a series of functional and aesthetic requirements. SITE REQUIREMENTS: Given the size of content already comprising the old static site, CalArts needed a CMS which could offer innovative means of site navigation whilst allowing inter-relational multi-media content. To better clarify the specific abilities of each CMS we considered for the solution, Design Guru and CalArts defined a general set of site requirements. In addition to simply storing content and allowing stake-holders to add to/edit it, the site needed to provide modular scalability and function as an application framework that could provide unique data-handling and grow depending on the changing needs of the Institute through time; without needing to undergo massive core upgrades to afford such changes. Here are some major requirements of the new CMS solution: User-accessible, hierarchical content : Access to all published material on-site should be subject to a robust permissions system, Content/Comment publishing authority and viewing ability should be user- specific, definable by user-groups. Extensive calendar functionality : The ability to restrict event attendance/viewing per user group, Users will be able to post events to a common event listing, based on their site permissions, The ability to relate multi-media to particular event listings (eg. Attach an image or video clip), Site-wide Forums & Commenting: In order to increase multi-lateral communication, threaded commenting will be available throughout the site. News publishing : Permissions-specific ability to submit/publish & view news postings, News-to-front-page; high-level users (eg. Staff) will be able to assign news postings to the Institute/School front-pages. News, as well as other content on the site, can be un/subscribed to by users, based on permission and content taxonomy, News Syndication via RSS Advanced Theming possibilities : Aesthetically separate each school and other areas of the site whilst maintaining an overall site 'design,' Each content item on the site should be style-able independently, Dynamic navigation should be able to be presented in multiple areas of the site, Content should be group-able (e.g. Faculty types per school; to display in vertical lists that can load individually but be presented alongside these lists.) SOLUTION: After considering relative merits of a number of CMS' the decision was made to develop the site in Drupal 5.x Drupal natively afforded us the framework to build a site that was highly functional and customized yet not locked-down in core structure. When stacked up next to other CMS' which are built to allow simple content hierarchies (like Joomla), Drupal excels in providing the ability to ignore vertical hierarchy and organize multi-media content multi-laterally through taxonomy and associated access permissions. Of course, at its core, Drupal's use of 'nodes' meant that we could relate anything on the site to each other - which proved to be an invaluable feature of the site when looking at styling and multi-admin content management issues. Three key aspects of the build were crucial; Aesthetic demands of the site required a combination of third party modules to allow styling patterns across content types, site areas and so on, Hundreds of site users were to be administrators of various areas of the site and afforded permissions accordingly; they had to not be able to interfere with each other's content and all had to be able to work on the site with ease - the default permissions layer would need to be extended and a WYSIWYG editor installed with some image/file handling capability, Custom content types would be necessary along with their dynamic display through lists.TECHNICAL:In order to meet the various site requirements and build aspects listed above, we made good use of the following Drupal modules. Modules Key modules used: Node style Menu Trails Menu Trim LoginToboggan Administration menu Views Bonus Pack User Import Taxonomy Access Control Devel Content Construction Kit (CCK) Category Views Panels Usernode Javascript Tools Pathauto FCKeditor - WYSIWYG HTML editor IMCE Why these modules were chosen: The general overview of how these modules come together is that we have various content types on the site though it mainly consists of 'page' content. Pages have URLs written by the Pathauto module and in some cases, where we need specific URLs per page which are outside of the rules, specific content types have been created which do not have rules set. Those content types are still subject to the same categories and are thus accessible in site-wide searches and when users click on the tags at the bottom of pages etc... We used the Views module extensively throughout the site to create custom lists of nodes and those lists aren't always displayed as pages. You can see an implementation of Views blocks on faculty bio pages per school - where the blocks act as dynamic menus; listing all 'usernode' content in particular categories. Each block is headed with a title and the overall effect is a menu which could not have been created with the stock Drupal menu system. One of the focal accomplishments we made with drupal on this site is the depth to which site theming can take place. With the Node Style module, we have created a series of styles to present each school and other site areas as visually distinct, yet with the same layout - provided by two custom Drupal themes. One theme is simply two columns with a top area that features 5 block areas to store the top menus and search bar. The second theme is a variation of the first; with an additional block position to create the effect of three vertical columns - where the middle one displays views-block-powered dynamic list menus (like on faculty bio pages). In order to load the dual layers of rotating background imagery per site area, node styles simply call specific image rotation scripts written in php via CSS. Note: this is just a partial list of what we've installed on the site - to give you some leads on modules we really feel were crucial in being able to construct this specific site. Community contributions:Unknown.
Project team:Perhaps the main feel-good factor when working with Drupal is the amazing community to learn from and bounce ideas around with. Thanks to anyone who posts to drupal.org and hangs out in #drupal-support - as well as Robert Douglass (from lullabot) for tips and feedback over the past couple of months.
PrintedArt - Collection of Fine Art Photography With Web Storefront
Printed Art is a platform for photographers to display and sell their work as finished art, ready to hang on the wall. Photographers submit their artwork for the PrintedArt Collection to be reviewed by our curators. Once the curators approve a submission, an ubercart product node gets automatically generated and attached to the image node. Customers can then configure an image by choosing the size and material for their order.
In addition to the collection, PrintedArt is also offering printing services where customers upload their own images to be produced as artwork on aluminum dibond and acrylic. After the upload, images are automatically analyzed to determine the print sizes that can be offered based on the image resolution.
Modules Key modules used: Image Ubercart UC Node Checkout Content Construction Kit (CCK) Workflow Why these modules were chosen: N/A Community contributions:N/A
Project team:G Meredith Group - owns and operates PrintedArt.com and worked on the Drupal architecture, planned the rollout and implemented a large part of the features described above.
Eleks Design Studio - implemented 3rd-party API integrations, worked on custom Drupal modules for workflow management and eCommerce.
G Meredith Consulting - provided marketing strategy for the PrintedArt rollout.
Specimania iPhone app for The Field Museum of Chicago
N/A
Team members: seahostlerProperty Place - A Property Search Application in Facebook
N/A
Team members: daveprattSparkeo - Promoting and Monetizing Video through Drupal and Kaltura
n/a
Project team:Inkod Hypera. Inkod is one of Israel's leading design studios and the company that is behind the design and UI of the Web site and video player. They have a great balance between usability, marketing, business and design skills and we love working with them.
Kaltura. Although we've known the Kaltura team for quite a while, this project gave us a chance to work closely with their services division and together take their platform to new heights. Ninja Flash artists + a strong passion for Web technology = great fun.
Vocalo.org: Public Media For The People
Vocalo.org is a bold new concept in community media: a complex social media website and an associated broadcast radio station in Chicago, IL.
Vocalo.org is a place for people to compose and share stories -- including images, audio, and video -- with their fellow users. User-generated content is broadcast on the radio station as well as made available on the website for licensed remixing. Vocalo users span the globe, while the broadcast radio station (89.5 FM) and local focus keep the project true to its roots.
Vocalo.org also engages the community with free "Media Creation Workshops" in Chicago-area communities.
The Vocalo.org website was created by the Chicago Technology Cooperative (CTC) on behalf of Chicago Public Radio, using a heavily customized version of Drupal 6. The current version of the site began development in November 2007 and was launched on May 15th, 2008.
Major features:Integration with the broadcast system at the radio station for syncing on-air playlists and schedules with the website and allowing hosts to easily broadcast user-generated audio on the air.
A cross-browser, AJAX-enabled media library allowing users to seamlessly upload images, audio clips, video files, and media from 3rd party sites like YouTube into an online WYSIWYG editor with a drag-and-drop interface.
Telephone podcasting which allows users to call a hotline and record audio content directly onto the site using only their telephone.
A full palette of online community features including social networking, private and instant messaging, and folksonomy.
CTC was able to leverage the robust contributed module space in the Drupal community, help propel those efforts on to Drupal 6, and develop a new social media platform -- Scald -- to fulfill the vision of the Vocalo project. In the words of Vocalo.org's Online Community Manager, Shannon Heffernan:
CTC has the creativity to develop tools outside the realm of what Drupal provided. It's exciting to work with an organization that is committed to finding specific custom solutions for our needs, while considering how we could both benefit from and contribute to the Open Source Community.
Background:The original Vocalo.org pilot site, which was built on Drupal 5, was launched in May 2007 after two months of rapid development by CTC. The initial site included some broadcast integration features, basic social networking capabilities, and the ability for users to upload images, audio, and video clips. This early community media sharing functionality was implemented using CCK and Views.
Multiple iterations of the site were released over the summer of 2007, culminating in a version 1.6 release in the early fall. During this period, the broadcast and community media model rapidly evolved with input from Vocalo early adopters, staff, and hosts. The radio broadcast was limited to a small test market on the outskirts of Chicago, and the site was not heavily promoted.
As the concept and pilot site became increasingly popular, Vocalo.org staff and CTC developers jointly developed a plan for implementing Vocalo.org 2.0 with a suite of new features and more sophisticated media management tools for both users and on-air hosts. Plans are underway to heavily promote the site as the on-air radio broadcast footprint expands from the smaller test market to millions of potential listeners in the Chicago metropolitan area in September 2008.
The requirements of the site -- large numbers of content items, sophisticated design, video and audio transcoding, real-time media broadcasting, and an increasing number of users -- demanded that scalability and performance be considered high priority. Though Drupal 6 was still in active development, it was clear that building against Drupal 5 would not satisfy the site's requirements.
Media enabled nodes:Vocalo.org needed to exercise fine-grained control over the display of media in different areas of the site. Sometimes an uploaded video should be a direct link, sometimes a thumbnail, sometimes presented using a Flash-based player. As developers, CTC faced a competing concern: how to manage highly specified theming without creating a system too complicated to be easily modified or maintained.
The solution was to introduce the concept of display contexts. Each major content type has a global default template, but it can be overridden based on both specific node type and the current display context. Following Drupal conventions, every theme retains the power to override the defaults to account for the idiosyncracies of the particular type of media in question, and allows for the targeting of special cases without duplicating common ones.
The display layer depends on two indispensable modules: Media Mover (which was ported to Drupal 6 by CTC developer Brandon Bergren AKA bdragon) and Imagecache. These modules, and the underlying free software libraries they use, provide the display layer with a powerful set of tools for converting, manipulating, and repurposing an incredible range of media.
Vocalo.org wanted users to go beyond simply uploading a few files -- users should be able to use their media to tell stories via personal blogs, and information about the media used in a post must be available for theming and search. Using Drupal's Input Filters, Scald tracks the use of media in Vocalo's blog posts and attaches information about included media for use elsewhere within Drupal.
Type, Upload, Drag:The Vocalo.org post creation system creates a cohesive platform for all of Vocalo's content creation tasks: uploading media, browsing one's own and others' media, and the ability to smoothly combine rich media and text into stories. Type, upload, drag: Vocalo.org makes creating stories and uploading media simple and fast.
The custom form workflow and UI depends on a customized version of WYMEditor, and drew heavily from the popups project to provide the user with a swift method for uploading media. On the back end, a modified upload module handles file type detection and utilizes Media Mover to handle the necessary conversions. All the user does is upload a file.
Frustrated by the common conventions for media attachment in other editors, CTC developers Brandon Bergren (bdragon) and David Eads (davideads) created a WYMEditor plugin to allow the user to click and drag media from their library to a blog post, and to see how the media will look in their post. Here, the Scald contextual rendering system found a powerful use: when a user “drops” audio or video into the post editor, what she sees looks like a Flash player, but is really a simple facsimile created with minimal XHTML and CSS. This makes it easy for the editor to manipulate these items, and sidesteps several browser inconsistencies and bugs.
In the database, media used inside blog posts is represented with simple tags which are interpreted and rendered when the posts are displayed. This simple format means that Scald is compatible with a huge variety of rich editors and even the lowly text box.
The Chicago Technology Cooperative's David Eads is actively involved in developing the new, ground-up rewrite of WYMEditor, and bringing it to Drupal.
The media library uses the Scald Data API to allow the user to search and select Scald-adapted nodes based on a variety of characteristics including author, title, description, taxonomy terms, Scald Unified Type, publication status, etc. Scald will work with Views 2 to provide powerful query building to end users, but retains the Scald Data API to allow developers a more specific and efficient method for sifting through media content.
Beyond the the web:To engage with the broad, demographically diverse population of Chicago, Vocalo.org wanted to provide users with a way to publish their content online without Internet access. CTC developed a telephone podcasting module using the OneBox voicemail service, though the module could be used with any number of similar services.
The system is dead-simple and incredibly robust: A user registers her phone number by adding it to her profile. When the Vocalo OneBox receives a message from the registered number, the audio is automatically posted to her blog.
For the Vocalo.org, this message is attached to a custom node type. Phone audio nodes have a Scald Adapter, which allow them to interact seamlessly with the site. However, the module can easily be extended to route and process the audio in a wide variety of ways. This is another of the modules CTC is planning to release in the very near future.
Online and on-air:Hosts needed the ability to put together playlists of user-generated and third party content and also to notify users that their content will be on the air. The website needed to provide users with accurate information about the station's broadcast schedule and live broadcast. Additionally the website needed to provide users with ways to interact with the broadcast while online.
To engage users online with the spontaneous nature of the live broadcast, CTC developed a lean, efficient chat system dubbed the ShoutBox. The live hosts post questions to the online audience and discuss the responses on the broadcast. The ShoutBox helps blur the lines between "listener", "user", and "participant".
To help hosts, CTC wrote a custom playlist module which provides the ability to build playlists out of contributed media as well as arbitrary data. To further engage the audience, the playlist module contains a notification system that lets users know their media will be on-air by sending them an email or a private message. The playlist module exploits the Scald system with a drag-and-drop interface and robust search tools for the hosts.
Social networking tools:The social networking functions of Vocalo.org were effectively met by the existing set of social networking tools in the Drupal contrib space (Buddylist, Privatemsg, Service Links, and Fivestar). When CTC began development of the site, many of these modules were not ported to Drupal 6, so CTC ported and modified them to fit Vocalo's specific needs.
Future development:As Vocalo.org continues to grow as a site and a community, additional features will continue to be added. Current plans for the future include additional media management tools and more mobile integration, such as the ability to publish multimedia content directly from a mobile phone or handheld. In addition, many community media organizations have been exposed to Vocalo.org and are planning similar efforts in their own communities.
Free software, public media:With Vocalo.org, Chicago Public Radio has demonstrated that it is on the forefront of bringing the values and traditions of public broadcast media into the so-called Web 2.0 era. The strength and flexibility of Drupal have helped make Vocalo.org the success it is as a place to share, discuss, and interact.
As active participants in the Drupal ecology, a team of CTC developers led by Tom Wolf (t-dub) are currently modularizing much of the custom code created for Vocalo.org so that it can be published on drupal.org. CTC developers will be involved in actively maintaining, extending, and supporting Scald into the forseeable future. In addition, many of the changes and optimizations made to other contrib modules, including Drupal 5-to-Drupal 6 ports, have already been submitted back upstream.
CTC is honored to have the opportunity to help bring this vision into being, and in the spirit of public media, to both draw on the incredible efforts of others to create and nourish Drupal and the many other free software tools used, and to share the fruits of our labor with the Drupal community.
Modules Key modules used: Scald Media Mover ImageCache WYMeditor Why these modules were chosen: N/A Community contributions:The foundation of Vocalo.org 2.0 is Scald, which abstracts and unifies many types of multimedia content. Scald provides media-oriented data manipulation, display, access control, and caching functionality layered on top of the Drupal CMS.
Any type of node created in Drupal can be adapted for use with Scald. Using the familiar hook mechanism, Scald provides developers with a simple mechanism for creating adapters which determine the appropriate title, description, author, metadata, access rules, and file information for any piece of content. On vocalo.org the various Scald Adapters provide a standardized set of video information for theming and search, regardless of whether the video was uploaded by the user or came from a 3rd party video hosting site.
In addition to providing a consistent interface to media data, Scald's permission system allows for sophisticated handling of data access and editing rules. Vocalo.org must balance protecting its users' copyright concerns while encouraging remixing and reuse. The Scald access system allows developers to represent complex permission rules with a minimum of hassle.
The Chicago Technology Cooperative plans to release a suite of modules based on the work done developing the Vocalo.org media infrastructure. Scald will be released in early September with the other related modules following into the fall.
Team members: bdragon davideads t-dub Project team:Chicago Technology Cooperative (CTC)
War Child UK - nonprofit Drupal 7 site
War Child UK is a small charity that helps protect children in some of the world's most dangerous conflict-affected countries. Our main site www.warchild.org.uk is was built from scratch on Drupal 7 in October 2011.
Describe the project (goals, requirements and outcome): HTML5 and CSS3 As the site was unlikely to have a major refresh for the next few years, we decided to build it using the Boron HTML5 base theme, and it uses some CSS3 properties like border-radius quite heavily. It uses rge CSSPie module to make sure these features render properly for non-CSS3 compliant browesers like IE7 and IE8. The design was created by Mike Kus and then converted to a Drupal theme. Views The site makes extensive use of the excellent Views Module (now part of Drupal core). It has some custom-styled Views Sliders (for instance on the home page) and many pages (like Discography) are Views-Grid based. The fact that these are relatively easy to make and amend is one of the best features of Drupal. Panels As there's a variety of layouts, the Panels module is also used extensively. Once a couple of custom templates were created, these could be used to create many different pages. Static Page Caching The site uses the Boost module to deliver pages to browsers much faster. Rather than querying the database every time it wants to dynamically create a new page, the site instead saves a static .html version of the page in its cache folder and serves that up to the user instead - which is much faster. It took a bit of fiddling to get it set up properly, but it was well worth it as it runs pretty quickly on a fairly basic server environment. Donations As a charity site, one of its most important functions is for online donations. This is perhaps the one area where we struggled most. The donation form is connected to a payment gateway (Worldpay) who process the transaction and then send a simple callback to a MYSQL table on our server. We looked at various shopping cart modules like Ubercart but none seemed to quite fit the bill. It means that we have to go through phpMyAdmin to export the table in csv format to see the donations. We don't have (or want) an SSL certificate and all the compliance issues that go with it, so the transactions are done via a themed Worldpay page. We don't collect or even see the users' card details. The build The site's theme was built internally and then we used an agency (New Digital Partnership) to provide specialist Drupal help to set up some of the templates and functionality. It took about 6 months, though in hindsight and with better planning on our behalf it could have been built much quicker. The result The site was featured as a .net magazine site of the month and gets thousands of visitors per month from CSS gallery sites thanks to its design. The online donations have increased approximately five-fold and the traffic has doubled as the site is more SEO friendly and has made our free Google Adwords campaigns a lot more effective. Apologies if some of the above info isn't as detailed as it might be - I'm a intermediate Drupal user but not much of a PHP coder or module developer - which is why I'm enormously grateful for all the patience and support that people here on the Drupal community have shown me over the last few years! Feel free to post any questions in the comments below. Modules Key modules used: Views Panels Boost Why these modules were chosen: n/a Community contributions:n/a
Project team:Ben
Online Manager at War Child
Tax-Compare
Tax-Compare is a comparison website that allows visitors to compare the major providers of tax software and select one that will best suit their needs. The site was launched in 2008 as static HTML, but due to the nature of our business, it was re-launched in 2010 using Drupal 6.
Modules Key modules used: Pathauto Global Redirect Path redirect Keyword Link Views Glossary Why these modules were chosen: We made our system even more SEO-friendly by using contributed modules <a href="http://drupal.org/project/pathauto">PathAuto</a>, <a href="http://drupal.org/project/globalredirect">Global Redirect</a>, <a href="http://drupal.org/project/path_redirect">Path Redirect</a>, <a href="http://drupal.org/project/page_title">Page Title</a> and <a href="http://drupal.org/project/nodewords">Nodewords</a>. We used the Views module to build all the comparison grids. And finally, a rich resource section was built for Tax-Compare with the help of the Glossary module. Tax vocabulary terms mentioned in the content are automatically linked to a page with a full definition. Community contributions:We also made a major contribution back to the Drupal community by submitting a patch for the Keyword Link module. Our patch adds an interface to build keyword link values and pairs. It also has more complicated logic for linking keywords.
iCitizenForum.com
At the end of 2007, Aten Design Group worked with The Colonial Williamsburg Foundation to deploy iCitizenForum.com, a Drupal website about Citizenship. The following case study documents some of the factors that led to choosing Drupal, and outlines the technical approach for the project.
The Colonial Williamsburg Foundation operates the world's largest living history museum in Williamsburg, Virginia. The foundation preserves and interprets a 301-acre Historic Area; operates museums, outreach programs, and the John D. Rockefeller Library; and carries out important research and archaeology pertaining to the origins of America. In accordance with its mission, "That the Future May Learn from the Past", the foundation is concerned not only with recreating the 18th-century experience, but with facilitating education about the idea of America–both in its beginnings, and in its relevance for the future.
iCitizenForum.com, a website that promotes discussion around the topic of Citizenship, is a fitting extension of this core mission.
Describe the project (goals, requirements and outcome): By the time of Aten Design Group's involvement with the project in late 2007, work had already started. Designs had been produced. A website had been custom-coded in ColdFusion. Community features had been implemented using a .NET-based social software solution. The concept had already gone through several major evolutions, and its stakeholders felt that the latest iteration still wasn't quite spot-on. We began our work with a collaborative discovery process to reassess the primary goals for the website and identify the best steps forward. The central purpose of the project, as defined during this process, would be to engage users with a discussion around the idea of Citizenship. In line with this goal, we established the following requirements: <ul> <li>Use blogs, organized by themes and tags, as the primary means of engaging users.</li> <li>Leverage video as a prominent means for delivering content, in blog posts and elsewhere in the website.</li> <li>Offer forums as a platform for supplemental discussion.</li> <li>Provide in-depth resource materials, including translations for some documents, with background information on the subject of Citizenship.</li> </ul> <h3>Windows Hosting</h3> Colonial Williamsburg runs IIS on Windows NT servers, uses ColdFusion for development, and serves up data with Microsoft SQL Server. It was an uncommon environment for Drupal. Time constraints and a pre-existing service agreement for a dedicated NT server made considering LAMP unrealistic, so we began exploring the viability of hosting Drupal on Windows in a production environment. We installed PHP 5, MySQL, and an IIS module (ISAPI Rewrite) to provide mod_rewrite-like URL rewriting for clean URLs. <h2>Implementation</h2> With server configuration mostly behind us, we began building out the website. <h3>Content Types and Teaser Lists</h3> We implemented content types using the CCK, and created custom PHP blocks to handle content lists. We went back and forth a bit on whether to do this with views or custom queries, but in the end sided with the latter–our decision aided by the fact that lists would need little-to-no editing, and did not depend on joins with CCK fields. Additionally, each "Discussion Topic" category within the website has a correlating Discussion Topic node, assigned to its respective category, which serves as a stub for listing related posts. This approach provides workflow controls for categories that are already available for nodes. New topics won't actually appear in the website until the appropriate user publishes the correlating Discussion Topic node. Throughout the website, custom blocks inspect the current page, determine the current Discussion Topic, and display lists of related content. <h3>Site-wide Call-outs</h3> The client needed a way to call-out any content from within the website in the form of graphic promotions assigned to the right-hand sidebar. This was accomplished by creating a custom block that displays images attached to any content in the website via a CCK imagefield labeled "callout". <h3>WYSIWYG</h3> Originally, content was entered and edited with the help of TinyMCE. We later swapped TinyMCE for Markdown, plagued with the same old problems presented with JavaScript-based attempts at WYSIWYG. (Read more about our thoughts on WYSIWYG vs Markdown.) <h3>CAPTCHA</h3> CAPTCHA was used for all input fields available to unauthenticated users. We chose Math CAPTCHA, rather than image-based CAPTCHA, for accessibility reasons. <h3>Translations</h3> Multiple translations of citizenship resources were accommodated via a custom content type (Page Translations) equipped with a Node Reference field for linking to original texts. Each translation features an overview "about" page that provides a description of the content and goals within iCitzenForum.com, as well as a list of all additional resources available within the website in that specific language. Because the implementation uses a custom content type with a CCK node-relate field, dynamically generating these lists, and linking each translation page back to its respective source, was relatively simple. Throughout the website, translations are represented visually as a series of flags beneath the title of any document where additional translations are available. In the site-wide footer, these same flags each link to an overview "about" page for the respective translation. <h3>Video Content</h3> Some of the most interesting functionality at iCitzenForum.com involves its handling of video content. Early in the project, we simply allowed content contributors to paste embed code from YouTube, Vimeo, Blip and similar websites into the body field of blog posts. Later, we began discussing a way of aggregating posts that contain video into a single, self-contained video library. Additionally, video editors at Colonial Williamsburg wanted the ability to more closely control the quality of videos being published, which in this case meant hosting the video locally. We wanted to maintain the ability to syndicate video to third-party video websites, but wanted to better manage the quality of original videos posted within iCitizenForum.com. These new requirements pushed additional development in two directions. First, we needed a way to list video posts together in a library-like setting. Second, we needed to dynamically push videos out to services like YouTube. <h3>Video Library</h3> To accomplish the first requirement, we created a simple module called VideoLib that provides a configurable view for displaying video content, relevant taxonomies, and related videos within a single view-port. The module exposes several theme functions that offer in-depth control over the look and feel of the video library. It includes JavaScript that applies unobtrusive AJAX actions to the taxonomy and related video navigation, providing a highly responsive, single-page experience for users. Video is attached to content via a CCK file-field labeled "video". Any content type can behave as video content simply by adding the "video" field to it. Within the settings page for VideoLib, admin users can specify which content types that have the "video" field should be included in the video library. Additionally, administrators can choose which taxonomies to expose as navigation blocks. In this case, we wanted Discussion Topics to appear as navigation options down the left side of the page, but not Tags. It is worth noting that we could have used a combination of page and block views to accomplish a similar end result. We opted instead to create a custom module that rolls all of the necessary functionality into a single, more portable, centrally managed feature for this website, with potential application for future projects as well. <h3>Link Rewriting</h3> Stepping back a moment to the video library functionality, it is worth going into a bit of detail about the way we handled linking. Within the video library itself, all links are routed to URLs that appear as "videolib/{term id}/{node id}", a menu path controlled by the VideoLib module, which in turn handles all of the necessary functionality for displaying videos. We wanted to go beyond this, and make sure that any node within the video library could be displayed outside the library as well (in teaser lists, for example). To accomplish this, we used the custom_url_rewrite system hook function in settings.php. Within that function, we detect if the "node/{node id}" path belongs to a video post. If it does, we dynamically rewrite the URL to "videolib/{term id}/{node id}". <h2>Wrapping Up, Moving Forward</h2> Drupal's robust taxonomy features, combined with its powerful content management capabilities that, while excelling at community features, provide more than a social-software solution, made it an excellent choice for the iCitizenForum project. The initial Drupal-powered deployment launched just eight weeks after redesign efforts began, largely due to the wide range of features already available in core and contributed modules–without the need for extensive custom development. Since launch in early 2008, numerous new features and modifications have been incorporated back into the website. Moving forward, the vision for iCitizenForum.com is that it continues to evolve and adapt. Drupal, with its modular architecture, support for open standards, and passionate community, continues to be an ideal platform for the project. Modules Key modules used: Youtube API Why these modules were chosen: The Youtube API module was developed for the project. Community contributions:The development effort for the video syndication capabilities, spearheaded by Brad Bowman, quickly evolved into a full-fledged YouTube API module that offers a wide range of interface capabilities that go far beyond the initial needs for simple content syndication. The YouTube API module provides functions for programmatic video management, FeedAPI integration, video feeds, commenting, authentication, rating, and managing favorites between Drupal websites and YouTube.
In addition to automatically pushing content to YouTube and Vimeo, the video library features a video-specific RSS feed that includes all nodes from within the library, their teasers, and their associated videos.
Team members: beeradb Project team:Aten Design Group
Popular Science Magazine (PopSci.com) Case Study
In February 2008, Popular Science, the fifth-oldest continually-published monthly magazine, relaunched its online presence with an enterprise-level website developed by pingVision, powered by Drupal.
http://drupal.org/node/233090
Unknown.
Organizations involved: PINGV Team members: AjK alasda cyberswat coltrane ezra-g greggles gregnostic jcfiala Project team:Katherine Lawrence http://drupal.org/user/42890 - unfindable with autocomplete
laura s - Laura Scott
matthews - Matthew Saunders
skywalker2208 - Simon Laug
3goose - Radovan "Rad" Anzulovic
zarabadoo - Al Steffen
Eureka! Science News - Automated, Aggregated Science News
Eureka! Science News is a site dedicated to provide the very latest science news, but with a special twist – it is entirely automated! There is no human editor behind it - it finds relationships between news stories from all major science sites and regroups, categorizes, ranks, tags, finds related press releases and publishes them directly on the site. The result is an efficient overview of everything happening in science, right when it happens.
Describe the project (goals, requirements and outcome): I wanted to build a site that would report science news as it happens. I felt the need to automate the process while keeping the quality at a high level. So much science news is posted every day, but frankly, not all of it interesting. I found the inspiration in initiatives like <a href="http://www.techmeme.com/">Techmeme</a> and <a href="http://news.google.com/">Google News</a>. <h2>Building the Eureka Engine</h2> First, I identified the principal components of an intelligent news aggregator: <ul> <li>A source of news, such as an RSS aggregator</li> <li>A clustering engine, to group news together</li> <li>A classification engine, to categorize the news (Is this Biology, Physics, Medicine or Astronomy?)</li> <li>A way to assign scores to clusters, to determine in which order the news should be displayed</li> </ul> First, I needed a good RSS aggregator; the default one provided by Drupal was inadequate, as it did not create Drupal nodes out of RSS items. The other aggregators available at the time were Leech and Feedparser, but they were implementing lots of functionality I did not really need and were not yet mature. Fortunately, <a href="http://tedserbinski.com/">Ted Serbinski </a>(<a href="http://drupal.org/user/12932">m3avrck</a>) came to the rescue, releasing <a href="http://drupal.org/project/simplefeed">Simplefeed</a> just when I needed it. Simple, fast, efficient: I could not ask for more! Next, I built three custom modules to implement the remaining functionalities. The process was easy thanks to the infinite extensibility of Drupal – the hooks system is just wonderful! The result is what I call the Eureka! Engine. Here are some details about these three modules: <h3>Clusterer.module</h3> The first step is to regroup similar items in clusters. Two things are needed to cluster items together: a similarity metric and a clustering algorithm. In the case of text, similarity metrics can be based on the occurrence of words in two texts – a document can be represented as a vector (see <a href="http://en.wikipedia.org/wiki/Vector_Space_Model">vector space model</a>). Fortunately, MySQL Fulltext engine does exactly this – by using a whole article as a fulltext query against all other articles, it is possible to calculate a similarity score between every pair of articles. I use a sliding window technique to limit the number of items clusterer.module needs to look at (highly related news items are often published in a relatively small timeframe so looking at a ‘window’ of a few days worth of news at a time is adequate). Hierarchical clustering algorithms have a complexity of O(n^2), sometimes worse, so it gets exponentially more expensive to compute clusters as you add more items. To regroup items, I used a <a href="http://search.cpan.org/~mdehoon/Algorithm-Cluster/perl/Cluster.pm">Perl API to a C library</a> implementing hierarchical clustering; it is very fast, clustering a thousand items in a few seconds. I initially tried to implement my own clustering algorithm in PHP but it was slow and memory inefficient. Do not reinvent the wheel if you do not have to! Lots of tweaking was necessary to find the ideal clustering parameters that would allow great precision and accuracy. Be too permissive and you end up with mega clusters of unrelated stories - be too restrictive and related stories do not cluster together anymore. In the end, I got something very satisfying. <h3>Categorizer.module</h3> There are many classification algorithms out there; I needed an accurate one, but most importantly, a very fast one (many items to classify from RSS feeds). I chose a <a href="http://en.wikipedia.org/wiki/Naive_Bayes_classifier">naïve Bayesian filter</a> – your email software probably uses a similar approach to determine whether incoming mail is spam or not. In the case of Eureka Science News, the algorithm needs to classify incoming news items in eight categories – Astronomy, Biology, Climate, Health, Math, Palaeontology, Physics and Psychology. For this purpose, I ported / reworked a <a href="http://www.xhtml.net/scripts/PHPNaiveBayesianFilter">naïve Bayesian php library to Drupal</a>. It is reasonably fast and categorizes a new item in about a tenth of a second. The system is surprisingly accurate once trained properly - of course, it makes errors every now and then (especially when it encounters a post made up of words it did not see before) but I am pleased with its performance so far. In the future, the system could be improved by using <a href="http://en.wikipedia.org/wiki/Latent_semantic_analysis">latent semantic analysis</a>. <h3>Publisher.module</h3> Finally, I built a module to rank clusters of news and to find and parse related press releases. The module ranks clusters based on the number of items they contain, the timeliness of each of those items and a few other factors such as popularity – the score is time-decayed using a formula based on radioactive half-life decay, keeping only fresh or popular news at the top of the front page. The system as a whole outperformed my expectations; it even outsmarted me on a few occasions where it found links between stories I did not think were related (why did it regroup those four articles, they are not highly related! Oh, wait… they are slightly related but were presented at the same international conference! Cool!). You should be able to do the same on your sites pretty soon - thanks to the <a href="http://drupal.org/node/261340">memetracker.module</a> from Kyle Mathews, a Google Summer of Code 2008 student! He plans to build a generic framework which will allow the automatic clustering and classification of Drupal nodes. Cannot wait to see what kind of implementation he will come up with – a generic framework is more complicated to build than a site-specific one such as Eureka Science News. <h2>Search: Meet the Sphinx</h2> At first I used Google Site Search as the search solution, as I felt that Drupal search.module could not keep up with a very large number of nodes (the site produced about 50 000 nodes in a month and a half during testing – what about in 5 years, with more sources?). With Google Site search, the updates were not instant, (there is a significant delay between when an item is published and when Google will crawl it), the interface was also very restrictive - even if I could integrate the results directly in the site, I could not alter the layout or results in any way. I discovered <a href="http://www.sphinxsearch.com/">Sphinx Search</a> thanks to <a href="http://drupal4hu.com/node/129">a post made by chx on his blog.</a> It is easy to configure and extremely fast - it indexes hundreds of thousands of nodes in mere seconds and searches are all returned in one second or less. Using a “main + delta” scheme of indexing, I can index news as soon as they are published. In addition to the search form, I used one of sphinx built-in function to generate our stopwords list (for clustering / classification). <h2>Design</h2> I used a CSS framework: <a href="http://code.google.com/p/blueprintcss/">Blueprint CSS</a>. It is ideal for a grid design (which in turn is great for news sites). The results obtained with Blueprint are cross-browser compliant which is a huge timesaver. The framework comes bundled with a CSS reset (so that the site will look the same in every browser) and a nice basic typography which keeps a vertical rhythm of 18px (this means that every line of text will fall on the same virtual ‘line’, giving a virtual rhythm which is nice to the eye). Coupled with Panels.module, it allowed us to create the design of most major pages on the site in record time – it is also very simple to test different layouts since it is so easy to use. Even when using a framework, CSS still has pitfalls – I was hit by somewhat obscure bugs in different browsers (guillotine bug, some menu completely disappearing in IE6, just to name a few). I used <a href="http://browsershots.org/">Browsershots.org</a> to a great extent – screenshots of your site in just about every browser, free! <h2>Performance</h2> Performance is always the #1 concern when building a site with a potentially huge number of nodes. Eureka Science News is quite complex, so I generated custom SQL for almost everything instead of using the Views module - just about every query is optimized and thus very fast. Views is used exclusively for the Archive. MySQL optimization is important and the Drupal page caching mechanism and the MySQL query cache are not an excuse to have badly optimized queries. What if I want users to register in the future? What about the one user hitting an uncached page that is forced to wait seconds while the page loads? Servint – I installed APC cache, tweaked Apache and Mysql but did not yet install more advanced performance improvements like Memcache. Right now AB (Apache benchmark) gives us upward of 500 requests per second on a cached page, which is very satisfying. I applied the <a href="http://developer.yahoo.com/yslow/">YSlow</a> principles thoroughly – a special thanks to Wimleers for his <a href="http://wimleers.com/article/improving-drupals-page-loading-performance">detailed post about YSlow vs Drupal </a>– while I left things out like using a Content delivery network for now as I feel it is overkill, I keep a very interested eye on Wimleers CDN.module. Some of the things which made a small but noticeable difference on the page loading times: <ul> <li> Minified CSS and JS using <a href="http://developer.yahoo.com/yui/compressor/">Yahoo YUI compressor</a></li> <li> Aggregated JS and CSS</li> <li> Used CSS sprites for small icons</li> <li> Used PNG crush and <a href="http://people.bath.ac.uk/ea2aced/tech/png/pngslim.zip">PNGslim</a> to reduce the size of all the images on the site</li> </ul> I also used Drupal cache_set and cache_get functions for SQL intensive blocks that are on every page - like the ‘popular’ block. Be wary of implementing tons of javascript plugins, as that can affect load time performance. At one point the ‘recent images’ block on the front page were embedded into a javascript carousel, but it impacted the page load times significantly (users had to download additional images that they wouldn’t see most of the time, plus the actual javascript parsing and execution time was significantly high - 500 milliseconds for that carousel alone). Sure it looked cool, but cool is not our #1 priority, performance is! Drupal page cache is great for anonymous users, but can also create problems; I wanted to display the amount of time elapsed since the publication of news items in some place (‘published 2 hours ago’) but with minute precision. I did not want users to see for example ‘published 1 minute ago’ for 10 minutes. I resolved the problem by porting Drupal format_interval function to JavaScript. The optimization paid off as the site was hit by Reddit (two different stories), YC News and Stumbleupon the day of the launch and the following days: the relatively modest VPS did not even break a sweat; page loads were still instant, even with about 3000 page views within a few hours, about 15 000 in a few days. Since then we have been hit by Slashdot multiple times and were featured on the front page of Mashable with no performance problems whatsoever. I feel confident that a single VPS will be able to handle the growth of the site for quite some time. <h2>Miscellaneous</h2> <h3>Developing on Windows</h3> Doing web dev work on Windows is possible! I built everything using Windows exclusively – using <a href="http://www.en.wampserver.com/">Wamp</a> and Notepad++ mainly. I also could not live without the Firebug and the <a href="https://addons.mozilla.org/en-US/firefox/addon/4125">‘It’s all text!’</a> extensions for Firefox. Modules Key modules used: SimpleFeed Views Pathauto Global Redirect ImageCache Panels Taxonomy Access Control Quickstats Service links Why these modules were chosen: n/a Community contributions:n/a