At MidCamp (Midwest Drupal camp), I found out a really fascinating thing about Drupal 8: Support for PHPUnit is going to be part of the base distribution. This means a great deal to Solutions Architects and Developers at Promet because we have been striving to integrate automated tests into our build. Perhaps you remember from my talks or previous posts, number four of my 10 Principles of Continuous Integration is "Self-Testing Build". This makes Drupal a much more sought-after platform for shops looking to fully embrace Continuous Integration.What do we do now?
Currently, Promet uses PHPUnit for testing purposes. Our team (Michelle Krejci and Will Milton), have instituted the use of Behavioral Driven Development (BDD) using Travis-CI, Behat, Mink, PhantomJS, and PHPUnit. This provides our requirements, use-cases and a way to easily self-code-review. For those not familiar with Gherkin, I urge you review it. It's a simple process to write use-cases in English, such that someone can program tests against it. The confidence this has given our team in our quality of code, and the confidence the client has in the outcome is phenomenal.
Michelle can attest to this being the case. In a project she’s working on now, the tests are actually being used to get sign-off that work is complete. All of the tests were created ahead of time and the scenarios are added as needed; therefore, change orders are obvious because the tests are in version control. There is no question on what scenarios we are supporting, when one was added, or when a piece of work is completed to the specifications.So how do we improve on BDD?
The problem with this workflow is that we have to jump to the Functional Test level to test anything at all. In terms of testability, it’s a tiny improvement compared to the Simple Test workflow Drupal has now. However, we have seen improvement since we’ve moved from Selenium to PhantomJS. As you probably know, PhantomJS and Selenium both do browser testing.
In the case of PhantomJS though, we aren’t testing specific browsers. In fact, PhantomJS is a browser, and a mighty fast one at that. This is fine for Promet where it is less significant whether specific browsers function a certain way. PhantomJS has improved our performance for testing over Selenium by strides.
But there is something even better! Testing at a Unit Level!
Drupal has been nearly impossible until Drupal 8. We had the Simple Test framework that was baked into Drupal, but it did what I like to call the "Use a Car to Test Another Car" approach. Specifically, you had to have a full instance of Drupal running so that it could make a fake instance of Drupal so that you could test. Additionally, functional code isn't very encapsulated. That is, you can't specifically say, "My inputs are xyz, and my outputs are abc.". The lack of encapsulation is mostly due to frequent use of global variables and not being able to group functionality with data like you can with objects in Object Oriented Programming (OOP).
Fear not. The new object oriented framework gives us easy access to new-fangled Dependency Injection, mocking of objects, and other programming patterns that allow us to consolidate a single unit of code. In our case, a unit is a single function within a class, which is the smallest unit of code that can be tested using PHPUnit.
This inspires developers to not only write better, testable code, but in smaller testable units that are...(insert drumroll, please) Reusable, not to mention, easier to test.So how does Unit Testing make things easier?
In several situations, we could rid ourselves of functional tests altogether. If every single piece of a component is working as expected, then the sum of those parts would equal a feature that works as expected. Lastly, those tests run a couple of orders of magnitude faster than the PhantomJS tests. This means that the tests can easily be part of the build script and not just something that runs on Travis-CI.
Speaking of Travis-CI, now we can integrate Travis-CI directly with Drupal. No more hacking the pieces together to get a testable environment outside the box.Final Thoughts
Overall, BDD is still flippin’ awesome and has its place in projects; we will still continue to use it. BDD is great for communicating directly with the client with something testable. However, Unit tests will allow us to build a set of reusable code at a lower cost to maintain. These unit tests allow us to better gauge our quality of code. I think these facts, speaking strictly as a Developer, will improve upon the testing process that we already have in place, particularly for our migrations and more technical projects with APIs and integrations. Looking into the future and our use of Drupal 8, I am excited for the availability of new unit test results to be used as insurance to our clients to backup our claims of quality. Developers happy and clients happy? Yes please! Thank you, Drupal 8.
Preparing the materials for the monthly board meeting is a lot of work, but it's a great chance to reflect each month on the momentum of the Association and the community. Looking back, March 2014 was particularly exciting as the community and staff are pushing forward in several directions at once with considerable momentum. So let's get down to it and share some of the highlights:
Each month we review the metrics outlined in our 2014 Leadership Plan and share updates from the teams. We're pleased to say that most of our metrics are in the green (within 95% of goal). Particularly exciting is the news about DrupalCon Austin. Numbers looked very solid at the end of March (the end of our reporting period for this meeting), but we are also able to share that early-bird pricing ended just a few days after this dashboard closed and we beat our estimates, meaning that we are more than on-track to have a 4,000 person event this June - another biggest DrupalCon ever!
We are also really pleased with the momentum around the Drupal.org metrics. This is still our area of greatest concern - we have more red metrics here than anywhere else. However, March brought some tremendous gains that, if sustained, will move our metrics quickly towards green. In particular, we focused discussion on:
- Page Response Time: Our goal is 3.07 seconds. Our current average for the year is 3.93 seconds. Part of the reason that we're so far from goal is that we had some serious issues in January that pushed the numbers way up. Our hardware improvments (thanks to the DIWG and Rudy) have helped speed this up, and the upcoming CDN deployment will bring this number down even further, especially for individuals accessing the site outside of the US.
- Testbot performance: Goal is 70 minutes, but actual average for the year is about 138 minutes. This actual is also very inflated by lots of issues we had in January that pushed the total testbot time much higher. Thanks to work done at Drupal Dev Days in Szeged by Jeremy Thorson and Ricardo Amaro, along with some changes to D8 core, the actual tesbot run time average in March was just 47 minutes!
- Home Page Bounce Rate: This metric is one of the central motivations for the User Research that the DCWG has begun as part of a larger Drupal.org reinvention. We have also begun to put tools like Optimizely in place that will allow us to run tests and experiments based on our research, which should help us address bounce rate, time on site, and other engagement metrics for our various audiences. We likely won's see shifts here for some months, but we are definitely thinking about these metrics and working to put the foundation for a solution in place.
At the Association, we work hard to ensure that our actions are in line with the Drupal community values. This is, of course, particularly important when money is part of the equation. To that end, the Association has a Financial Policies document that is reviewed annually by the board Finance Committee and sets rules for transparently and openly making decisions for how Association money gets spent. Until now, one element that was lacking was a Procurement Policy to govern when we pay for a service (vs. work with a volunteer) and how and when we can take in-kind donations. Back in February, we looked for feedback from the community, and incorporated a lot of the suggestions into a final policy, which was approved by the board in the meeting.
I would like to add that this policy, though approved by the board, is just a starting place. There is so much nuance that we will encounter as we put the policy into practice. During our annual review of policies, we will have the opportunity to revisit and refine this language. In particular, we want to ensure that we are supporting and growing the volunteers who contribute to the project and not hiring contractors at the expense of the health of our community.
In the March Board meeting, we updated At-Large term length and shifted the election cycle. The goal is to give our At-Large Directors a better board experience by giving them time to integrate into the board and really work on their agendas. With this change, the community will elect one At-Large Director each year to a two-year term. For this to work, we need to stagger the terms of our existing At-Large Directors, Morten DK and Matthew Saunders. Since Morten is serving his second one-year term currently, the board voted in this meeting to extend the terms of Matthew Saunders 1 year. So, in our next election (in February 2015), we will elect a new At-Large Director to fill Morten's seat for two years and Matthew will have one year left in his term.
First Quarter Financials and Annual Audit
In Executive Session, the board reivewed the financials for the first quarter of 2014 and received a presentation of the 2013 Audit report from the Association's auditor. All materials were previously reviewed by the Finance Committee (which meets monthly to review the most recent financial reports), and the Finance Committee recommended approving both the fiancials and the audit. The audit documents are now being produced as final versions (we presented draft documents to the board) and will be shared with the community at the June public board meeting at DrupalCon Austin. If you're ready to dive into some numbers before then, you can review the first quarter financials now:
The rise of open source, and the skyrocketing popularity of Drupal as a CMS, has made for many very happy developers working in the open source world. But for some people, it isn’t just a hobby or a way to bring home a paycheck: it’s a ticket out of crushing poverty.
Though DrupalCon Latin America - Bogotá, Columbia is just under a year away, we’re already getting the ball rolling on planning and organization— and we need your help!
The month of March was pretty huge for the Association - we tackled a lot! Join us for the next Drupal Asssociation board meeting where we will review the work we accomplished and set the stage for even more. In addition to our review of March, we'll be discussing a new Marketing Committeee charter, a new Procurement Policy, and review some branding updates for the Association.
If Drupal adoption is going to increase, we’ll need to grow the community— and that means continuing to bring developers, web designers, and digital experts into the Drupal fold. For the finale of our series on Drupal training options, we spoke to several of the many experts in Drupal training, and wanted to share their thoughts with the community.
When it comes to increasing the amount of Drupal talent in the market, there are more options to learn the platform than ever before.
This week’s notes will be all about something unique, which happened last week: a 7 day long sprint for Drupal.org.Personal blog tags: week notes
We need a better way to work together
This is a dense topic, and this post is very long. So, let me provide a short summary here before you all tl;dr me, which would be deserved. The long and short of it is that Association staff and other community members have to figure out a better way of working together.
We’ve been sharing lots of big news at the Drupal Association lately. From hiring a CTO to lead the Drupal.org Tech Team, to implementing a content delivery network (CDN) for parts of Drupal.org, we’re making big, exciting improvements at the Association — and they wouldn’t be possible without our Supporting Partners.
In this blog series, we’re taking a little time to spotlight just a few of the many, many Drupal training options available today. With an emphasis on people in the community advocating Drupal and putting together programs to expand the community, we’re spotlighting a few of the dozens-- if not hundreds-- of fantastic training options out there.
You may have noticed over the last several weeks we have begun rolling out updated badges for memberships and our partner programs. (You can see the full line-up of new badges here.)
We’re sprucing up our membership badges as part of an iterative effort to update some of the visual branding for the Association - more on that in a moment.
The Drupal.org working groups have been busy as usual! Here are the latest updates on what the Drupal.org Software, Infrastructure, and Content working groups were doing during the past two months.
Yes – it’s true! After extensive research, we have selected the location of DrupalCon Latin American 2015…drumroll please…
Several weeks ago, we announced that we were launching a dedicated job board and issued a request for proposals. The idea for a job board came out of a community survey where we learned the community is highly interested in such a service.
It used to be that learning Drupal guaranteed a lot of blood sweat and tears locating the right documentation for your needs and finding help among an informal network of Drupalers. Throughout the years, it has become simpler to find help through programs like Drupal Core Mentoring and a growing number of options for formal training.
Back in November, we communicated that we were searching for a CTO. Now, we’re pleased to announce that the search is over, and Josh Mitchell (joshuami) will be joining the Drupal Association team as our CTO effective March 31! At the Association, Josh will be working with us out of the Portland office to improve Drupal.org in a variety of ways, including:
The Drupal.org Content Working Group recently published a post announcing their plans to reinvent Drupal.org— and we’re trying to get the ball rolling on this major improvement of content, usability and design.
For me, going to DrupalCamp London was a bit like going home. After I joined the Drupal Association, DrupalCon London was the first Con I worked on from beginning to end, and it was where I was fully introduced to the incredible Drupal spirit. I built great friendships with so many wonderful community members, who gave up their free time to help make that event a success.
Great news, everybody: The Drupal Association’s February Global Training Days was a HUGE success! 34 training companies from 20 countries participated in hosting Introduction to Drupal and What is Drupal sessions. We at the Drupal Association would like to issue a huge thank you to the participating companies and trainers that hosted the sessions. You guys rock!
Another month, another Drupal Association Board Board Meeting! Huge thanks to the community members who showed up in the meeting and on IRC to participate. We are very lucky to have so many active and passionate community members who help shape the direction of the Association. This month we tackled several meaty topics, made a big announcement, and more.