Error message

Notice: Undefined variable: nids in views_plugin_row_node_rss->pre_render() (line 60 of /home4/mahamood/public_html/drupalmu/sites/all/modules/contrib/views/modules/node/views_plugin_row_node_rss.inc).

Feed aggregator

Drupal.org Scheduled Downtime Monday, May 7, 5:00 PDT (May 8, 00:00 UTC)

Drupal.org News - Sat, 05/05/2012 - 02:30

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.org News - Thu, 05/03/2012 - 02:41

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.14
Download 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 information

We 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 reports

Both 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.

Changelog

Drupal 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 vulnerabilities

Drupal 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 issues

None at this time.

DrupalCon Munich Accepting Session Submissions

Drupal.org News - Mon, 04/30/2012 - 08:43

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!!

Drupal.org News - Thu, 04/26/2012 - 06:59

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 Sales Reports for Drupal Commerce Christophe Van Gysel Daniel Wehner Search API Statistics Michael Timofejev Thomas Seidl Translation Management Tools Server Sebastian Siemssen Miro Dietiker

Drupal.org Scheduled Downtime Thursday, April 19, 5:00 PDT (April 20 00:00 UTC)

Drupal.org News - Mon, 04/16/2012 - 22:40

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

Drupal.org News - Mon, 04/16/2012 - 22:35

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 GDO

Between 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 Justin

Helping 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 better

This process of upgrading Groups.Drupal.Org is an especially good time to get involved by joining a few different groups and queues:

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

Drupal.org News - Mon, 04/09/2012 - 17:35

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
  1. A podcast educating folks about great Contrib modules.
  2. A link to a significant patch review or commit on drupal.org.
  3. A blog post about Drupalish wireframe templates that anyone can use.
Inappropriate
  1. An announcement about your latest site launch (even whitehouse.gov).
  2. A new video was added to your commercial video subscription service.
  3. 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

Drupal.org News - Tue, 04/03/2012 - 23:29

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 creation

Our 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.

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 & Layouts

The 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.

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 hours

We 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 activity

The 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. There was also a BoF.
  • 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 KB

Documentation Team 1st Quarter 2012 Update

Drupal.org News - Thu, 03/29/2012 - 20:39

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.
Milestones and Accomplishments
  • 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.
Docs Infrastructure

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 Steps

If you're interested in helping with Drupal documentation:

War Child UK - nonprofit Drupal 7 site

Drupal.org News - Fri, 03/23/2012 - 23:57
Why Drupal was chosen:  Why we chose Drupal The previous version of our site was built on Drupal 5 so we were already familiar with the platform. As the whole site was to be completely redesigned, we built the new one afresh rather than try to upgrade the existing one. We'd had experience of accessing (free) help from the excellent Drupal community and this was a big factor in choosing Drupal again. Plus the Views module in-particular seemed to make it much more powerful and easily adaptable than something like Wordpress. We have one member of staff who writes and adds all the content, and a tiny 'online' budget so we needed something that could be maintained for free whilst still being able to add new pages and functionality. The site has a very heavy illustrative, poster style and deliberately has long (deep) pages - making it quite different from most NGO sites. We wanted the CMS to make the menus, sliders etc work very easily but we also wanted a lot more flexibility within it than most setups. Some of the pages are written mainly in plain HTML rather than being more prescriptive about what goes where. This means that it does require a degree of HTML/CSS knowledge by the user, but it also allows a huge freedom and flexibility in terms of creating custom layouts (for instance the <a href="http://www.warchild.org.uk/issues/child-soldiers">Child Soldiers page</a>). Completed Drupal site or project URL:  http://www.warchild.org.uk

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

Drupal.org News - Fri, 03/23/2012 - 23:44
Why Drupal was chosen:  We chose Drupal as our CMS platform because it is a robust system that is easy to scale. SEO has always been an integral part of our business, so the fact that Drupal handled SEO elements pretty well out-of-the-box was attractive. Completed Drupal site or project URL:  http://www.tax-compare.com/

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

Drupal.org News - Fri, 03/23/2012 - 23:27
Why Drupal was chosen:  There were snags early in the prototyping process. The community building software being used didn't support heterogeneous categorization. We wanted two taxonomies for the same content: one for five discussion topics that would serve as site-wide containers, and another for free tagging. Additionally, we saw issues on the horizon with creating page content that would be separate from the blog, structured under a hierarchical menu, but capable of being categorized just like a blog post. In the technical setting at that time, these features were simply unavailable–at least without extensive custom development. The problems we were up against essentially boiled down to categorization–something Drupal excels at. Beyond categorization, Drupal's community features, configurable content-types, access control, flexible menus, and RSS publishing were attractive. Additionally, content management "at large" was a subject we often visited in our work with Colonial Williamsburg, and had just as often abandoned due to issues of cost, licensing, and interoperability within an already massive web architecture. As a fairly isolated piece within their broad spectrum of web deployments, iCitizenForum.com would be an ideal test-case for the Drupal framework. Completed Drupal site or project URL:  http://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

Drupal.org News - Fri, 03/23/2012 - 23:08
Why Drupal was chosen:  Made with Drupal 5 this site is still an awesome example of successful implementation. The owners of this site are not going to upgrade it until D8 is in production. We are looking forward to "the migration" case study then! Completed Drupal site or project URL:  http://www.popsci.com/

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

Describe the project (goals, requirements and outcome):  Until the year of relaunch, Popular Science's online presence was dominated by proprietary web content management solutions. With this relaunch, the Popular Science team wanted to take the online presence of the magazine into the open source world. <h2>Website Goals and Challenges</h2> Prior to its relaunch, the Popular Science website used various different systems to deliver content. One of the goals for the new site was to bring these disparate sites together into a unified user interface while increasing usability and functionality. Drupal's inherent flexibility and extensibility afforded the delivery of Popular Science's usability and functional requirements. One of the big challenges, however, was converting and importing several years' worth of content from a Vignette 7 CMS and several TypePad blogs. Another challenge was the integration of several third-party services, including a fantasy stock trading system, video conversion and hosting services, and advertising. In approaching the development of the new PopSci.com, we took advantage of various contributed modules, and created a number of custom modules, including the Drupal Markup Engine for content placement within nodes and Node Carousel for displaying content. Finally, scalability was a primary concern, as PopSci already had a large and active user base. By specifying a load-balanced multi-server cluster to serve up the site, combined with the use of Memcache, PopSci.com post-relaunch was able to weather an average load of 60 pages per second with a spike of over 1.1 million page views in 24 hours -- a new record for Popular Science. <h2>Content Types</h2> It was important to the PopSci.com editors that they have complete control over the placement of media and supporting content not only in full node view but also in teaser view. They wanted the ability to paginate long articles and place any number of images or even related blocks into the content of a node. The media placement also needed to be intelligent enough to work with legacy content imported from Vignette and Typepad. Most of this was accomplished with the creation of a new module called the Drupal Markup Engine, or DME. The DME works in conjunction with the content-types that were created for this project with the Content Construction Kit (CCK) by providing a custom, extensible input filter. <h3>Articles</h3> Articles are the main content-type on the site. All blog posts from TypePad and articles from Vignette were consolidated as articles in Drupal. The article content-type uses the DME extensively. Referenced images can be placed anywhere in an article using the DME. If a referenced image node isn't specifically placed within the content body by the DME, it is automatically displayed at the top of the article and in the article's teaser view. Images may also be placed directly in the teaser using the DME. This approach provides maximum flexibility with images entered through Drupal and with images from legacy content, which required no human intervention to make the latter work. The DME is also used to place a related content block (containing links to nodes in Node Reference fields or nodes with similar taxonomy terms) into the content and to set pagination for the article. <h3>Article Structure</h3> <ul> <li>Article Images -- Node Reference to images used in the article.</li> <li>Associated Photo Gallery -- Node Reference to an Photo Gallery.</li> <li>Body -- The article's body.</li> <li>Category Badge -- A taxonomy image that will apply a graphical badge to the article.</li> <li>Credit -- The credit is the contributor of the article.</li> <li>DEK -- A brief description of the article.</li> <li>Primary Category -- The primary taxonomy for the site represented by the main navigation areas.</li> <li>Related Articles -- Node Reference field to relate other articles.</li> <li>Tags -- An auto-fill taxonomy field.</li> <li>Title -- Core title field.</li> <li>V7id -- The Vignette 7 ID of the original article so that it can be cross-referenced. This was useful for redirecting old urls to new Drupal content. [See discussion about imports below]</li> <li>Video Link -- Node Reference to related videos.</li> </ul> <h3>Current Issue</h3> The "current issue" node type represents an issue of the magazine. It is used to store images of the magazines cover associated with dates. This node type is used in various promotional content throughout the site. <strong>Current Issue Structure</strong> <ul> <li>Cover -- An image representing the magazine cover.</li> <li>Issue Date -- Publication date of the issue.</li> <li>Title -- Core title field.</li> </ul> <h3>Featured Tout</h3> The Featured tout is a node type created to be used solely in a Node Carousel driven by a Node Queue. The featured touts simply require the Popular Science editors to create graphics that are of the appropriate dimensions. These can be seen on the front page of http://popsci.com/. <strong>Featured Tout Structure</strong> <ul> <li>Associated Article -- Node Reference to the article being touted.</li> <li>DEK -- A brief description of the article being touted.</li> <li>Index Display Link -- The word used as the link in the tout.</li> <li>Title -- Core title field.</li> </ul> <h3>Images</h3> Images are used extensively on the site and needed to be invoked in a number of ways. Images are used in different forms in articles, teaser widgets, and photo galleries. If an image has related content, links to that content are shown in all but teaser views. Images are not served as stand alone images on the site but are invoked in Articles and Photo Galleries. <strong>Image Structure</strong> <ul> <li>Credit -- The contributor of the image.</li> <li>DEK -- A brief description of the image.</li> <li>Photo Gallery Link -- Node Reference to Photo Galleries. If an image references a gallery it shows up in that Photo Gallery.</li> <li>Photo Gallery Weights -- This field contains a series of number pairs with each pair representing the photo gallery and the image's weight in that photo gallery.</li> <li>Primary Category -- The primary taxonomy for the site represented by the main navigation areas.</li> <li>Title -- Core title field.</li> <li>V7id -- The Vignette 7 ID of the original image so that it can be cross-referenced. This was useful for redirecting old urls to new Drupal content.</li> <li>Video Link -- Node Reference to related videos.</li> </ul> <h3>Photo Gallery</h3> A Photo Gallery is a node type serving to collect image nodes and content to be displayed to the end user as a photo gallery. The images are designated for a photo gallery by editing the image and entering the gallery title in the appropriate Node Reference field. Galleries are presented as Node Carousels to give them a slick, interactive feel. <strong>Photo Gallery Structure</strong> <ul> <li>Category Badge -- A taxonomy image that will apply a graphical badge to the image.</li> <li>Credit -- The contributor of the image.</li> <li>DEK -- A brief description of the image.</li> <li>Icon -- A Node Reference field to the image to use when viewing the gallery in teaser view.</li> <li>Primary Category -- The primary taxonomy for the site represented by the main navigation areas.</li> <li>Tags -- An auto-fill taxonomy field.</li> <li>Title -- Core title field.</li> <li>V7id -- The Vignette 7 ID of the original image so that it can be cross-referenced. This was useful for redirecting old urls to new Drupal content.</li> </ul> <h3>User Video</h3> The Video node enables posting of video to either YouTube or OnStream. We developed a custom media module, which creates a custom Media Profile CCK field that can be attached to any node, allowing editors and admins to restrict the services used on a per-content-type basis. The custom media module differs from the existing emfield module by offering greater flexibility -- such as allowing users to upload videos to the services straight from Drupal. <strong>Video Structure</strong> <ul> <li>Category Badge -- A taxonomy image that will apply a graphical badge to the video.</li> <li>Credit -- The contributor of the video.</li> <li>DEK -- A brief description of the video.</li> <li>Primary Category -- The primary taxonomy for the site represented by the main navigation areas.</li> <li>Tags -- An auto-fill taxonomy field.</li> <li>Title -- Core title field.</li> <li>Video Link -- A hosted video handled by an extension to the media module.</li> </ul> <h2>Data Import</h2> Part of the motivation to move the existing content over to Drupal was to escape the rigid complexity and cost associated with the Vignette CMS. The Vignette dataset was a 1.66GB Oracle database -- and that didn't include the more than 15,000 images referenced in the Vignette data which also had to be imported into the new site. The first step in the migration process was to use the MySQL Migration Toolkit to transfer the data to MySQL. We wrote a custom module that used cron to feed the Oracle data through Drupal's APIs in manageable chunks. And finally, we imported the images by extracting their locations from the Oracle data and, via shell script, executing a series of wget commands to download the images. As each piece of content was created in Drupal it was tagged with the Yahoo Terms module, which despite some odd results provided a good start on tagging the immense amount of un-tagged Vignette data. Once the preparations were in place, the entire import process took approximately two solid days of execution time to complete. A portion of the import process centered around how to deal with the urls that had been generated by Vignette, so that an article called up by its old Vignette address could be found in the new Drupal architecture. In order to accomplish this, during the import we took the associated Vignette ID for each unit of information imported from Vignette into Drupal and placed it into a CCK field in its destination node in Drupal. To actually find those articles in Drupal, a hook was written that works with the Custom Error module to look for the old Vignette ID in the url when a 404 occurs and issues the correct redirect code. Not only were we able to handle the redirects while historic links were used, but in a very short time Google had updated their search results showing the new paths. <h2>Search</h2> The design of the PopSci search results required the search results to be grouped by content type, with tabs allowing re-sorting of the results by Most Relevant, Most Recent, Most Viewed, Top Rated, and Most Commented. On top of that, users needed to be able to subscribe to rss feeds of the results. We achieved this functionality by developing an extended version of Drupal's core search, displaying the various results in blocks of paginated content, with AJAX tabsets to access other sortings of the results. Each search is also cached, given a hashed id, and associated with the user performing the search to allow the saving the searches for future reference. <h2>AJAX Tabs</h2> In many instances the design comps we received required a nested set of tabs that could function to filter the content being displayed on a particular page. This was largely handled by the Tabs component of the Javascript Tools module. However, the large tabbed datasets displayed on each of the main category pages and in searches needed to be a custom coded solution to be able to work in a responsive fashion with larger amounts of data. <h2>Performance</h2> Naturally, there is a hefty selection of hardware powering the Popular Science website, but the true performance winner of this project was the Memcache module which integrates Drupal with Memcached and the PECL Memcache library. Out of the box, this module worked extremely well for us, with the exception of path aliases: A full page load was generating as many as 700 queries to determine path aliases. Pulling these queries through Memcache gave us the speed we needed to maintain an initial average load of approximately 60-70 page views per second. Modules Key modules used:  abuse Avatar Approval Custom Error jQuery Update Pathauto Update Status URL list Account reminder LoginToboggan Content Construction Kit (CCK) Date Fivestar ImageField Link AdSense API Coder dba views Devel Javascript Tools SimpleTest Filter by node type HTML corrector ImageCache Taxonomy Image CAPTCHA Import Typepad / MoveableType Memcache API and Integration Omniture Integration Service links XML sitemap Yahoo Terms Mime Mail Send Nodecarousel Nodequeue Sitemap Views Views Bookmark Meta tags Scheduler SimpleMenu Token Voting API Why these modules were chosen:  These modules were chosen to be able to reach demanded functionality. All of them are stable and proven by the community. Community contributions: 

Unknown. Some of the customizations and adjustments would (were?) be contributed as modules for Drupal 6.

Organizations involved:  PINGV Team members:  AjK alasda cyberswat coltrane ezra-g greggles gregnostic jcfiala laura s matthews skywalker2208 3goose Zarabadoo Project team: 

Katherine Lawrence http://drupal.org/user/42890 - unfindable with autocomplete

Eureka! Science News - Automated, Aggregated Science News

Drupal.org News - Fri, 03/23/2012 - 23:04
Why Drupal was chosen:  On my previous site, <a href="http://www.biologynews.net/">Biology News Net</a>, I hit the limitations of <a href="http://www.movabletype.org/">Movable Type</a> really fast; adding functionality was complicated, performance was not great (even on a dedicated server), customization was not really doable. Just as an example, the forum is actually a phpBB installation that has its sessions tied to the Movable Type sessions - it's clunky even if it works, and upgrading is a nightmare. As I could not really expect more from a blogging engine – Movable Type served me well - I searched for something better - this is when I found Drupal and fell in love with it! It has a significant learning curve, but it is so powerful that the time invested to learn it is easily worth it in the long run. Completed Drupal site or project URL:  http://esciencenews.com/

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

Ioby.org - In Our Backyards

Drupal.org News - Fri, 03/23/2012 - 21:59
Why Drupal was chosen:  Ioby worked with New Signature to develop the new site, using Drupal 7 as the platform. The previous site, while Drupal-based, was extremely limited in scope and functionality, and needed to be reworked. Drupal 7 provided a powerful and flexible platform that answered ioby’s need for a robust e-commerce and collaborative social community solution. New Signature developed the ioby Drupal 7 website to be fast, responsive and handle huge amounts of traffic. Completed Drupal site or project URL:  http://ioby.org/

ioby — short for "In Our Backyards" — is a social microfunding web service that connects people and money to site-based environmental projects (presently only in the New York City area). All of the projects funded through ioby are conceived, designed, and run by neighbors.

Describe the project (goals, requirements and outcome):  The new site provides a five step process to empower visitors to help make a difference: <ol> <li>pick a project</li> <li>nurture it through funding</li> <li>follow the results</li> <li>get your hands dirty and inspire others</li> <li>prepare for great things</li> </ol> The optional sixth step is “rinse and repeat.” Modules Key modules used:  Drupal Commerce Google Maps v3 Why these modules were chosen:  The ioby website heavily leverages Drupal Commerce. New Signature utilized Drupal Commerce to present a simplified and streamlined donation process to the visitor, empowering users to easily move from project selection through checkout and payment. We further extended the Drupal platform through the use of contributed and custom modules, such as the Google Maps tool to provide visualization of projects on the site. Community contributions: 

A few key parts of the application built for ioby hadn’t been tried using Drupal 7 or, more importantly, Drupal Commerce previously. Because the site is donation-centric and needed to accept donations of any amount, the first challenge was to make a product to place in the cart that didn’t have a set price associated with it. In order to do this, the systems created the product "on the fly" as the donation is placed into the cart. The second challenge was to create a system that allowed users to also give a 20% gratuity directly to ioby. The third challenge was to enable sponsors to match the donation amount as part of a campaign for matching funds for a project.

The first challenge was handled by using a simple form that allows the user to enter the amount of the donation they want to give to a project. This form submit creates a new commerce product using the Entity API system. The product is instantiated and customized with the donation amount, and then placed into the cart. Each product in the Commerce module requires a unique SKU, so the system generates one based on the user's name, the project title, and a date reference to assure no products are duplicated.

For the second challenge, gratuity was at first going to be a tax type in the Commerce system. However, one of the requirements was to also give the user the ability to remove the gratuity if they felt that they didn’t want to cover the costs for it — a feature Commerce doesn't support with tax (for obvious reasons). To enable that ability, the gratuity is a line item (re)calculated every time the cart is updated. Once again we used the Entity API to generate a new product, and this time the gratuity type that has an individual SKU, and a price that is a percentage of the order total. Another custom feature we added was to show a popup message when a user removes the gratuity, explaining to them the importance of gratuity for ioby. Since the view doesn’t discriminate between the different line items, it was necessary to use some jQuery to handle this feature.

For the third challenge - giving corporations and sponsors the ability to match the donation amount – we couldn’t just add line items to the donation (like how user-submitted donations are handled) as this would change the donor information. Instead, we had to add a new panel to the checkout process that let the donator know that the sponsor was helping the cause as well. The sponsor was tied to the project by campaign node, using the new Drupal 7 database API to make direct calls to the database and tie the sponsor, campaign, project and donation together. Once the bond is created, a donation match is created and funds are applied to the project without charging the user.

Organizations involved:  New Signature Commerce Guys

DrupalCon Munich is around the corner: call for papers and registration open

Drupal.org News - Fri, 03/23/2012 - 01:03

As announced on stage at DrupalCon Denver, we have just opened the Call for Papers for DrupalCon Munich 2012, as well as keynotes, call for trainings, scholarships, and registration. The Drupal Association and the Munich DrupalCon committee have been preparing for the next DrupalCon for months now. Things will move into high gear once DrupalCon Denver closes its doors, later this week.

Announcing ...

Keynote speakers

DrupalCon Munich announces three keynotes by open source and industry visionaries, including Dries Buytaert - the founder of the Drupal project talking about the future of Drupal on Tuesday, August 21; Anke Domscheit-Berg, a renowned expert in open government and open data, speaking on Tuesday, August 22; and Fabien Potencier, CEO of SensioLabs and founder of the Symfony project speaking on Wednesday, August 23.

Call for papers

Your contribution is needed! Come to Munich and share your expertise with the most amazing open source community in the world. Submit your session ideas at http://munich2012.drupal.org/call-for-papers

Early Bird registration opens today!

Registration for DrupalCon Munich is now open. The special early-bird rate is €350 for the first 300 tickets, after that the price is €400 until June 15, and 475 until July 31. Late registration after this date until August 17 will be €525. On-site registration will be €575. The is a limited number of tickets available at a rate of €200 for students and non profit organisations (all prices inclusive of VAT). Register now at http://munich2012.drupal.org/register.

Call for trainings

The Drupal project needs more contributors, site builders, users, and developers. We’re looking to cover the gamut from beginner to highly advanced trainings. Trainers and training companies, submit your trainings now! http://munich2012.drupal.org

Scholarship applications are now open

Drupal is for everyone and everyone can enrich the project. If you would like to come to DrupalCon Munich but cannot afford the cost, a limited number of scholarships will be available. Submit your application at http://munich2012.drupal.org/

Keep up-to-date with all things Drupalcon Munich; follow @DrupalCon on Twitter.

-- Florian Lorétan (floretan) and Karsten Frohwein (kars-t), co-chairs of DrupalCon Munich

The Google Summer of Code is Back for 2012!

Drupal.org News - Tue, 03/20/2012 - 21:18

Some of Drupal's Summer of Code success stories include:

Angela Byron (webchick) the Drupal 7 co-maintainer, Director of Community Development at Acquia, a Google-O'Reilly Open Source Hall of Famer and a Drupal Association board member. She originally got her start in Drupal writing Quiz module for GSoC 2005. Sumit Kataria, started as a GSoC student back in 2009 working on OAuth module, and now not only is one of the foremost experts in the Drupal community on mobile (look for his mobile apps for DrupalCon Denver in an app store near you!), but co-manages Drupal's involvement in GSoC. He works as a Drupal consultant with companies like CivicActions and Lullabot. Bojan Zivanovic (bojanz) became a preeminent contributor to views and contributed to EntityFieldQuery for Drupal 7. Gábor Hojtsy, the co-maintainer of Drupal 6, and the Initiative Lead for the Drupal 8 Multilingual Initiative worked over GSoC in 2006 to get i18n in Drupal core in Drupal 6. He is now an engineer for Acquia. Jimmy Berry (boombatower) was instrumental in the development of Drupal's automated testing framework, and he and his father Jim Berry (solotandem) were the first Google Summer of Code father/son team! :) They both offer testing-related services at http://boombatower.com. Lin Clark (linclark) created SPARQL Views, making it possible to query SPARQL endpoints from Views, as part of GSoC 2010. Her demonstrations of Linked Data capabilities in Drupal have been published on IBM Developer Works. She is now an independent consultant working data publishing and consumption using Drupal.

So if you're:

  • a post-secondary student looking for an exciting project with a thriving development community and tons of smart people you can work with
  • an existing Drupal contributor who happens to be attending college/university and would love a chance to get paid over the summer to work on the "Next Big Drupal Thing"
  • a seasoned Drupal developer with some time over the summer, who'd truly enjoy mentoring and helping the next generation of contributors make Drupal the best that it can be
  • a Drupal community member who might not have the time or coding experience to mentor, but knows where to find resources and enjoys helping others find them.
  • someone with a great project idea for an improvement in Drupal that would be perfect for a student to work on over the summer
  • a Drupal evangelist who wants to help grow the community by actively engaging students

...then there's something for you in Summer of Code! Read on to find out more.

Prospective Students

If you have enthusiasm the drive to work on something great, now is the time for you to get started! Subscribe to the Google Summer of Code group, look over the developer's guide and API reference, stop by Core Office hours and take on some new contributor tasks, find a Drupal event near you to get to know Drupal's amazing community, and take on a few bite-sized tasks in the Novice Issue Queue.

Most importantly, start thinking about your project proposal! Prior to submitting your application, stop by #drupal on irc.freenode.net or post your project ideas to the Summer of Code 2012 group to get community feedback. Your chances of getting into Summer of Code increase if the community has the opportunity to review your ideas and offer feedback to help you in improving your project idea.

We have already started accepting applications. For more tips, students should check out the Student Template Page.

Mentors

Please sign up to be a mentor if you have either experience with Drupal development or expertise in a particular area of interest (for example, newspapers, education...) and have some free time from now until the end of August.

To become a mentor,  join the Drupal SoC-2012 group and the sign up on Google's SoC mentor web app (now known as Melange). Please describe who you are, what your level of Drupal experience is, and your motivation for being a mentor. Your application will be reviewed by SoC admins (Chx, SumitK).

You can go through Advice for mentors page to find more tips on mentoring students.

The more mentors we have, the more students we can get in, and the more exciting projects of varying types we can accept.

Community members

Great project ideas are vital to attracting both great students and great mentors. If you've ever thought "if Drupal could be...", now is the time to turn it into a project idea. The project should be feasible for a Drupal-novice developer student to achieve in a 3-month time frame. Suggest a SoC project idea in the SoC 2012 group or help elaborating already proposed ideas

In addition, you can help review the existing SoC project ideas by providing students and other community members with feedback. Community members are in the best position to help students understand the finer intricacies of existing modules, and help their energies to meet the the priorities of the Drupal project.

To help the new Drupal family members, we need some existing community members to be active in #drupal-contribute on irc.freenode.net to answer student questions, point them to the correct resources, and people with expertise.

If you think this sounds like fun, be sure to get on to IRC!

Symantec Connect Case Study

Drupal.org News - Tue, 03/20/2012 - 08:39
Why Drupal was chosen: 

After considering the landscape of both proprietary and open-source solutions, Symantec decided to use Drupal as a foundation for their community initiative. Symantec recognized Drupal to be offering:

  • a wealth of out of the box CMS and social media features and functionality
  • the ability to scale for high usage sites
  • the theme and development flexibility to customize the user experience quickly without the typical lag they had experienced requesting new features from proprietary vendors
  • a recognized developer community from which to draw quality development talent

Symantec’s internal UX team even installed and configured rough prototypes in Drupal leveraging the vast library of existing contrib modules to experiment with various use cases for the upcoming project. This ability to rapidly create functional prototypes further cemented the choice of Drupal as the platform for development.

Completed Drupal site or project URL:  http://www.symantec.com/connect/

Symantec Connect is an enterprise class, community-driven, social business support and information portal for Symantec products, offering users of Symantec’s deep catalog of applications and services a platform to interact with one another and Symantec employees through rich web-based tools. Connect enables the rapid publishing of information about the day-to-day use of Symantec products through key community-centric features which facilitate the customer’s ability to:

  • Ask the community for help with issues and flag solutions when they are posted for easy discovery in the forums
  • Suggest and vote on product enhancements
  • Publish helper applications and scripts as community downloads
  • Publish user-submitted screencast videos for enhanced knowledge sharing
  • Build online/offline product centric user groups with events, private content publishing and messaging in the groups
  • Keep up with content on a variety of topics within the IT and security-related fields through articles and blog entries
  • Enjoy a highly qualified community experience enabled by a suite of Symantec employee moderation, organization, and publishing controls.

All of these features also empower Symantec employees to quickly publish official versions of forum discussions, blog entries, articles, events, downloads, and videos while moderating and vetting content, helping steer the community in the right direction.

Describe the project (goals, requirements and outcome): 

A Brief History

Symantec, founded in 1982, is one of the world's largest software companies with more than 17,500 employees in more than 40 countries. The company provides both security and storage and systems management solutions. Their customer base includes consumers, small businesses, and some of the world's largest global organizations. The company's phenomenal growth can be attributed to a combination of market acceptance and strategic acquisitions.

In early 2008, Symantec's Customer Experience team began crafting a roadmap designed to consolidate several existing support and discussion sites into a consistent, best-of-breed community offering. The goals of this consolidation were to:

Give Symantec customers a single point of contact where they could engage with the company's support, marketing, and product management teams,
Draw on other customers experience and expertise,
Reduce the support and licensing costs of maintaining a collection of disparate community offerings.

Modules Key modules used:  Content Construction Kit (CCK) Views Apache Solr Search Integration Why these modules were chosen:  Solr allowed faceted searching of forum results to indicate their state in the search results. Community contributions: 

n/a

Team members:  jeffrey.dalton Project team: 

The project was structured to allow Symantec Customer Experience team to provide input on the design and planning of the site while collaborating with a group of Drupal experts. Symantec’s internal team is augmented with Drupal expertise in the key areas needed for successful Drupal development.

  • WebWise Solutions Inc. leads Connect’s project development and is the principle contact on the project providing long-standing expertise in Drupal-centric project management and user community development. WebWise handles all day-to-day operations and oversight of everything from server deployment to administering the rewards system and offering a first line of customer support for the site’s users, all of which enables Symantec to focus on utilizing Connect to serve their customers instead of having to worry about maintaining the platform.
  • Tabs & Spaces Inc. brings the heavy lifting of custom module development creating upwards of 50 custom modules to augment and extend Drupal to meet the unique needs of building a customer support community around a deep catalog of products and services.
  • Jeffrey Dalton Design Inc. adds the “hot sauce” of user experience centered design and theme work leveraging Drupal’s powerful theme system to tailor the interface to the specific needs of the community. After the initial launch the redesign process allowed Jeffrey Dalton Design to fully invest in re-visioning the theme and leveraging user feedback collected throughout the initial months of Connects operation. During this process the Symantec Corporation even went through a brand change of their own which was easily rolled into the new theme.
  • Tag1 Consulting delivers the performance and scalability tuning that is essential for Drupal sites with millions of users. With multiple layers of content caching in multi-server configurations, world class scalability expertise allows Symantec Connect to continue it’s rapid growth in a high demand environment.

This augmented team approach allows for rapid expansion of area-specific development expertise when new features and functionality are requested while minimizing Symantec’s development overhead.

Distribution packaging now fully supported on Drupal.org

Drupal.org News - Thu, 03/15/2012 - 18:06

Distributions provide one of the biggest opportunities for both the Drupal project and its ecosystem. Although there has been support for distribution packaging on Drupal.org since December 2009, there were many restrictions on what could be packaged for technical and legal reasons. By solving the underlying legal, technical, security, and usability problems, these restrictions have been lifted and fully-featured distributions are now enabled on Drupal.org! This move enables thousands of active developers to pursue distribution development with a consistent set of tools for managing version control, releases, issue tracking, collaboration, and documentation.

Funding for the project was generously provided by major distribution developers:





New features for distribution packaging
External library support
Feed parsers, alternate versions of jQuery, WYSIWYG editors, etc. can be included with distributions automatically. A packaging whitelist tracks GPL-compatible libraries that can be added to distributions.

Patch support
Patches can now be applied to core, contributed modules and themes, and even third-party libraries. Patches will appear on distribution release nodes, resolved to their parent issue.
Support for development snapshots
Both development releases and Git clones (either a specific revision or a branch/tag) can now be used in distributions, rather than just official project releases.

Complete technical implementation details can be found at the Distribution Packaging community initiative page.

Changes for distribution maintainers

If you maintain a distribution on Drupal.org (or would like to) be sure to read the following updated documentation:

Credits

This initiative was spear-headed, designed, managed, and primarily implemented by Derek Wright (dww) of 3281d Consulting. Chad Phillips (hunmonk) and Michael Prashun (mikey_p) also helped with the design and implementation.

The work was made possible by the generous sponsorship of Phase2 Technology, Acquia, Node One, Pantheon, and Lullabot.

Additional thanks to:

  • Angela Byron (webchick) for spear-heading initial funding discussions, for performing extensive QA on changes, for authoring major chunks of the documentation, and for providing input throughout the process.
  • Jeff Walpole (jwalpole) for wrangling funding from multiple sources to make this happen.
  • Jonathan Hedstrom (jhedstrom) and Moshe Weitzman (moshe weitzman) for maintaining Drush make (which is now part of the core Drush project), the primary tool used by the Drupal.org distribution packaging system.
  • Jeff Geerling (geerlingguy), Adam Moore (redndahead), Angela Byron (webchick), Alberto Paderno (kiamlaluno), and Greg Knaddison (greggles) for maintaining the library whitelist.
  • Roy Scholten (yoroy) and Bojhan Somers (bojhan) of the usability team for help reviewing the UI changes.
  • Ezra Barnett Gildesgame (ezra-g) and Frank Febbraro (febbraro) for feedback on the changes, testing, and reviewing documentation.
  • Alex Barth (alex_b) for his initial help to identify the problems and flesh out the roadmap for solving them.

Ebizon builds world's fastest growing Drupal site - TweenTribune

Drupal.org News - Tue, 03/13/2012 - 18:20
Introduction

 

TweenTribune,TeenTribuneand TTEspañol deliver the teen and tween audience with compelling stories kids won’t find anywhere else. Stories chosen for TweenTribune are selected by tweens working closely with professional journalists. Tweens can submit links to stories they'd like to share, submit their own stories and photos, and comment on the stories they read.

    More than 53,000 teachers across the U.S use Tween Tribune in their classrooms.

      Generates more than 5 million page views per month.

        10,000 nodes are added every day

         

        Brief History - From WordPress to Drupal

        TweenTribune and its sister site, TeenTribune, work through schoolteachers across the U.S. Registered students log onto the site and post comments on selected stories of the day, and teachers review the responses for approval before making them “live” for other students to see.

        During Christmas in 2008, Founder of Tweentribune, Mr. Alan Jacobson, decided to move its website from Wordpress to a more capable and flexible Content Management System Drupal. He contacted us in December 24th 2008 and worked with us to develop the application that would allow Tweens of ages 8 to 14 to read a variety of interesting content as well as comment on news for other Kids to see. Teachers can easily use Tween Tribune as a teaching tool. First, the site uses high-interest reading material to engage students with the news.

        Teachers can register their classes on the site, which allows them access to special features like custom generated pages that show students comments or stories the class has commented on. Teachers can print out reports by student; these reports allow them to see which articles students have read and to access to individual student’s comments. In this way, teachers can easily grade or comment on students’ writing. There’s even a Faculty Lounge where teachers can interact with each other, sharing ideas and lesson plans.

        Using Drupal 6 and a variety of excellent contributed modules, the site Tweentribune.com was launched in March, 2009. Modules used include Views, CCK (both core and imagefield), and Imagecache.

        Codes were written for all the custom features of TweenTribune. This custom code was integrated into a Drupal Content Management System in the form of Drupal Modules.  

        Tweentribune is now a success story that has been featured in LAtimes, YPulse.com, KillerStartups, WeMedia, GoodHouseKeeping and getting

        • more than 5 million page views a month.
        • more than 16 million add impressions per month.
        • more than 3000 comments and 6000 quizzes

         

        SCALING WITH CONFIDENCE

        Tweentribune.com had couple of unique challenges. The traffic used to pick during US school hours with most users logged in and hence, creating making maximum connections to the database. The webserver and database were separated on 2 different machines in the same network (LAN).

        Further Following measures were taken to improve drupal performance:

        1. Optimize database queries and modules
        2. Use Memcache for all database cache.
        3. Sessions which are typically stored in database in Drupal were also stored in memcache.
        4. Boost module to serve html content for anonymous users
        5. Using Lighttpd to serve static files like css, js, images.
        6. APC as the PHP accelerator was used.
        7. Using Linux shell, Munin and Nagios for monitoring.

        Memcache - way better than cash

        Memcache, Squid, APC, etc were used to make Drupal scale. Memcache, APC and Squid were installed and configured on the server. Memcache was monitored and configuration of Memcache was changed with time as traffic improved and RAM of the server was changed.

        Lighttpd

        Lighttpd is a web server that was used to serve static files (images, javascripts, css) to reduce burden on Apache webserver as lighttpd is faster at static contents.

        Apache Solr vs DSS

        Drupal Search Sucks as it doesn't deal with large amount of content, it doesn't scale and gets bogged down.Drupal Search is integrated - it runs and searches on the same database thus, slowing down the system. Apache Solr's advantage for Drupal is that it indexes nodes, not pages. This means it can have access to attributes of the node that are not readily parsable from the rendered page. These attributes can be used to filter the results. Apache Solr provides faster search experience than default Drupal search.

        Varnish or Squid

         But either is better than getting shellacked, and both are better than Boost.

        InnoDB, instead MyISAM. - Who wants to get locked under a table?

        • InnoDB implements row-level lock for inserting and updating while MyISAM implements table-level lock.
        • InnoDB inherently takes care of data integrity by the help of relationship constraints and transactions.
        • InnoDB is faster in write-intensive (inserts, updates) tables as it utilizes row-level locking and only hold up changes to the same row that’s being inserted or updated

        InnoDB buffer pool. How big is too big? We know. .

        The larger the buffer pool, the more InnoDB acts like an in-memory database, reading data from disk once and then accessing the data from memory during subsequent reads. The buffer pool even caches data changed by insert and update operations, so that disk writes can be grouped together for better performance.

        KeepAlive on or off?Contact us and we'll tell you.

         

        THE TEAM
        • Ebizon NetInfo: Ebizon builds World's fastest growing Drupal site and is the backbone of the project with the expertise in performance and scalability tuning that is essential for Drupal sites with millions of nodes and users. Ebizon supports Tweentribune's rapid growth of almost 10,000 nodes addition everyday through multiple layers of content caching in multi-server environment. Ebizon extends Drupal to meet the unique needs of the site to handle traffic of more than 1 million authenticated users during school peak hours.
        • BrassTacksDesign: The BrassTacksDesign Team were responsible for project conceptualization and use cases. All day-to-day operations are managed and administered by them.
        • Rackspace: The website is hosted on Rackspace.

         

        HARDWARE The underlying hardware included 2 machines on the same Gigabit network:

        One with apache webserver and memcache with following configuration:
        1. Quad Socket Quad Core Intel Xeon E7440 2.4GHz
        2. 64GB Memory
        3. Operating System: Red Hat Enterprise Linux 5 - 64 bit

        Database server has following configuration:

        1. RAID 5
        2. 12 GB DELL RAM
        3. Single Socket Quad Core Intel Xeon L5520 2.26GHz

         

        HOW THE CHALLENGES WERE MET?
        • Challenge: Drupal is both resource intensive and database intensive. Its strength is ease of development, extensibility through modules and faster development time. Its downside is that it requires more CPU and RAM than other CMSs.

        Solution: With our experience we found that couple of Drupal contributed modules are resource intensive and their optimization is necessary in order to scale the system. We monitored SQL queries using devel module and identified the queries that consumed most resources. Then we optimized those queries and monitored their performance and load on the system for couple of days. The results and improvements were captured in a performance report that was published for client’s review.

        • Challenge: Busted Page issue which was causing page to break. The busted page was a much trickier issue solely due to its intermittent nature.

        Solution: The Busted Page Issue was THE MOST important issue since the site had scaled to 2 million page views a month and we couldn’t risk this problem to survive any longer. Initial attempt was to disable BOOST module but to our surprise disabling Boost did not solve the problem. After 24 hours of rigours effort and monitoring it looked like menu paths were restructuring during CRON that was running every hour. The best of teams in the world were thinking on it but no one could get to the root. Finally, one of our best technical leads made the cron to run instead of every hour only at night at 12 am. This resolved the Busted page problem and was a GREAT success for us and Alan.

        • Challenge: Location based advertisement and headers implementation in Drupal 6.

        Solution: Drupal ad geoip module were customized to implement the feature whereby advertisements and headers can be displayed based on users location.

        • Challenge: Only teachers of a classroom should be able to moderate the comments and comment should be published only after they have been approved.

        Solution: Drupal moderate module was customized and an interface was designed where teaches could see all the comments in a classroom and can approve or disapprove them.

        • Challenge: Blocking inappropriate words that student puts in their comments.

        Solution: Initially Watchlist module was recommended which automatically flags a node or comment if it contains any questionable content (these can be set in the Watchlist settings by adding regular expressions of words that are considered bad). But it flags the word and notifies admin AFTER the comment is posted, which is TOO LATE. Therefore Spam module was utilized to resolve this problem.

        • Challenge: Alan needed a way for the teacher to send every student’s comments to the printer with one click, instead of sending them one at a time with one click per student.

        Solution: It was not feasible to put restriction on users to have an email to sign up on Tweentribune.com therefore team found a way for not letting users create their email and instead having system create their email automatically from their Full name. The contrib module that was modified for this purpose was “Localemail” and was made to create email ids automatically for each user and let them register directly on Tweentribune.

        • Challenge: A new workflow for teachers registration was required where teachers could register themselves without requiring Alan to personally verify each registration as in the previous workflow.

        Solution: Team worked on a new workflow where:

          1. Teacher can submit information on webform, which is almost identical to existing webform with very minor change. This new form replaced the existing form.
          2. Drupal generates 9 classrooms for teacher, but does NOT use classroom taxonomy. Instead, user profile contains username and classrooms only. Classroom names use teacher's school email address + taxonomy ID. Example: mary.jones@collierschools.com-151365
          3. Drupal generates new usename = teacher's school email address. Role = teacher_private. This role is a clone of existing role = teacher.
          4. Drupal sends 2 welcome emails with username and password generated by Drupal to 2 email addresses: home email address and school email address. Email includes link to "dashboard" page where teacher can register students. See screenshot, attached. The dashboard is 600px wide, so it fits in the main content area of the current pages.
          5. Teacher logs in and is redirected to /teacher_landing_page or uses link provided in welcome email.
          6. Teacher can do the following on the dashboard:
            • register students
            • see usernames and passwords of students previously registered
            • delete students
            • print out student usernames and passwords
            • change classroom name

         

        TWEEN TRIBUNE APPLICATION AND DATABASE ARCHITECTURE

        Tweentribune.com is a news site for Tweens and following are the cores around which it was built:

          • CCK
          • Views
          • Webform
          • Taxonomy
          • Imagecache
        • Custom AJAX-based drop down select developed as a replacement of hierarchical select module (http://drupal.org/project/hierarchical_select) when selecting classroom during registration or posting of stories.
        • Custom module was used to allow non-email based registration on the site, since; Tweens usually do not have email addresses.
        • Also, custom functionalities like allowing administrator to register teacher’s requests easily from an interface that are received from webforms were also developed. Comment moderation by teachers was also integrated into the site using Modr8 module.
        Content Types
        • Stories: This is the main content type around which whole Tweentribune.com stories are built.
        • Profile:  This content type carries the student and teacher profile information like classroom.
        • Your-stories: Using this content type, teachers can post their own news into their classrooms.
        • Quiz: With this content type, teachers can post quiz on the website for their classroom.
        • Your Entry: This content type allows student to submit short stories and essays.

         

        Taxonomy
        • Topics for tween: This vocabulary is used to define category of the story posted on Tweentribune.com.
        • Classroom: This vocabulary allows users to be assigned to the classroom. Classroom is based on parent-child hierarchy with country, state, city, school and then classroom following parent child relationship. Certain stories can also be optionally put in some classroom/school.
        • Spanish: This vocabulary is used to post stories in spanish
        • Your town: This vocabulary is used to post stories from affiliate partners

        Subscribe to Drupal Mauritius aggregator

        drupal.org