If you need new Drupal Talent, or just a little extra bandwidth, consider hosting an intern through our Work Experience (WE) Drupal program. You get a line in on the most highly trained newbies out there, while supporting talent development for the community.
Interested in learning more about Drupal, but can't find the training you're looking for? Help us help you by letting us know what workshops interest you. Take this short survey to let us know!
DrupalEasy is a training and consulting company that specializes in public and private Drupal training as well as site building and consulting with a focus on best practices and building sustainable web sites. More...
Drupal is a free, super-powerful content management system for sites that require information posting and collection, including blogs, forums, videos, photos, and databases of information. We think it is the best platform available. Here's why...
More and more savvy organizations are going with Drupal for content management, and its no mystery why. It’s free, flexible, and easy to maintain for small or large volume sites. Learn more...
I was very proud to participate in the official DrupalCon Pre-Conference Training again this year. I decided to repeat my Intro to Drupal Theming class, especially since drupal 7 was such new territory. Our class size was limited to 20 students, which sold out in advance of the conference.
After reviewing some of the material in the slide deck, we attacked a fresh Drupal 7 install and quickly moved into template files in the Zen theme, which is a great tool for teaching. Next, we reviewed. some of the basics of Drupal template files, theme function overrides, and variables in tpl.php files. Our morning ended by creating a sub-theme of the Zen using the Zenophile module.
In the second half of the day, we looked at a flat image mock up I was handed for a recent theming job, and covered how to apply the styles and images to a Drupal 7 theme. After reviewing some concepts for theming Views output, we ended the day with a discussion and hands-on implementation of the 960 grid system in Drupal.
On the day of the class, Mike and I set up most of the students with a sandbox account on WebEnabled, (who is a sponsor of our podcast), giving them a quick way to follow along with the examples in class. Students all have the ability to access a carbon copy of the site through a WebEnabled account afterwards.
Let's face it - anyone with anything more than a passing interest in the Drupal community is probably aware that we're in the midst of embracing Git, "the fast version control system". As with just about everything else in our community, we are continuously jettising outdated technology and replacing it with modern solutions. Leaving CVS was a rip-off-the-bandaid sort of moment for the community - one day it was there, the next day it was gone.
In this article, I'll share my starting point - my experiences with different version control systems as of about two weeks ago - and describe the process I took to learn the basics of Git, up to the point where I was able to (ridiculously easily) update a small module I maintain on Drupal.org. This article isn't going to attempt to explain how to understand or use Git (you're welcome for that) - rather it is going to explain how I learned to understand and use Git - an important distinction. Hopefully this will help other developers travel along the same path.
As a Drupal developer with 5+ years under my belt, I've learned to co-exist with CVS (when I had to), but ultimately chose (like many others) Apache Subversion (SVN) as my day-to-day version control system. I became a master of "svn add" and "svn commit", but anything past that almost always required a trip to to the online handbook (or requests for help from my command-line-guru friends). When it was announced last year that Drupal was moving to Git, I decided that I would jump in with both feet - not only would I perform my due diligence to get up-to-speed with it for working within the community, but also for personal and client work.
I want to embrace Git more than I've embraced SVN - I want to understand it so that I'm comfortable explaining it to others (the true test of knowledge, in my opinion) as well as using it day-to-day.
I've spent a good portion of my spare time in the last couple of weeks reading about Git from a number of different sources. I'm a firm believer that different people learn in different ways, so I rarely read just a single source in an attempt to learn about a specific topic. A few months ago, I saw a tweet from a friend of mine that Rockable Press's Getting Good with Git eBook was being offered temporarily for free (it is currently $19). I snapped it up knowing that the Drupal community was moving in that direction. It's a great, gentile introduction that doesn't dive too deep, but provides a nice basis for working with Git. While it barely covers working with remote repositories (a must for working with Drupal.org or in a team situation), the writing style put me at ease.
The next resource that I found is learn.github - this free resource is broken up into various sections, with the first couple having corresponding screencasts. It appears to be a community effort, but the diagrams and text are well thought out and definitely allowed me to build upon what I read in "Getting Good with Git". The screencasts are must-sees for Git newbies.
At this point, I felt like I was ready to go. I wanted to install Git on my MacBook Pro (running OS X 10.6.6) and follow along with the lessons I was reading. I followed the link from the first lesson of learn.github, selected "OS X" and arrived at this download page. Wha? Which version do I want?
I was able to narrow it down pretty quickly by deciding that I wanted the latest stable version (18.104.22.168), but I was flummoxed by the "i386" vs. "x86_64" choice (I know, I just lost a little bit of geek cred). I decided on the "x86_64" version - not because I had any special knowledge, searched google, or asked a more nerdy friend, but because I am aware that my laptop has an Intel chip (that's the x86 part, right?) and I assumed that the "64" referred to 64-bit (which is always better than 32-bit - it's twice as much!) Luckily, my logic was bulletproof, and the installer ran without a hitch (phew).
Sorry to my Windows and *nix friends - I can't help you in choosing an installer - maybe you'll get lucky like I did. Also, I'm aware that if you have MacPorts installed on a Mac, getting Git is a single commandline line affair, but I didn't have MacPorts installed was looking for a simple installer.
Alrighty, so now I had Git installed. Now what?
I went back to Getting Good with Git and learn.github and started working my way through the lessons. In some cases, Git commands are one-to-one with SVN, at other times, it's a whole different mindset. For a beginner, I think that if you're comfortable with the basics of SVN, you'll be comfortable with the basics of Git.
I went ahead and created a Git repository to play with, I added, removed, and modified files. I branched, made changes to the branch, checked out the master, saw that the changes weren't there, then checked out the branch and saw the changes magically re-appear. One of the nice things about Git is that branches don't get their own directory path, they are stored internally in the Git repository. When you check out a branch, Git replaces your working copy with it. When you change to another branch, or go back to the master, the same working copy is updated with the appropriate code. You don't ever have to worry about the directory you're in, only the branch that is currently checked out.
I was at about this point when uber-Drupal developer chx tweeted about "The 'wonder' git documentation" - Chx claimed that "you can only really use Git if you understand how Git works". Those that only memorize commands are weak and puny and Chx has no time for you (paraphrasing). Seeing how I respected chx's work in the community and have always tried to catch his sessions at varous DrupalCons (he's not presenting in Chicago? Is that true?) in order to realize how inferior my coding skills actually are, I took his tweet as a personal challenge.
Chx was right (duh, of course). I quickly digested the first five-sixths of the documentation ("rebasing" still makes my head hurt a bit). I learned about objects, heads, SHA1 names, and how commits are related to one another. It really cemented everything I had read in Getting Good with Git and on learn.github. For anyone serious about understanding Git, it's a must-read.
Updating a Contrib Module
Now that I (mostly) felt comfortable with the Git workflow on my local machine, it was time to figure out how to use Git to have a local repository interact with a non-local repository. In other words, I wanted to grab a copy of the Git repository of a small module that I maintain on Drupal.org, make some changes, then push those changes back up to Drupal.org. This is a process that all Drupal contributors will need to be able to perform moving forward.
Luckily, members of the Drupal community (Damien Tournoud, Angie Byron, Peter Wolanin, Melissa Anderson, Randy Fay, Fabian Franz, Dan O'Brien Muzyka, and others) did an outstanding job writing up a Git handbook on Drupal.org with both general Git information and Drupal.org specific topics. I also found Jeff Geerling's blog post about getting started with Git on Drupal.org to be helpful (short and to the point) as well.
If you're not a maintainer of a contrib module on Drupal.org, while you won't have "git push" access to any contrib modules, you'll still be able to utilize the Drupal.org Git sandbox. This is a new feature (not available in the CVS days) where all Drupal.org registered users have access to their own Git sandbox on Drupal.org. This means that you can create Git repositories on your local machine, push them up to your sandbox on Drupal.org, and share your code and repository with other members of the community. This is HUGE.
Since I was planning on performing some updates to my contrib module, I also needed to set up my SSH keys so that I didn't have to enter my Drupal.org password every time when pushing code back up to the server. Using the Authenticating with Git documentation on Drupal.org, this was a fairly straight-forward process that took about 5 minutes.
At this point, I was ready to download ("git clone") my contrib project from Drupal.org and start making changes. I started with the OG Invite Restrict module. This small (and rarely used) module limits the Organic Groups invitation page to only current site members. It also adds autocomplete and RealName support to the OG invite form. There were a couple of small issues in the queue that I knew I could take care of relatively quickly, so I figured this was a good place to start.
Every contrib project on Drupal.org now has a new "Git instructions" local task (tab) - this replaced the old "CVS instructions". The instructions on the page are slightly different depending on if you're a module's maintainer or not (the image above is my view of the page as a maintainer). I have a relatively clean (not too many modules or customizations) up-to-date version of Drupal 6 on my local machine that I use to test-drive modules, it is here that I wanted to clone the OG Invite Restrict repository from Drupal.org so that I could make changes. Using the commandline, I navigated to sites/all/modules, then ran the Git command to clone the OG Invite Restrict repository as shown on the "Git instructions" page:
git clone --branch 6.x-1.x firstname.lastname@example.org:project/og_invite_restrict.git
The "git clone" command grabs the entire repository for the branch specified and automatically remembers where it came from (Git calls the source the "origin" - this will be important in a few minutes). Within a few seconds the repository was downloaded and appeared as sites/all/modules/og_invite_restrict. I navigated into the directory and did an "ls -al" to ensure that there was, in fact, a .git directory - this contains the entire repository - not just the most recent version. The entire commit history for the branch I cloned of OG Invite Restrict (this is one of the wonders of Git) was now on my local machine. Sweet.
At this point, I was ready to make my code updates - I actually fulfilled two issue requests as well as re-running the code through the most-excellent Coder module. For each fix, I committed the changes to the repository (using "git commit"). It wasn't necessary for me to create a new branch or tag (to mark a release), so the process was really straight-forward.
Once I was satisfied with the changes, it was time to "git push" the changes back to up Drupal.org where the magic packaging script would see them, and create a new (-dev) release for the module. Again, the "Git instructions" page of the project had everything I needed to know. All I had to do from the command line (from sites/all/modules/og_invite_restrict) was:
git push origin 6.x-1.x
This command pushes all of my commits to the "6.x-1.x" branch to Drupal.org.
It was crazy-easy for me to do, and took me way less time and effort than I origially thought. Once I updated the open issues in the issue queue, there was nothing left to do but to wait for the magic packaging script to come by and see that there was some new code to wrap up in a nice little downloadable package. Then next morning, I checked the project page, and the -dev version was updated (as evidenced by the "March 1, 2011" date)!
As I said at the outset, this wasn't going to be a "how to use Git" article. Clearly, there are a number of steps that I left out in order to keep this article to a reasonable length (stop laughing). Hopefully I've encouraged other contrib module maintainers to give Git a try - it's really not nearly as high a hurdle as you think.
While we're fresh off the heels of Florida DrupalCamp 2011, it's a good time to take a look back and see how we did as well as try to figure out how to make next year's camp even better. Using results from our post-camp survey as well as feedback from my fellow organizers, here's a closer look at some specifics.
While we had approximately 240 people attend the camp, we had only 36 attendees complete the post-camp survey. This paltry 15% completion rate was our own fault (last year we had a 28% response - case study) - we forgot to hold back some free books for a random drawing for completing the survey, as we did in 2010. Also, we didn't have a reliable method for emailing all attendees, something I'll discuss later in this article.
In the past, the Florida Drupal user community has been very beginner-centric. In 2010, over 40% of attendees reported that they have been using Drupal less than 3 months. This year, that percentage was down to less than 20%. Also, 35% of 2011 attendees rated their skill level as "Newbie" or "Beginner" (it was over 45% in 2010). We also continue to make strides in increasing local meetups - almost 40% of respondents indicated that they're going to start attending local meetups.
The number one reason respondents attended the camp was, not surprisingly, "to expand my Drupal knowledge" with 69%. Networking opportunities was second with 28%.
Posting information about the camp on groups.drupal.org/florida continued to be the best way for us to reach the local Drupal community. Over 40% indicated this was how they found out about the camp. Word-of-mouth (25%) and local meetups (11%) were the next two highest responses. Our twitter feed, direct email, or "some other way" were all below 10%.
The Florida Drupal user's group is more regional than local - we encourage users from all over the state to participate in the group (as well as within their local group, if they have one). Knowing that a large percentage (33% in 2010 and 35% in 2011) of people will be driving more than 100 miles, we always secure a block of rooms at a local hotel. This year over 20% of attendees booked a hotel room for the event.
Session quailty continues to be something that we actively try to improve each year. In 2010, 65% of the respondents rated the overall session quality as "excellent" or "very good". This year, we increased that number to over 85%! As part of our survey, we asked users for their "most favorite" and "least favorite" sessions - and made them required fields. This lead to comments like:
- No "least favorite session", so [I] flagged same session as "most favorite" so they would cancel each other out...
- All very good - I really liked all that I attended.
- You shouldn't make some of these fields required. "Please select your least favorite session" implies that the session was poor. None of them were that I attended.
We need to be sure to keep this in mind for future post-camp surveys!
Location and Wifi
With a new location in 2011, we knew we'd have some challenges, first and foremost was the wifi situation. There was a strict policy and complex login procedure for the wifi that left some people without access. Those who could get on were (for the most part) satisfied. The new location did provide us with two auditoriums, multiple classrooms, and common areas. While some people noted that the layout was less-than-ideal (the rooms were split among two buildings and multiple floors, pretty much everyone agreed it was a beautiful location. Plus, we couldn't argue with the cost (free!) Was the challenging Wifi and other issues an acceptable trade-off? We're still trying to answer that.
Reliable email blast
As I mentioned previously, while we used the excellent COD distribution for the site, we didn't properly plan for sending mass emails to our attendees. The issue wasn't on the Drupal side of things, it was an email account issue. We'll be sure to get this right next year.
While most respondents (77%) thought the food was "very good" or "excellent", we did receive a bunch of comments that made us think that serving all-you-can-eat, make-your-own burritos may not be the way to go in the future. For starters, it makes for a slow food line. Since we didn't have dedicated tables and chairs for lunch, some people found it a bit awkward. Cleanup was another issue. In a situation like we had, boxed lunches would have been better.
Coding for a Cause
This was our second year doing Coding for a Cause, where we attempt to build an entire site in a single day for a local non-profit organization. This year, we reigned ourselves in a bit and only attempted a single site. Unfortunately, just like last year, we failed to complete the site by the end of the day. With two years of (painful) experience under our belt, we've learned some valuble lessons:
Overall, Florida DrupalCamp 2011 was a success. I'll resist the urge to offer (more of) my own praise, instead I'll wrap with up with some quotes from the attendees when asked, "What was the highlight of Florida DrupalCamp for you?":
- Seeing all of my friends and colleagues in one place and being able to meet more people - overall, the networking was AWESOME, and worth the $10 all by itself.
- Seeing people successfully using tools and techniques I'd played with in the past and never quite figured out. Couple of "a-ha" moments that are already making a big impact on the way I work. Best $10 I've spent... since the last DrupalCamp :)
- Realizing the Drupal opportunities available.
- Overall, I was impressed by both the camp and Drupal. Looking forward to using it and am glad to see such an active community for it.
- Smiling faces, loving on the Drupal
Excited about DrupalCon Chicago? You only think you're excited - after you listen to this interview with DrupalCon organizers Tiffany Farriss and George DeMet your excitement meter will be turned up to 11. Join Mike Anello as he talks with Tiffany and George about all of the amazing things that the Drupal community has to look forward to next week in Chicago. If you're attending DrupalCon, then you'll want to queue up this week's podcast and get yourself ready for all the action next week. You'll learn what to pack, what you'll eat, how to get around, as well all the new things that this particular DrupalCon will offer. Just a warning - you may want to bank some sleep this week - DrupalCon Chicago will be going 24 hours a day!
If you'd like to leave us a voicemail, call 321-441-3964. Please keep in mind that we might play your voicemail during one of our future podcasts. Feel free to call in with suggestions, rants, questions, or D&D challenges for Andrew. If you'd rather just send us an email, please use our contact page at http://DrupalEasy.com/contact
A few weeks ago I was invited to speak to a technology committee of a large organization that was considering standardizing their various web sites on Drupal. They requested a presentation and then some Q&A time - unfortunately, I didn't have any slides ready to go, so I had to scramble a bit.
I decided to spend a couple of days (and evenings) creating a generic slidedeck that I could use for other potential clients as well as share with the rest of the Drupal community.
I started the process off by searching for existing "enterprise Drupal" slidedecks - I found two (The Case for Drupal in the Enterprise and Enterprise Drupal) that were particularly helpful in helping me figure out what factors I should focus on. I also found that many of the posts in groups.drupal.org/enterprise were very helpful in narrowing down the scope.
I decided to focus on answering a few important questions in the presentation:
I'm hoping that I've created the slidedeck generically enough so that others may utilize it as well. I've posted the slidedeck on Slideshare.net using the Creative Commons Attribution-ShareAlike license. A big thanks goes out to the people who have reviewed it so far - your help is much appreciated. I'd love to hear more feedback, suggested changes and additions, so feel free to leave a comment below.
On a very special episode of the DrupalEasy podcast, Ryan Price and Mike Anello are joined by the highly-caffenated Sam Boyer, Drupal.org's official Git migration leader. Sam was hired by the Drupal Association to oversee the transition of Drupal's source code repository system from CVS to Git. The transition is expected to take place on Thursday, February 24, 2011 - we figured that Sam had nothing better to do two days prior to the migration than sit down with us for an hour and fill us in on all the details. If you're a module maintainer or core contributor, then you definitely don't want to miss this podcast, as all things Git are discussed - from the basics to how you can get up-to-speed on Git as well as how to test the migration of your projects on http://git-dev.drupal.org/
Interview with Sam Boyer
Co-author of The Definitive Guide to Drupal 7 by Packt (to be released soon), Sam's Blog, sdboyer on drupal.org
Official Git migration group, Git migration IRC room: #drupal-gitsupport, Git migration documentation, Drupal.org Git Sandbox
Thanks to Webenabled for sponsoring this week's podcast. Create, develop, and deploy Drupal applications entirely on the Webenabled platform.
Site of the Week
WWE All-stars Video Game
If you'd like your site highlighted, please submit it at http://DrupalEasy.com/siteoftheweek.
Follow us on twitter:
If you'd like to leave us a voicemail, call 321-441-3964. Please keep in mind that we might play your voicemail during one of our future podcasts. Feel free to call in with suggestions, rants, questions, or D&D strategy suggestions for Andrew. If you'd rather just send us an email, please use our contact page at http://DrupalEasy.com/contact
As the planning for Florida DrupalCamp 2011 winds down (the event takes place February 12-13, 2011), I thought it would be a good time to share the incredible success we've had with forming partnerships and finding sponsors to (hopefully) pull off an amazing Drupal event.
The Florida Drupal user's group skews a bit toward the "newbie" side of things - while we have a small number of dedicated volunteers who carry the Drupal flag throughout the year, but our annual DrupalCamps are very well attended. In order to pull off a large event with a minimum of volunteers, we've come to depend on our partners and sponsors.
With only a handful of volunteers working week-to-week on the planning and execution of DrupalCamp, we've found that finding great local partners one of the keys to our success. We found a local university's business and non-profit center (Rollins College) that was willing to help us with an amazing location (for free) and outreach. We're working with a local computer society (and 501(c)(3) organization - Central Florida Computer Society [CFCS]) that provides a mechanism for us to handle finances as well as provides an army of volunteers to help with registration, as runners, and to help answer general questions. We're also working with the Orlando Social Media Club (OSMC) to help bring in additional social media speakers and to help with community outreach for the camp.
In each case, we're trying to do as much for the organization as they're doing for us. For the Rollins Philanthropy & Nonprofit Leadership Center, we've providing an extremely low-cost ($10) day of talks for their members. For CFCS we're providing exposure for their organization as well as technical support for their (soon-to-be Drupal) web site. OSMC is getting a venue for their speakers and members to interact.
Like most recent local DrupalCamps, in order to keep costs as low as possible, we've depended on both local and national sponsors to help us off-set the costs. To be honest, finding sponsorships for a DrupalCamp isn't all that difficult. I've found that by staying active in the local Drupal community and networking at DrupalCons is just about all that is necessary. When the time comes each year to ask potential sponsors, a clear sponsorship levels document and a personal phone call or email message goes a long way. Additionally, we ask for cash first. If a potential sponsor is interested providing an in-kind sponsorship, we normally defer until such a time that we raise enough cash to cover our budget. The last thing we want to do is devalue (or appear to devalue) a cash sponsorship (there's a reason Cash is King).
This year we doubled our sponsorship rates and added a top Platinum-level sponsorship for $2,000 and limited to a single sponsor (MindComet, this year). This sold in less than a week (and we even had additional sponsors interested). We also found five Gold-level sponsors ($1,000), as well as over a dozen other lower-level sponsors. Overall, we've raised over $8,000 in sponsorship money.
Finally, we introduced the idea of an individual sponsorship this year. There have been a number of individuals in past years who have wanted to help out more, but can't due to time-constraints. Providing these individuals with an easy way to give a little more money has proved extremely successful.
Clearly, the we've been extremely lucky to be able to find the partnerships and sponsors that we have. But, perhaps it is more than luck - by having a number of dedicated volunteers who stay active in the local and national Drupal community, we've been able to leverage our connections to organize great events.
If you're in central Florida this weekend, be sure to drop by and say hello!
Tom Geller joins Andrew Riley and Mike Anello to discuss all the recent hubbub in the Drupal universe, including some of the various schools of thought of a Drupal App Store, the state of Drupal.org's forums and Planet, and Tom's new book from Peachpit, "Drupal 7: Visual Quickstart Guide". They also discuss Tom's Lynda.com Drupal videos (as well as video tutorials from other vendors), books and videos about Drupal distributions, and the forthcoming Drupal Watchdog print magazine.
Follow us on twitter:
If you'd like to leave us a voicemail, call 321-441-3964. Please keep in mind that we might play your voicemail during one of our future podcasts. Feel free to call in with suggestions, rants, questions, or medicinal advice for Andrew. If you'd rather just send us an email, please use our contact page at http://DrupalEasy.com/contact
Tickets for Florida DrupalCamp 2011, February 12-13 at Rollins College in Winter Park, are now available at the official site: FLDrupalCamp.org. This year's event promises to the be the largest Drupal event Florida has ever seen with more of what’s been growing crowds for the past few years - now at a bigger, more comfortable venue. Tickets are just $10 and include a t-shirt, and plenty of food and drinks.
We've partnered with two great organizations to pull this off. First, the Rollins College Philanthropy & Nonprofit Leadership Center is acting as our host organization. They are providing an enormous amount of support in providing a venue, helping with session selection, and getting the word out to local organizations. The Central Florida Computer Society is helping us for the second year in a row providing financial management and a bevy of volunteers.
Beginner Track - Enthusiasts, first-timers, non-programmers, webmasters, and marketing people, as well as anyone tasked with updating sites will benefit from these sessions to provide a practical overview of Drupal. You’ll learn the basics, get practical tips, tap into great resources and gain insight as a real site is built before your eyes.
Two dedicated Drupal Hands-On tracks for programmers, webmasters, themers and others seeking to get insight and best practices from the brightest Drupallers we know. These sessions are the heart of Florida DrupalCamp, and this year will also feature valuable sessions on new features in Drupal 7.
Two Business and Social Media tracks - Social Media Club of Orlando is contributing heavily to this first ever Business and Social Media track for non-technical people, decision makers and those who need to get a better understanding of what Drupal can do. You’ll learn the basic principals, benefits and challenges in using Drupal with popular social media tools, and the advantages of the platform and its dedicated developer community.
Also, Birds Of a Feather sessions presented in a dedicated room throughout the day where you can get help, get some work done, or create your own unconference.
Networking – After the last screen goes dark Florida DrupalCamp social scene lights up with an evening designed for fun and fellowship at the Shipyard Brewery in Winter Park. It’s a chance to get to know the experts, meet the newbies, and develop a few new friendships.
2nd Annual "Coding for a Cause".
This year, we will be building a site for the 501(c)3 Central Florida Computer Society, which will be celebrating its 30th birthday next year. Our annual community selection process chose CFCS as the beneficiary of Coding for a Cause based on their active participation and support of the local Drupal community.
We'd be remiss if we didn't mention the amazing support we've received from our sponsors, led by our Platinum sponsor, MindComet, a leading interactive marketing and software development development company with a large presence in Altamonte Springs, Florida. Thanks to them and our other sponsors, including Trellon, BigCouch Media Group, Lullabot, Software Quality Engineering, and Veredus, we've been able to keep the ticket prices at just $10.
This year's event promises to be the largest Drupal event Florida has ever seen. Last year we were forced to cap attendance at a less than 200 people due to the venue, this year, the capacity is much higher. We hope to see everyone there!
We are meticulous experts in Drupal and how to leverage the web for business, outreach and data collection. DrupalEasy Consulting focuses on timely solutions that work for our clients and their end users.
Learn more about DrupalEasy Consulting.
DrupalEasy Training gets you up to speed fast. Standard workshops are available throughout the US, and can also be presented as association, user group and corporate/organization customized training events. Check out our upcoming schedule as well as our past workshops.
Learn more about DrupalEasy Training.