Click. Connect. Learn.

All posts in Drupal

Drupal in Education Unconference 2012

On Monday, March 19th, at Del Pueblo School in Denver, Colorado, around 75 Drupalists and educators met for a day of sessions focused on the needs of people working in education, and how Drupal can help.

Sessions ran all day, and some of the topics included how to manage hundreds of sites within an organization, responsive design best practices, how to use distributions within education, and how to ensure that sites are accessible.

One of our goals in planning this event was to carve out the space and time for people working within education to have substantive conversations with other practitioners, and to increase the communication between people working in different areas of educational systems. At a technical level, there are overlaps between some of the core issues people are addressing, regardless of whether they work in K12, Higher Ed, Government, in the classroom, or as part of administrative support. Philosophically, if we look at education as a process that unfolds continuously across people's lives, people within different levels of education can benefit from knowing more about how their counterparts are solving problems, and the rationales behind the systems they put in place. One of the things that struck me yesterday, as I talked with different people at the event, was the skill, talent, and focus of the people who came. I feel fortunate to have had the opportunity to sit in a room full of smart, talented people and listen to how they are doing their work.

In the conversations, there was also also a common thread of education as a social justice issue. The notion that a user interface should be evaluated from the perspective of how it empowers people to the need for multilingual translations (and how to best achieve them) were a couple of the ideas that I'll be thinking about for a while.

I'd like to thank the participants who came and made the day happen. And, if you were at the event and want to keep in touch with the other participants, please add your name to the wiki.

As mentioned earlier, the event was held at Del Pueblo School, and the space was generously made available to us by the Denver Public School System. Michael Wacker and Glenn Moses were instrumental in making this connection.

Also, get ready to mark your calendars. We will be organizing this event next year; we will announce the dates for the next event shortly after the dates for DrupalCon 2013 are announced.

Introducing Julio

Looking for a website for your school or department? Meet Julio.

Introducing Julio

Features include:

  • Blogs/Announcements;
  • Slideshows;
  • Calendars;
  • Configurable home page layouts;
  • Simple install process;
  • Fully configured text editor;
  • Simple media handling;
  • Flexible menus, customizable within sections;
  • Easy modifications to selected theme options;
  • The ability to delegate editorial control over sections, and pages within those sections;
  • And more!

Available now, and always, for free: https://drupal.org/project/julio

Credits: Music in the video from Ludvig Franzén: http://soundcloud.com/ludvigfranzen/live Used with permission from the author.

Solving Problems and Finding Solutions in Education: A Panel Discussion at the Drupal in Education Unconference

As part of our preparations for the upcoming Education Unconference taking place on March 19th in Denver we are happy to give an update on the panel discussion.

Register for Drupal in Education Unconference in Denver, CO on Eventbrite

The participants will include:

  • Jason Hoekstra - Jason is the Technology Solutions Advisor at the US Department of Education. As part of his work in the Department, Jason is working on the Learning Registry, a system to support improved sharing and collaboration among people creating and using online content for learning.
  • Bud Hunt - Bud is an Instructional Technology Coordinator for the St. Vrain Valley School District in northern Colorado. Prior to becoming an Instructional Technologist, Bud taught English. He has been blogging about technology, writing, learning, and learning online since before there was an internet.
  • Bryan Ollendyke - Bryan works in the e-Learning Institute at Penn State as an Instructional Web Technologist. Bryan has been a leading advocate for Drupal within higher education, and is the main developer of ELMS, a Drupal-based learning and instructional design platform.
  • Glenn Moses - Glenn is the Director of Blended Learning at Denver Public Schools. Glenn has spent over a decade designing and working in blended learning environments, and helped build the largest blended learning program in the state of Nevada.
  • Michael Wacker - Michael is the Online Professional Development Coordinator at Denver Public Schools. Michael designs and facilitates online learning spaces for educators to inquire, share, reflect, and connect.

The panel will be moderated by Bill Fitzgerald; Bill worked in K12 education for 16 years prior to starting FunnyMonkey, an open source development shop that works primarily with education and non-profit organizations.

The panel discussion will start by focusing on the professional needs of people working at different levels within different types of educational systems, and what tools have helped them meet those needs.

The Unconference is free, and takes place on March 19th, in Denver, Colorado. See you there!

Drupal in Education Unconference

On Monday, March 19th, we are organizing a Drupal in Education unconference in Denver; the event will be held at Del Pueblo School. This meetup will follow an unconference format, so if there is something you want to talk about, propose a topic, find some like-minded individuals, and let the conversation start.

The event is free, and attendance at the event is capped at 150 people. To attend the unconference, please sign up here. If we get more than 150 attendees, we will start a waiting list. Please sign up only if you are certain you will be attending.

Register for Drupal in Education Unconference in Denver, CO  on Eventbrite

I'd like to thank and recognize Michael Wacker and the Denver Public School System for allowing us to hold the conference in their space. Also, Melissa Anderson has provided invaluable organizational work to help get this unconference moving.

Schedule

  • 9:30 to 10: Arrive, brainstorm sessions
  • 10 to 11:30: Session 1
  • 11:30 to 1: Lunch/Ongoing Conversations There are several good food options near Del Pueblo. We are also seeing if we can arrange to have a food cart come to the school to provide another option for people to buy lunch.
  • 1 to 2: Session 2: Panel Discussion (see details below)
  • 2 to 3: Session 3

We have set up a wiki page on groups.drupal.org for session ideas; if there is a subject you want to discuss, put it on the wiki.

Additionally, if there is interest, we can reconvene at a restaurant/bar later in the day. Location TBD.

Panel Info

The panel brings together people working at different levels within educational systems. The panel includes practioners working in K12, Higher Ed, and the US Department of Education. Within the panel discussion, the focus will range from what the needs are (described in a technology-agnostic way) and what technological developments have proven most useful at meeting these needs.

We are still finalizing the participants of the panel; look for a follow-up announcement to be coming within the next couple days!

Getting There

For those people driving, on-site parking is limited.

Once you get to the venue, please enter through the West side Galapago doors. Other doors to the building are generally locked.

Administering Sites Deployed From Distributions

Within the Drupal community, we continue to wrestle with what, exactly, these things called distributions should be, and could become. Going into D7, the benefits of distributions (and specifically, the tools that support building distributions) are clear to developers. For most shops, the notion of building a site without using (at the very least) features hasn't really been an option for the last few years. Within FunnyMonkey - like at many other shops - we treat custom builds as product development, creating an install profile to contain config that can't be pushed to features, and making use of drush make during the build. Again, this is nothing horribly unique; this workflow simplifies testing, and technical decisions can be directly traced to code or a feature. Over the course of even a mildly complex project, having a clean, replicable build for all team members to work against saves countless hours of time.

Mind the Gap

But this is really only of interest to developers, or to people who directly benefit from a clear development process. These benefits filter down (theoretically) to the end user and content administrator in the form of a site that is easier to manage and use. But, the power of distributions has yet to become obvious to less technical users because, up to this point, the focus of distributions has been on automating a site install that delivers complex functionality out of the box. Distributions have done a great job solving this issue. Between installation profiles, drush make, and features, many of the pain points of replicating site builds have been eliminated or minimized.

So, using distributions, Drupal can be used to create products, and everyone can build an app store, and developers can sit back and make it rain.

Except: while distributions have taken the pain out of replicating complex site builds, they still require ongoing maintenance. Like every other software system, technology requires periodic updates; Drupal is no exception. Any Drupal site, whether built from scratch or deployed from a distribution, requires maintenance over time.

Most distributions are based on a collection of features. As a result, maintaining a distribution raises an additional question: should a distribution attempt to stay synchronized with the features that power the distribution, or with the underlying modules that are used within these features?

Tracking Overridden Features

The reflexive answer - the satisfying answer, the one that we want to be right - is that any site built on a distribution should stay synchronized with the features that drive the distribution. Over time, these features will evolve, and will have new, better, shinier functionality. However, the strength of features makes managing the config covered by that feature potentially more complex over time (there are many strengths and advantages to features, but one of the most obvious is the ability to push complex config to code where it can be managed and tracked via version control). Even a simple change (adding a field to a view, adding a field to a content type, changing a variable that has been strongarmed, etc) results in the feature being overridden. Over time, these overrides will need to be tracked against the features in the base distribution, and reverting these overrides could potentially break customizations in the production site. So, on a production site with overridden features, the overrides need to be tracked and either merged or ignored on each feature update. This is very possible to do, but it requires a level of technical expertise that is generally beyond the immediate reach of the people that distributions are supposed to empower: less technical users who just want to launch and use a web site.

Distribution-based Sites as Standalone Web Apps

And this brings us to the other alternative: once a site has been deployed from a distribution, that site is essentially detached from the distribution, and the site should be viewed as a standalone web app. With this approach, the features used on the production site should be checked into version control, and all site-specific overrides should be committed. This approach cuts the site off from potentially all future improvements in the base distribution, but it ensures that all modifications remain untouched. And, of course, this method requires a level of technical expertise that undercuts one of the main selling points of distributions. Managing overridden features in a sane way requires technical expertise, and distributions are supposed to make it easier for non-technical people to run Drupal sites.

Middle Grounds

There are additional possibilities here for working with and adapting the features within a distribution, but all of these methods require a level of technical expertise that undercuts the "distributions will simplify Drupal for non-technical users" argument. Probably the best option involves having features that are well architected, and make logical separations with documented dependencies within features. Then, end users can turn on the features that they want, and then they can clone and modify or ignore the features that they don't want to use. This leaves the core features untouched and in synch with the base distribution, but it also creates an additional set of features that should be managed via version control.

In any case, no matter the approach, maintaining a complex web site requires technical expertise. Distributions take the pain out of deployment, but they haven't done the same for maintenance.

Where To Go From Here

At the risk of stating the obvious, keeping all features untouched is really only possible in a SaaS environment, or an environment where the site admin has the discipline to resist unnecessary changes to the config. Aside from these two scenarios, most sites will require some modifications to meet the specific needs of the people running the site. And it's worth noting that in a SaaS environment, people are used to not having full admin rights, so there are use cases where only providing limited admin access could work. But, for most people/organizations, one of the key appeals of Drupal is the ability to tinker, modify, and expand the base build. This is good, and normal, and natural; if an organization doesn't think about how to use their web site in different ways after the initial launch, they are essentially stuck in time, and that's not good, and distributions need to be flexible enough to support that reality. However, within the community, until we clarify what we mean when we talk about admininistering a site deployed from a distribution, people using distributions will remain uncertain about the best approach to keep their site working well over time.

Image Credit: "Mind the Gap" taken by ammiiirrrr, published under an Attribution Non-Commercial Share Alike license.

Terrain, and Responsive Design

Like many folks who build web sites, we're seeing increased traffic from people with mobile devices.

In addition to building web sites, we're also geeks, and based on our experience working and playing on the web using mobile devices, we know that people using handhelds want the same information as people browsing the web using a laptop, netbook, or a desktop. Believe it or not, our interests as end users do not shrink or grow in proportion to our screen resolution. As a result, we favor the principles of responsive design as a means to meet the needs of mobile users.

The terrain mole!

We've been using Hexagon as our base theme for the last few years. Hex is insanely flexible, designed to work smoothly with Context, designed to eliminate the pain of building subthemes, and has an architecture that supports functional plugins within the theme. Currently, Hex ships with plugin support for accordion regions, vertical tabs, and horizontal tabs. If you want to get a sense of how Hex works with subthemes, grab a copy of VoiceBox and look at how the Dispatch theme interacts with contexts.

But, because Hex is designed to be extensible (did I mention that Hex is insanely flexible?) it can support other types of plugins.

For example, a Hex subtheme can use a plugin that supports the 960 grid system with a custom fluid width grid. Along with some other modifications, which we'll discuss in another post, this is the basis for our responsive hex starter theme. A development release of Terrain is now available for download on drupal.org. Get it while it's hot!

You can also access this video directly on Vimeo: http://vimeo.com/27829604

Because we believe that one's own dog food is the tastiest, http://funnymonkey.com is now running on a Terrain-based theme.

Code Review: It's A Group Thing

Coming up this Wednesday, May 11th, the Portland Drupal Users Group will be devoting the entire meeting to code reviews of full project applications.

The meetup starts at 6:00 PM, and it will be held at TigerLogic, 1532 SW Morrison St, Portland, on the 2nd floor. I have heard rumors of pizza, and possibly beer. Show up to find out if these rumors are true!

I Hate Wires

During the meeting, there are several things we're looking to accomplish:

  • Make a dent in the full project application queue;
  • Make further inroads into defining a clear, replicable process for code reviews, thereby:
    • Making it easier for new developers to get familiar with Drupal;
    • Making the application review process less painful;
    • Beginning to establish code review sprints as a new community norm, like code sprints and documentation sprints.

If you are an experienced developer in Portland, COME ON DOWN! We need you to help answer higher level questions, and review code!

If you are a developer who wants to get more involved, COME ON DOWN! We need you to ask questions, answer questions, and review some code!

If you are a themer, COME ON DOWN! We need you to help review theme applications!

If you don't write code, and don't theme, COME ON DOWN! We need you to help with documentation, as we will also be working on documentation.

We are also fortunate to have Alan Palazzolo and Chacha Sikes joining us to help run the event.

So, on Wednesday, May 11th, at 6:00 PM come on down, review some code, write some docs, and meet some great folks.

Image Credit: "I Hate Wires" taken by Robert Anthony Provost, published under an Attribution license.

Community Development and Code Reviews

All of what follows in this post is based on two core principles:

  1. Teaching and explaining a topic is the best way to master it; and
  2. The ideals of a community are best handed down from individual to indivdual as they work toward a common goal.

Toward that end, on May 11th, the Portland Drupal Users Group will be using our monthly meeting to run code reviews.

As a side note, while this writeup uses Drupal as an example, the general principles will work across projects, or in training/educational contexts outside software development.

Peer review

Benefits

Code reviews can help grow the existing pool of talented Drupal developers by providing a documented, more structured way for developers new to Drupal to begin learning the Drupal codebase, and learning how to work within the community that maintains with that codebase. Code reviews can also help alleviate one of the more consistent bottlenecks for developers looking to contribute more to Drupal: the project review process.

Code reviews reinforce good habits. The process of reviewing someone else's code forces a few things to happen:

  • The reviewer hones their developer chops by seeing how other people have solved problems;
  • By reviewing code for security issues, developers get more familiar with the best practices for writing secure code, and security issues in exiting code can be addressed;
  • By reviewing code for proper and appropriate use of Drupal's APIs, developers get more familiar with Drupal's APIs, existing modules get more stable and less likely to break on upgrades, and more people become familiar with how core works;
  • By testing and reviewing code via the Coder module, and/or using Devel as needed, easy fixes get implemented more quickly;
  • Opportunities for documentation and better test coverage can be highlighted as part of the review, leading to more automated review and better documentation.

But, most importantly: the process of providing a review of someone else's code creates a dialogue within the community. Code review is contribution and connection, and these are key elements to working successfully in the Drupal community.

Additionally, code reviews provide a clear starting point for people asking how to begin in Drupal. Not many people are going to start reading api.drupal.org without a clear context or reason to do so. Code reviews provide that context, and the process of a code review provides a structure for people coming up to speed on Drupal development. So, when someone says, "I want to get started in Drupal, but I don't know where to be begin," we now have a simple answer:

Check out this page for some background on giving code reviews, and then review some code. The process of reviewing projects will get you up to speed on how to develop in Drupal.

To summarize, code reviews:

  1. Help new developers learn Drupal development best practices;
  2. Help new developers make contributions and connections within the community;
  3. Help reduce the bottleneck of getting new projects approved. And, it's worth noting that increasing the visibility of code reviews as a valued contribution within the community will likely increase the pool of reviewers into the future.

Getting Local

There are a large number of local user groups. While a lot of work can be done virtually, the value of face to face meetups should not be overlooked or underestimated. Local user groups provide an opportunity for more exerienced and less experienced developers to get together and share ideas. If user groups dedicated one to two meetings a year to code reviews - where more experienced and less experienced developers worked together on code reviews - the habit of code reviews could start to become a recognized norm. Once a developer has become proficient in code reviews, the practice of reviewing someone else's code can just as easily be applied to reviewing their own code.

Over time, code reviews should be as familiar and as recognized as Code Sprints and Documentation Sprints. These are held at every DrupalCon, and are regular occurrences at local Drupal Camps. Given the value of code reviews in developing new talent, increasing the consistency and quality of contrib, improving collaboration between developers, and strengthening the contributions of local user groups, code reviews have a role to play in helping the Drupal community continue to grow, evolve, and mature.

Getting Started

Fortunately, getting started is the easy part. The queue for project applications is open, and you can sort by date to see the oldest projects first.

The Code Review Group is getting up to speed, and you can indicate on your profile that you are actively reviewing code. This wiki page and this handbook page both provide instructions for diving in to a code review.

And, if you are in Portland this May 11, come to the Users Group meeting and get running with some reviews.

Image Credit: "Crystal peer-reviewing Mike's code" taken by Jason Crane, published under an Attribution Non-Commercial Share Alike license.

I'd Like A Server With That Web Site, Thank You: Provisioning Servers and Install Profiles

Over the last few weeks, we have done some work building out an automated installation script that runs on Linode. More detail is provided below, but for those of you looking to move on and read something else, here's the short version: it can provision and tune your server, and install your web site, in about 15-20 minutes.

For those unfamiliar with Linode (see note below), they are a hosting company that provides VPS hosting. Within Linode's hosting environment, people can set up stackscripts to automate/streamline setting up a hosting infrastructure.

Atrium

We worked with Dennison Williams to start the process of building this script. It's also worth noting that, while this script is specific to Linode, the steps within this script can be used as the basis of a script to automate an install in a variety of other hosting environments, from Amazon Web Services to the Ubuntu Cloud.

Some of the steps automated by this script include:

  • Provisioning Linux, Apache, PHP, and MySQL on Ubuntu 10.04;
  • Low-level performance tuning for Apache, PHP, and MySQL;
  • General security hardening, including installing fail2ban
  • Installing Drush;
  • Installing APC;
  • Setting up cron jobs;

And, of course, it completes the process by downloading the codebase for VoiceBox, which can then be installed on the freshly provisioned system.

So, in the space of about 15-20 minutes, you can install a completely configured web site on a tuned, secure, scalable web host. Currently, we have this configured to grab and install VoiceBox, but given that this script can be modified to grab other codebases, it can also be used to automate other installation profiles (Managing News, Open Atrium, Open Public, Open Publish, etc) just as easily. This script makes another aspect of getting up and running with installation profiles that much easier.

This also ties in with ongoing work to make installation profiles - and their component features - more reusable. As we learned during our VoiceBox build, creating reusable features for install profiles is easier said than done.

This is where today's news about the acquisition of two of the most popular installation profiles - Managing News and Open Atrium - becomes relevant. Managing News and Open Atrium were built by Development Seed, and were acquired by Phase2; both of these shops have an amazing track record of high quality work, and of contributing code back to the community. This acquisition represents a significant investment in install profiles, which means that the tools to build and maintain them will likely be improving in Drupal 7 and beyond. It also sets up an opportunity to further the conversation about what is needed to take installation profiles to the next level. Given that we have been building and distributing pre-configured sites since 2005, we're looking forward to continuing our work in this space.

So, as we continue to look at the process of building and maintaining web sites, using installation profiles takes the sting out of the initial site build. Reusable features have the potential to allow useful functionality to be built once, and reused in multiple places.

Automated provisioning scripts take the sting out of building a secure server infrastructure. For many sites, using the advantages of cloud-based hosting takes the sting out of scaling a site.

To be clear, both on their own and collectively, none of these approaches are silver bullets, and running a moderately trafficked web site still requires maintenance time and technical expertise. But, these approaches make running a successful web site more accessible to more people, and will allow greater numbers of people and organizations to get more done with less work and less cost.

Image Credit: "Atrium" taken by Schrottie, published under an Attribution-NonCommercial-ShareAlike license.

NOTE: We do not have any type of sales/affiliate relationship with Linode (or any other hosting company); in our experience, affiliate agreements destroy the credibility and therefore the usefulness of any recommendation. We are, however, using Linode for several internal projects. If/when we discover other options that offer similar value, we'll definitely talk about them, and probably start using them.

Syndicate content