Planet Drupal

Subscribe to Planet Drupal feed
Drupal.org - aggregated feeds in category Planet Drupal
Updated: 47 min 8 sec ago

Janez Urevc: Drupal community, please meet Jayesh Solanki

Tue, 20/05/2014 - 12:49

Jayesh is one of the Drupal's students that were accepted into Google Summer of code program this year. He wrote an introduction post to say hi and explain what he's working on.

Categories: Elsewhere

TimOnWeb.com: Adding a custom extra field to entity / node display

Tue, 20/05/2014 - 10:23

I had a case recently, where I needed to add custom data to the node display and wanted this data to behave like a field, however the data itself didn't belong to a field. By "behaving like a field" I mean you can that field at node display settings and able to control it's visibility, label and weight by dragging and dropping that field.

So, as you may have undestood, hook_preprocess_node / node_view_alter approach alone wasn't enough.

Drupal Tags  drupal 7, drupal planet Read on about Adding a custom extra field to entity / node display
Categories: Elsewhere

DrupalCon Amsterdam: Take the Drupal Business Survey

Tue, 20/05/2014 - 08:00

To develop the content for the Business Track at Drupalcon Europe this year we're conducting surveys to find the areas in which all Drupal businesses can improve.

I blogged recently about my initial thinking on the theme of the business track at DrupalCon Amsterdam this year.

Janne Kalliola, my co-chair and I decided to conduct a series of surveys to identify the strengths and weaknesses of businesses providing Drupal related services. From the findings we can then provide guidance to those proposing sessions for the conference in Amsterdam later this year.

We're launching 3 surveys — one for clients of Drupal businesses, one for the leaders of the businesses, and one for the staff of the businesses.

We'd really appreciate you filling in the survey that relates to you, and letting others know about this blog post so they can choose the survey that relates to them:

The results are anonymous, and aggregated data will be published. Act quickly, the surveys close on the 28th of May.

If you have any questions about the survey you can contact me at steve.parks@wunderroot.co.uk.

--
The DrupalCon Amsterdam Drupal Business Track Team
Steve Parks, Wunderroot
Janne Kalliola, Exove

Categories: Elsewhere

Acquia: How to: Responsive, Full-width Banners

Mon, 19/05/2014 - 19:41

As a front-end developer for acquia.com, I've had lots of fun and challenging design requests come my way. Most recently I was tasked with swapping out the static homepage graphic with a full-width, responsive slideshow banner that can also be tested and personalized using Acquia Lift.

Categories: Elsewhere

Gábor Hojtsy: Drupal 8 multilingual tidbits 15: configuration translation basics

Mon, 19/05/2014 - 19:13

After a long 8 months break in the article series, we are back to talk about configuration translation basics. Why the long break? Well, both the configuration and content system was in heavy development with changes and I did not want to get you content that would be quickly outdated. Hopefully now it is safer to talk about what is going to end up in Drupal 8 for these systems. If not, well, then I’m sorry. We’ll cover configuration first because that is more baked.

The Drupal 8 configuration system is a boon for language

As I wrote in the previous article in the series, configuration is now encompassing lots of settings that were variables or used custom settings storage in Drupal 7. The biggest value for non-English and multilingual sites in Drupal 8 of the configuration changes is that now a common system is used to manage your site name, email text settings through to views, field settings, entity form displays, etc. We can introduce language and translation support in a way that modules will need to plan with. It is not just an optional contributed add-on but a core feature.

Categories: Elsewhere

Stanford Web Services Blog: Overriding Open Framework Styles: Responsive styling

Mon, 19/05/2014 - 17:57

In this post, I continue my series on how to override Open Framework's default styles to get a more custom look-and-feel on your site. Last time we looked at how to override our block styles, sidebar menus, and region styles. Today I'm going to share how to test for and override responsive styles on your site.

Categories: Elsewhere

2bits: Configuring Apache Solr 3.6 for Drupal on Ubuntu 14.04, with password authentication

Mon, 19/05/2014 - 17:26
Most of high traffic or complex Drupal sites use Apache Solr as the search engine. It is much faster and more scaleable than Drupal's search module. In a previous article on Drupal with Apache Solr 4.x, we described one way to install the latest stable Apache Solr 4.x. That article detailed a lot of manual steps involving downloading, extracting, setting permissions, creating a startup script, ...etc.

read more

Categories: Elsewhere

Drupalfund.us: The Rules Module For Drupal 8 Is Vital

Mon, 19/05/2014 - 17:20

"It´s one of those modules that when you start off with Drupal and you discover a little bit down the road, it opens up a world to you."

- Stephen Cross | Talking Drupal #013

 

The quote pretty much explains the Rules module in one sentence. Are you familiar with Rules? Are you already using it?

You certainly heard about Wolfgang Ziegler aka fago - the Rules module creator. As he sums it up: "For the popular open source CMS Drupal, the Rules extension module makes it feasible for users to configure reactions on a high level without requiring any programming expertise."

 

Categories: Elsewhere

Propeople Blog: A Project Manager's First Drupal Camp

Mon, 19/05/2014 - 15:21

This past weekend I got a chance to attend the first ever Drupal Camp in Moldova - Moldcamp. It was also the first Drupal event I attended. Propeople was one of the main sponsors and together with all my colleagues, both developers and PMs, we were happy to be a part of this big step for the local IT community. Our best developers from Moldova and Ukraine offices did their best in preparing keynotes and we were all excited to have useful fun together.

I dropped in to different sessions during the two days, but the two that appealed most to me both happened in the first day - these were Radu Trifan’s ThemeSnap case study and Viktor Levandovsky’s keynote on selling Drupal.

ThemeSnap case study

Radu Trifan started with comparing two business models - Agency (custom development for every client) vs. Themes (develop once, iterate and sell to different clients). Obviously, he was insistent on convincing us that the second option is much better than the first, bringing more arguments in it’s favor and trying to distill all that could be against.

His case study compared side-by-side major theme marketplaces like ThemeForest, MojoThemes, CreativeMarket and ThemeSnap. He states that ThemeSnap has major advantages over the competitors in giving the developer more control over the pricing and packaging of the products he wants to sell. This includes features missing at the other marketplaces, one of them being the ability to buy a subscription to an author’s products.

Radu also talked about the life cycle of a theme. According to his data, the average time you can make money off a theme without updating/modifying it is one year, then it becomes outdated. He also provided a link to a landing page where Moldcamp attendees could go to sign up on better terms than the rest of authors.

Selling Drupal

Viktor Levandovsky’s keynote was less formal, did not bring as many numbers, but was still interesting and engaging. His main focus was on how/why/when to sell Drupal and what obstacles he encountered in his practice with clients.

He started by making fun of open-source skeptics and continued by listing strong arguments in favor of Drupal: large community, quality code, lots of extensions, stable security solutions and popularity on the world market. The audience was mainly geeks (developers, architects), probably no designers, so as expected - topics like UX were not event mentioned, etc.

Viktor sees Drupal as a framework more than a CMS and claims that he has yet to meet a functionality that cannot be implemented with Drupal. He’s seen only one project for which Drupal was a poor match.

The second part of his presentation focused on relationships with clients - teaching them to trust professionals, declining projects with bad requirements from the start.

Event as a whole

Overall, I think it was successful, especially comparing the stories I heard from Romanian and Ukrainian guests about the first Drupal camps in their countries.

There was a heavy focus on networking, both me and my Propeople colleagues got the chance to interact with representatives from different companies in the area, as well as from abroad. Most of the speakers were very sharp, there was no bubble talk - true leaders that all beginners in the Drupal community of Eastern Europe can look up to. The knowledge shared was presented as accessible as possible, without loss in quality. Many presenters showed code pieces, and real-life examples - not just the theory that anyone can find in a codex or wiki. Every session had Q&As during or after the keynote, keeping communication going two ways.

Among other perks of attending the event: coffee partnership with Marcu’s Coffee (great coffee shop, by the way, check them out when you’re downtown), a wine break and branded pens that write really well (I’d buy more and an extra notebook if they’d be sold).

Still, no event is perfect. I look forward to better WiFi coverage at future Drupal camps and hope that I will not have to bring along my own 3G connection.

I’m definitely planning to attend next year, even more so if there will be more sessions targeted on business people, managers and marketers. Translating geek Drupal talk to businessmen is one of the topics I hope to see addressed in the future.

The organizers efforts deserve applause and acknowledgement. I think all participants will agree that we had a great time both at the event and at the afterparty. A big thanks to them, to the speakers that worked hard and to everyone else who attended.

If anyone wants to get to know Drupal or learn to master it, Propeople Moldova will be organizing an internship this summer with a real job opportunity afterwards. If you’re interested, send your resume to hr@wearepropeople.com.

And if you’re already a Drupal Jedi interested in working with some of the brightest web development minds in the area, drop us a note at the address above.

Tags: Drupal eventsCheck this option to include this post in Planet Drupal aggregator: planetTopics: Community & Events
Categories: Elsewhere

CMS Quick Start: Engage Your Visitors Using Splash Pages in Drupal 7

Mon, 19/05/2014 - 11:18

 Chances are when you launch your site you are not feature complete. Often times it is best to get a site launched as quickly as possible and then work on adding additional features down the line. However, this creates a problem: how do you engage your visitors and let them know about new features?

 

read more

Categories: Elsewhere

Drupal Association News: Whose Job Is It? Help the Drupal Association Answer that Question

Mon, 19/05/2014 - 10:30

A while ago I shared that we are trying to better understand who plays what role in the Drupal Community. A small team of Association Board and staff have done some interviews with about 20 community members and now we want to get a broader understanding - what are the issues that concern you, and who should be doing the work to address them?

We're reaching out to our most active community members to ask you to complete a survey about who you think should be doing what in our community.

Take the Survey

How the Drupal community and Association staff (as part of that community) work together to support the Drupal project is a question that we are excited to come to some agreement around. Your participation in this survey will help us answer some of the questions we have raised and create a more productive and meaningful path forward.

We would like you to share with us your answers to the following questions about the various aspects of the Drupal project and community:

  • Who decides? Which person or entity gets to make the final call about what direction to take?
  • Who does the work? For every decision that is made, who ensures that the work is complete?
  • Who is consulted? Who needs to be heard before a decision is made and/or throughout implementation?

The work of the community is incredibly broad, so there are lots of places we need feedback. However, we didn't want this survey to be overly-long, so you can pick and choose which areas of work you would like to inform.

For each area of work, we want to you to tell us how various groups of people should be engaged. The audiences are:

Have questions? Let us know. You can reach me at holly@association.drupal.org

Flickr photo: Stefan van Hooft

Categories: Elsewhere

Drupal core announcements: Drupal core security release window on Wednesday, May 21

Mon, 19/05/2014 - 06:19
Start:  2014-05-21 (All day) America/New_York Sprint Organizers:  David_Rothstein

The monthly security release window for Drupal 6 and Drupal 7 core will take place on Wednesday, May 21.

This does not mean that a Drupal core security release will necessarily take place on that date for either the Drupal 6 or Drupal 7 branches, only that you should prepare to look out for one (and be ready to update your Drupal sites in the event that the Drupal security team decides to make a release).

There will be no bug fix release on this date; the next window for a Drupal core bug fix release is Wednesday, June 4.

For more information on Drupal core release windows, see the documentation on release timing and security releases, and the discussion that led to this policy being implemented.

Categories: Elsewhere

Leow Kah Thong: Print or render Drupal user account profile form anywhere

Sun, 18/05/2014 - 16:22

Code below allows you to render the Drupal user edit form anywhere. Replace UID with the user account ID to edit.

$account = user_load(UID);
module_load_include('inc', 'user', 'user.pages');
$form_state = array();
$form_state['build_info']['args'] = array($account);
form_load_include($form_state, 'inc', 'user', 'user.pages');
print render(drupal_build_form('user_profile_form', $form_state)); Tags: drupaldrupal 7formapiprofileaccount
Categories: Elsewhere

Leow Kah Thong: Easily hide Drupal fieldset group from forms

Sun, 18/05/2014 - 16:15

First, hook into your existing form, find your Form ID.

/**
* Implements hook_form_FORM_ID_alter().
*/
function YOUR_MODULE_form_FORM_ID_alter(&$form, &$form_state) {
  $form['#after_build'][] = 'YOUR_MODULE_form_FORM_ID_after_build';
}

Replace MACHINE_NAME with your fieldset group machine name.

function YOUR_MODULE_form_FORM_ID_after_build(&$form, &$form_state) {
  // Hide the B2B group.
  field_group_hide_field_groups($form, array('group_MACHINE_NAME'));

  return $form;
}

Remember to clear your Drupal cache for this to work!

Tags: drupaldrupal 7formapifieldset
Categories: Elsewhere

Software Inn: CloudFlare and Drupal - presentation from DrupalCamp Wroclaw 2014

Sun, 18/05/2014 - 13:23

Do you wonder how we can boost performance of your website, without even taking a look at its code? It's smple - we are partners of Cloudflare, and it gives us unique opportunity to use their complex infrastructure to improve performance and security of our clients' web applications.

We participated in Drupal Camp Wroclaw 2014, where I shared some knowledge about Cloudflare You can see the slides below (in English).

Tags: CDNinfrastructureperformancesecurityCloudflare
Categories: Elsewhere

Marzee Labs: Coding as a team: code workflow

Sun, 18/05/2014 - 12:00

Every new project is an opportunity to improve and get challenged. Might it be your skills, your processes, your performance, etc. We previously wrote about how important it is to learn from big projects. It is important to understand that you can't find the perfect way of working, but you can definitely reach an optimal workflow, that you will keep on iterating and improve project after project. Allow me to share ours with you.

Part of the success of a project is to maintain a very good communication setup between all the active parts. I am not saying anything new here: emails, wiki documentation, a conference calls, you name it, have plenty of “good practices” to dictate how we should use them. But there’s a but. Have you ever thought about the passive communication? The one that is hidden in code, in consensuses, in flows. In this final part of our “coding as a team” series, we will tell you some small tricks we use to box passive, micro-communication within a project.

Branching model

Unsurprisingly, we use the git flow model. There isn’t much science behind it, but it is a pretty much standardised practice, so any developer involved in a project will quickly be aligned on the development of features, hotfixes or releases. Everyone will use the same flow and structure, which will make the merges a lot more atomic.

It is also important that, besides having a good flow, we keep good practices in… practice. That is, pull often, commit often, push often. This will reduce drastically the amount of potential conflicts. And please, oh please, don’t create pull requests that bundle code for different functionalities, or integrate solutions for completely different problems. Your co-workers will be grateful.

Organising your code

Having a proper folder structure is very important, especially on large code bases. Drupal, specifically makes it easy with a clean folder structure from the start. You should, for example, leverage the profiles approach that enforces a folder structure, besides building every site re-buildable.

Remember, code layout is the omnipresent structural documentation for any new developer that is brought into the project. Having good .info files, a rich README.md in each feature or module serving as a piece of technical documentation, is very critical. Bear in mind that your team will be looking at these files first, to get a clear overview, before diving into the actual code. The crucial point is that nobody gets lost in the code base, and can understand it more or less autonomously.

Another fundamental point in good code organisation is to streamline semantically and syntactically the nomenclature of your modules, their components such as fields, views, flags, you name it. Scoping your code and exported configuration with consistent names will remove the overhead of jumping left and right to find it.

At Marzee Labs, we progressively built up our way to organise the code. We are now satisfied with the stable solution we came up with, that helps streamline development, even so when including external collaborators. For the sake of exemplifying but a part of it, let’s say you are working in a project called “Train Maps”. In a Drupal context, your features or custom modules, and entity/node types will follow the guidelines below:

  • Any feature or custom module will be prefixed with tm_.
  • There should be a base feature where the meta information, platform configuration and continuous integration code should live. We can call it tm_site or tm_base.
  • Have a feature per content type, and standardise on nomenclature, i.e. if you use tm_train, then you’ll use tm_station. If you prefer use tm_trains, then keep on using the plural for tm_stations.

Fields are as important as the rest, so make sure you prefix them all to reflect the context they are used in. In the case of content type, for example, we’d have field_train_destination, field_station_location, etc. But even the ones that are site-wide and re-usable should be prefixed to avoid any issue, e.g. field_tm_company. In Drupal, we’d have all the field instances exported to the feature they belong to, as well as field bases if they are feature specific. In case they are site-wide, we would put them in the feature tm_field (or tm_fields, to your taste). This way, it’s easy to move them around, and make them reusable if needed.

Code review

There are plenty of great write-ups on how code reviews benefits a team. There are no rules about how to do it whatsoever, but it is important to understand why we do it.

My two only guidelines are the following:

  1. Do it. No excuses. If you are by your own, do it anyway.
  2. Make it count. If it becomes a formality of of having someone else just hitting the merge button, then you are missing the point.

Remember, code reviews aren’t meant to point fingers, debate code styles, or test confidence. Code reviewing is ensuring first and above all code quality and, by extension, security. Being human, you’ll make mistakes, no matter how experienced you are. So a second pair of eyes is always better. And even then, bugs can still get merged and even go on production. But then again that’s the whole point: you improve and learn together, next time you’ll be on the lookout.

Having a second person involved, even if passively, in the code you write has many benefits. Not only it will widen the team understanding about the bigger picture of the code, but it will also avoid isolating developers on specific corners of the code. This is of great value, as they might need the same auxiliary methods you just built, and will re-use them in the future, and avoid code duplication, in particular on large code bases.

Not to mention that if tomorrow you go on holidays, or get hit by a bus, someone can take over your work without being lost and starting from ground zero. This is why it’s so important that you carefully pick who reviews your code, might it be to validate it or learn from it.

In practice, we use GitHub’s own workflow and interface to get it done. The fact we can either write both general and in-line comments makes a pull request page an invaluable piece of documentation on who has been through that code - either by writing or reviewing it -, what decisions or tweaks were made, and why.

Bonus: pair programming

Pair programming is great. If you haven’t tried it, you should. It has all the benefits of code reviews, but instead of discussing potential drawbacks once a solution is already done, you actually build it together. Start by being the one driving and having someone sitting on your side and unlocking you. Sometimes, borrowing a fresh pair of eyes can unstuck you in less than 5 minutes. Don’t feel guilty. That’s exactly what pair programming is all about. The day will come when you will be the one called up and saying “been there, done that”!

We can extend pair programming to actually prepare what we are about to code in pairs. That is, the developers will talk through their implementation plan. It’s a great exercise, not only because you get instant feedback but also you do a verbalisation of what’s in your head.

Coding as a team

During this series, we’ve seen how automation, continuous build, and solid flows are crucial to successfully development.

Everything must start before you even type a line of code. The preparation phase is utterly important, and must be repeated prior each sprint. It goes from good architecture layout to efficient tasks splitting.

Optimise what makes sense, but don’t over do it. Always remember to use techniques and tools to serve your needs. Don’t get enslaved by them.

Categories: Elsewhere

Drupal Association News: Drupal Association Board Meeting Summary: 14 May 2014

Sun, 18/05/2014 - 02:43

If there is any steady measure of the passage of time it may just be the monthly Drupal Association Board Meetings. Another month is behind us, meaning that we 30ish days closer to DrupalCon Austin and all the other work we have planned for the year. While we accomplished a lot in the month of April, we already have our eyes on 2015 and beyond for the Association and we reviewed all of that at the last meeting. As always, you can review the materials, read the minutes, or watch the recording to get up to speed. However, I am happy to provide the condensed version for you here:

Operational Update

Although we're only one quarter of the way into 2014, it's not to early to be thinking about 2015 and beyond. Since coming to the Association over a year ago, the team and I have been working to professionalize our approach to our work, and this includes ensuring that we have a strong sense of what we want to accomplish and how we want to get there. To that end, senior staff met at the end of May to start thinking about our plans for 2015. This work is the first part of creating a leaderhsip plan and budget which we will present for adoption by the board. The board will see some early thoughts and plans in our DrupalCon Austin retreat and you can expect a public conversation about much of our thinking after that. 

We are also thrilled that our new CTO, Josh Mitchell, started in April. The tech team was already on a roll, and their velocity has only continued to increase. In April, we continued to move toward our own virtualiztion machines and to test a CDN. Both shoudl have a tremendous impact on Drupal.org. In addition to a lot of maintenance fixes, we were also able to create a new issue queue for project maintainers. This queue should help us better support maintainers who need help finding a co-maintainer, locate and deal with abandoned projects, etc. I am personally most excited that our team has, with the addition of Lizz Trudeau's time, been able to dramatically increase the number of issues in the queues that are responded to promptly. I hope the community is feeling this improvement in service and benefiting from Lizz's amazing helpfulness.

Board and staff also spent a good amount of time in April working on the Association's values and roles. We are keen to define - with the community - who does what in the Drupal Universe. A group of board and staff members conducted a number of interviews with community members about the challenges facing Drupal and the role of the Association and other community members in meeting those challenges. Now we're ready to hear from even more people: who does what? We invite you to share your opinions in a survey or you can email thoughts to me directly.

DrupalCon Latin America

We are thrilled that DrupalCon Latin America will be landing in Bogota on 10-12 February 2015. We've been working very carefully with the local community to ensure that we can deliver a DrupalCon-worthy event that will excite and energize people from all over Latin America. The program will be slightly smaller - two days of sessions and a sprint - and will allow us to deliver an event that is professional, at a price point that makes sense for Latin America. Things are progressing smoothly so far and we hope to see you there!

Update from the CTO

We also shared an update from our new CTO, Josh Mitchell. With just a few weeks under his belt, Josh has managed to put together some great thinking about how the Drupal Association tech team can shift its thinking and focus to better support Drupal.org. Right now, Josh is focused on helping the tech team shift its thinking from tackling the next thing in the issue queue to small projects of prioritized issues. Although the tech team has always been very active, this will help us acheive more impact with our work. Josh also shared a great diagram, illustrating the enormity and complexity of what, exactly, the tech team is trying to manage. We all know that Drupal.org is more than a single site, but this really helps put it into prespective:

At-Large Community Board Elections

in our final order of business, we discussed the latest news in At-Large Elections. We recently modified the election process to elect one candidate each year to a two-year term. This way, elected members get more time to integrate with the rest of the board and make the contributions they were elected to make. Along with that change, we decided to shift the election timing from Septemeber to February/March of each year. this switch allows us to elect a new member well in advance of the North American DrupalCon so that the new member can attend an in-person meeting quickly. This means that our next election will be held in Feb/March of 2015.

Additionally, we are pleased that the mechanics of elections will not likely have to change this time around. This allows us to focus on two strategic issues for the elections - candidate diversoty and voter turnout. If you have thoughts in either area, please feel free to share. 

Categories: Elsewhere

Victor Kane: Getting comfy with the VirtualBox based Bitnami LAMP Virtual Machine Stack for Drupal Development

Sat, 17/05/2014 - 16:03

A few days ago I shared my experience in setting up Bitnami LAMP Virtual Machine Stack using VirtualBox for Drupal development on my MacBook Air. That article serves well for the initial setup with the latest version of VirtualBox. Now, a few days later, I would like to share "what I really had to do" to get comfy with this local laptop/workstation development environment, the actual steps necessary for acquiring a truly useful tool.

Short List ("back to work")
  •    Obtain IP of running Bitnami Guest unless you are using static IP (recommended)
  •    Fix Local IP in /etc/hosts and login with terminal
  •    Mount codebase via sshfs and work with IDE, Atom, Sublime, etc. or else use Eclipse remoting.
Long List ("Let's get a Drupal project up and running and get back to work already")
  •    Static address
  •    Set hostname and server names on Guest if not using Static address
  •    Fix Local IP in /etc/hosts/ and login with terminal
  •    Make sure terminal is bash and not dash
  •    Checkout codebase
  •    Set files permissions and refresh files via rsync
  •    Create database via http://phpmyadmin.bitnamilampvm
  •    Refresh db via rsync if not included in codebase and load local db
  •    Setup local /etc/hosts, in the Guest vm setup the virtual hosts, and restart apache
  •    Run in browser
  •    Mount codebase via sshfs and work with IDE, Atom, Sublime, etc. or else use Eclipse remoting
 

read more

Categories: Elsewhere

DrupalCon Austin News: It's Not Too Late to Attend DrupalCon Austin

Fri, 16/05/2014 - 18:36

DrupalCon Austin is only two and a half weeks away— but it’s not too late to get your tickets and make arrangements, if you haven’t already.

DrupalCon is going to be a great opportunity to learn about Drupal, network within the community, and have fun in a fantastic city. Tickets and hotel rooms are still available, too, so what are you waiting for?

Categories: Elsewhere

Acquia: Marek Sotak: Get off the phone - Helping users through better UX and tools

Fri, 16/05/2014 - 18:28

In the podcast, Marek and I talk a little about his history in Drupal and technology and I introduce the idea of jam's (virtual) Drupal Camp. In his presentation, Marek Sotak, founder of Inline Manual and longtime Drupal developer, talks about giving your clients and site visitors the help they need without sacrificing all your productive time in the very first session of jam's Drupal Camp! "What's this jam's Drupal Camp all about?" I hear you ask? Read this kickoff announcement and call for sessions!

Categories: Elsewhere

Pages