We’re excited to see Drupal 8 out in the world, but that also means there is not a lot of time left to get ready to share it with the world! We are working on both the release announcement and the press release in English. We are looking for volunteers to help translate it to your language. The final translations will be posted on Drupal.org at the time of release.
One of the hallmarks of our community is the hard work we put into making sure that everyone around the globe has access to Drupal in their own language. Since we're focused on translation leading up to the D8 release, I wanted to take a moment to highlight the work of our Friends at the French Drupal Association. To celebrate RC1, they translated some key drupal.org pages in French:
- drupal.org/drupal-8.0 | It's French translation
- drupal.org/drupal-8.0/features | It's French translation
- They even translated the Drupal 8 preview slideshow
To these amazing volunteers, we say Merci Beaucoup. Thanks for leading the way for a truly global release of Drupal.Want to help in other ways? Here’s how:
We also need you to throw a party! Organize a local meetup on the week (or even better the exact date) with sweets, sessions, shirts, stickers or whatever fits to spice it up. Make sure to tweet about your party with the #celebr8d8 hashtag and let the community know, so it shows up on our world map on Drupical.com.
Josh asked me if I could do the presentation with him and I immediately agreed, as Josh is an awesome presenter and I knew it's going to be fun. My answer, if I recall correctly, was:If the session gets selected it will need to be partially weird. And you might need to grow a mustache for that.
He didn't grow a mustache. But it was fun and full of energy. And it has a lot of very pragmatic tips, such as Headless Drupal is a terrible idea!
Anyway, enough text - here is the video:
Mediacurrent: Leading the Way on Drupal 8: Lessons Learned from Manhattan Associates D8 Redesign (Blog Series Pt 3)
B2B eCommerce is growing. Fast. In fact according to one Internet Retailer article B2B online revenue will hit $1.13 trillion in sales worldwide by 20201. This is outpacing retail eCommerce significantly and is creating significant opportunity for manufacturers and other B2B companies to invest in online sales and marketing technology to better serve their clients’ demands. There are a number of factors in today’s business environment that contribute to this critical need to invest in better, more integrated web technologies. If you are unsure about whether it’s worth it to modernize your online technology, or you’re reluctant to set aside the appropriate budget for such an endeavor, this article provides strong reasons why this may be the best opportunity to grow your business and better serve your customers.
If you are a manufacturer, you are probably keenly aware of the industrialization of traditionally ‘3rd-world’ countries. While the quality of this new competition is often lower, the fact is that these manufacturers create downward pressure on prices in the market. And additional competitors never make it easier to keep and gain market share. Ultimately, margins on products are skinnier than they were a decade or two ago. Two major strategies are being considered to combat encroaching lost profitability and market share: cutting costs and going direct-to-consumer.
What many manufacturers have realized is that their technical infrastructure is outdated and their inability to leverage the latest web technology to modernize their business is costing them big. Legacy systems are typically spread across multiple technologies that are difficult and expensive to integrate and maintain. Often times, multiple databases become hard to manage and require manual data entry often by the company’s most valuable employees! Transitioning can be expensive, but modernized systems often reap the benefits of reduced stress and hassle, better customer service, reduced technical and inventory costs, and more agile marketing capabilities.
Another opportunity that many manufacturers are considering , is increasing their margins by removing the ‘middlemen’, and going direct to the end customer. The reward is higher profit margins and ownership of the end customer relationship. Direct ownership of the customer has benefits that go beyond higher profit margins as it also means better access to word-of-mouth advertising, easier brand management, the higher ROI on marketing dollars that goes with customer loyalty, and the customer behavior and preference data gathered through the process of directly servicing the customer.
The other obvious (and often painful) fact is that the methods of reaching buyers are changing. Buyers are less willing to be subjected to cold call2 sales efforts and less likely to click on banner ads3 4. Traditional online marketing is losing traction across the board. Marketing is seeping from every corner of our lives, whether it’s print, radio, web, apps, calls, and texts. You can’t even visit a news site without being confused about whether your clicking on an article or an ad disguised as an article! What buyers want to do now is research product details and pricing on their own and choose their supplier before they even pick up the phone, relying on that research to inform their interest and buying decisions. This requires that the right content is at their fingertips when they are researching your offerings.
In a recent article from ‘think with Google’5, statistics were presented that showed that a full 46% of buyers now fall into the 18-34 years old age range, and this shift has rapidly occurred over the last two years. These younger buyers will demand a different experience than old buyer portals with their poor user experience. Even the new ones created by ERP systems are typically years behind modern eCommerce technology, and can range from cheap and dirty to expensive yet constrictive. All of these ERP wholesale portals lack flexibility, scalability, etc. The hidden cost to the B2B merchant is frustration, loss of time, loss of growth, and ultimately loss of their loyal clients.
There is no question that significant revenue is transitioning to the online channel from traditional B2B channels. If you include revenue that comes through these traditional channels (sales reps and other direct offline orders), but was initiated by buyers’ online research, it accounts for a (most likely) majority percentage of overall revenue changing hands in the B2B arena. The distributor is sorely hurt if they do not have the right online experience. And these buyers are not likely to reach out before they move to another distributor. Their silent ultimatum is modernize or lose market share.
The hard part about making the transition is that it is a jungle in terms of technologies promising ‘robust’ B2B solutions. The discussion seems to always center around a list of features, which are used to compare one technology to the next. While it may be comforting to have these lists and comparisons, the crux of the matter is actually less about features, more about fundamental differences. Features create the blind spots, where decision makers stop thinking about how the technology choice will impact the end user experience, including the integration of commerce and content, and how it may create unnecessary dependence on a vendor. We often find that the focus on features creates an assumption that all other decision factors are equal, and in doing so, often lose control the ability to adapt quickly to market changes and maintain control over their business processes.
Interested in B2B eCommerce?
We've got a lot to share. Subscribe below and we will email you on several key topics.
1"B2B e-commerce sales will top $1.13 trillion by 2020." 2015. 2 Sep. 2015
2" Facts On The Future Of Social Selling vs. Cold Calling." 2014. 23 Jul. 2015
3"10 Horrifying Display Advertising Stats." - Hubspot." 2013. 23 Jul. 2015
4"Better than Banner Ads: Smart ways to spend your ad ..." - Tint. 2015. 23 Jul. 2015
5"The Changing Face of B2B Marketing" – Think with Google. 2015. 23 Jul. 2015
One of the most difficult parts of executing a successful round of usability testing can be recruiting participants. You may need to show your designs to people who fit a certain professional persona, or hear feedback from people with a particular technical skill set. Once you’re in touch with testers who fit the bill, you’ll have to navigate their busy schedules, and disparate locations, to organize their test sessions.Tags: acquia drupal planet
Frederic Marand: Drupal tip of the day: how to drop the Simpletest collections when using Drupal with MongoDB
When running tests on a server using the recent versions of the MongoDB module for Drupal, and more specifically the MongoDB simpletests, the simpletest runner may leave droppings in your MongoDB Drupal database, which have no business remaining there. How to remove them while keeping the good collections ?
The typical case will be after a failed test runs, looking like this:
While the new configuration system in Drupal 8 strives to make the process of exporting and importing site configuration feel almost effortless, immensely complex logic facilitates this process. Over the past five years, the entire configuration system code was written and rewritten multiple times, and we think we got much of it right in its present form. As a result of this work, it is now possible to store configuration data in a consistent manner and to manage changes to configuration. Although we made every attempt to document how and why decisions were made – and to always update issue queues, documentation, and change notices – it is not reasonable to expect everyone to read all of this material. But I did, and in this post I try to distill years of thinking, discussions, issue summaries, code sprints, and code to ease your transition to Drupal 8.
In this article I highlight nine concepts that are key to understanding the configuration system. This article is light on details and heavy on links to additional resources.
It is called the “configuration system.” The Configuration Management Initiative (CMI) is, by most reasonable measures, feature complete. The number of CMI critical issues was reduced to zero back in the Spring and the #drupal-cmi IRC channel has been very quiet over the past few months. Drupal now has a functional configuration management system, but we only should call the former a CMS. While it is tempting to think of “CMI” as an orphaned initialism, like AARP or SAT, we aspire to avoid confusion. Our preferred phrase to describe the result of CMI is “configuration system.” This is the phrase we use in the issue queue and the configuration system documentation.
DEV ➞ PROD. Perhaps the most important concept to understand is that the configuration system is designed to optimize the process of moving configuration between instances of the same site. It is not intended to allow exporting the configuration from one site to another. In order to move configuration data, the site and import files must have matching values for UUID in the system.site configuration item. In other words, additional environments should initially be set up as clones of the site. We did not, for instance, hope to facilitate exporting configuration from whitehouse.gov and importing it into harvard.edu.
The configuration system is highly configurable. Out of the box the configuration system stores configuration data in the database. However, it allows websites to easily switch to file-based storage, MongoDB, Redis, or another favorite key/value store. In fact, there is a growing ecosystem of modules related to the configuration system, such as Configuration Update, Configuration Tools, Configuration Synchronizer, and Configuration Development.
There is no “recommended” workflow. The configuration system is quite flexible and we can imagine multiple workflows. On one end of the spectrum, we expect some small sites will not ever use the configuration manager module to import and export configuration. For the sites that utilize the full capabilities of the configuration system, one key question they will need to answer regards the role that site administrators will play in managing configuration. I suspect many sites will disable configuration forms on their production sites – perhaps using modules like Configuration Read-Only Mode – and make all configuration changes in their version control system.
Sites, not modules, own configuration. When a module is installed, and the configuration system imports the configuration data from the module’s config/install directory (and perhaps the config/optional directory), the configuration system assumes the site owner is now in control of the configuration data. This is a contentious point to some developers because module maintainers will need to use update hooks rather than making simple changes to their configuration. Changing the files in a module’s config/install directory after the module has been installed will have no effect on the site.
Developers will still use Features. The Features module in Drupal 8 changes how the configuration system works to allow modules to control their configuration. Mike Potter, Nedjo Rogers, and others have been making Features in Drupal 8 do the kinds of things Features was originally intended to do, which is to bundle functionality, such as a “photo gallery feature.” The configuration system makes the work of the Features module maintainers exponentially easier and as a result, we all expect using Features to be more enjoyable in Drupal 8 than it was in Drupal 7.
There are two kinds of configuration in Drupal 8: simple configuration and configuration entities. Simple configuration stores basic configuration, such as boolean values, integers, or texts. Simple configuration has exactly one copy or version, and is somewhat similar to using variable_get() and variable_set() in Drupal 7. Configuration entities, like content types, enable the creation of zero or more items and are far more complex. Examples of configuration entities include views, content types, and image styles.
Multilingual needs drove many decisions. Many of the features of the configuration system exist to support multilingual sites. For example, the primary reason schema files were introduced was for multilingual support. And many of the benefits to enabling multilingual functionality resulted in enhancements that had much wider benefits. The multilingual initiative was perhaps the best organized and documented Drupal 8 initiative and their initiative website contains extensive information and documentation.
Configuration can still be overridden in settings.php. The $config variable in the settings.php file provides a mechanism for overriding configuration data. This is called the configuration override system. Overrides in settings.php take precedence over values provided by modules. This is a good method for storing sensitive data that should not be stored in the database. Note, however, that the values in the active configuration – not the values from settings.php – are displayed on configuration forms. Of course, this behavior can be modified to match expected workflows. For example, some site administrators will want the configuration forms to indicate when form values are overridden in settings.php.
If you want more information about the configuration system, the best place to start is the Configuration API page on api.drupal.org. It contains numerous links to additional documentation. Additionally, Alex Pott, my fellow configuration system co-maintainer, wrote a series of blog posts concerning the “Principles of Configuration Management” that I enthusiastically recommend.
I hope you will agree that the configuration system is one of the more exciting features of Drupal 8.
In my last blog I wrote about 7 things you can do to help get Drupal 8 contribs faster, where I mentioned that organising a contributed module port- a- thon was one way you could help, in this post I am elaborating on how to actually go about doing that.Decide if it is a general or targeted port-a-thon
How you tackle organisation changes considerably depending on if you are focusing on a particular contrib module or allowing attendees to work on any module. It will also depend on the size of the event which type is best for you to target.
For a small event you will likely be far more productive selecting a single contrib to work on and in some ways I think this is the best approach.
In this scenario you are likely expecting your attendees to already have a project to work on, it would be worth sending them an email before the event encouraging them to touch base with maintainers of the modules they would like to work on.
The steps I would recommend for organising the actual event are as follows:Teach or patch
A code sprint can either be intended for experienced developers only, ready to dive in and write patches for the software. It can also be open for anyone to participate in any way they can.
It can be for both, but you will need to decide this in advance so you can set expectations and plan accordingly. At least one person should be planning to spend much of their time teaching rather than coding to make it a good event for beginners. It's generally good to have around 1 mentor for every 8 participants.
Find your core team
You will need a few well experienced developers that can help direct any less experienced attendees that may attend, it's a good idea to lock down these volunteers before you proceed.
Experience that can be useful for these volunteers to have (depending on the module)
- Patch Reviewing
Also you may want to think about how to set up a development environment for attendees: https://www.drupal.org/tools
The main thing with development environments is that you don’t want to spend all your time helping users fix a broken one, make them aware they are free to use what they are comfortable with, but if it isn’t working ask them to use the suggested setup just for today.
Select a contrib to focus on
If you are planning a smaller focused sprint you will want to select the contrib to work on, without doing that it will be hard to move on to the next step.
If attendees will be picking the contribs they want to work on themselves, I would suggest you have a google doc where they can list their name and what module they want to work on so that like minded attendees can pair up with them.
Once this google doc has settled a bit I would suggest you encourage attendees to reach out to the module maintainers, make sure you allow ample time (up to a month) for a response as maintainers are often a busy group of people. Here is a sample message that can be posted in the issue queue or to the maintainers contact form:Hi [name], My local community is currently planning a contribution sprint and during the event I would like to help with porting [project name] to Drupal 8. The event is advertised at: [event link] It is being held on: [event date including timezone] It would be really helpful if you could find some time beforehand to let me know anything that would be relevant to your plans before the event so that my work can be as useful to the project as possible. Cheers [your name]
If you’re lucky one, or several of them may be able to attend your event (in person or virtually). They will be able to give insight and some background on their plans which will be invaluable for attendees to make sure that their development work during the sprint will have a chance of being committed.
Also take the opportunity to try and pick a date when a maintainer will be available so that you can move on to the next step.Find a venue
It’s generally good if you can find a location that is easily accessible via public transport, the other main concerns are food and internet access.
Plan to provide enough access points with enough capacity for 2.5 devices per person.
For a small sprint of around 10 people: Bandwidth: 20-30 MBps down, 5 MBps up should handle 20-25 devices.
If your venue is close to food outlets this will be sufficient, but you will get a better turnout if you can get food sponsorship from local companies that use Drupal.
Also getting food delivered means more time for coding!
Be sure to publicise the event to the relevant places:
- Relavant groups at groups.drupal.org
- Relevant meetup.com groups
Remember to use the #Drupal hashtag on twitter and also send a tweet to @drupalmentoring to help spread the word.
- Drupal planet
- Have someone who can be a point of contact before and during the event
- Tell attendees if food is or isn’t being catered
As a first order of the day it would be good to run around the group and introduce yourself and have everyone give some indication of their background and Drupal experience, as well as what they would like to do to help with the port of this particular module.
As with any sprint it is a good idea to have people group up and work on things together, and for an event focusing on a particular module it's a good idea to have a discussion about the overall plan for how the group plans to tackle the work involved.
- Have name tags for everyone, ones that won’t be below the table when sitting down.
- Make sure you have access to whiteboards or butcher paper for brainstorming and assigning tasks.
- Having a group focus on documentation will really help the maintainers so don’t forget that part.
- Git can make the process of contributing so much easier. There are many great Git tutorials out there, but [Git Immersion] http://gitimmersion.com/ is a great resource
- Ensure everyone knows about the ‘Version control’ tab on d.o
- Make time for people to communicate their achievements
- Think about having a social event at the end of the port-a-thon
- Have a great time!
Those who have organised events in the past will usually be happy to help you with advice, feel free to contact me if you have any questions.
Drupal 8 RC2 is out and a full release is coming on November 19th! But, in order to make more great websites on Drupal 8, we need to port a bunch of contrib projects from Drupal 7 to Drupal 8. There are a LOT of contrib projects out there (over 12,000 modules, themes, and distributions!), so the new Drupal 8 Contrib Porting Tracker helps track these projects so the community can see what’s going on in a centralized place.
Angie Byron (aka webchick) wrote a great blog article on the idea behind the Drupal 8 Contrib Porting Tracker. TL;DR: Everything was everywhere for D8 ports, and now it will be in one place. To understand more about the motivation for the Drupal 8 Contrib Porting Tracker, check out the project page FAQs and this drupal.org issue's comments on the history of its evolution and some other opinions on its worth.
Do you want to help this documentation process? Great! This blog post shows how you can contribute to the Drupal 8 Contrib Porting Tracker project. You do not need to be a core contributor or a contrib project maintainer or a coder or even know much about Drupal to help with this task!Step 0: Install Dreditor
First and foremost make sure that you have dreditor installed on your browser.Step 1: Don’t redo what has already been done
Log into Drupal.org.
Take a look at the Drupal 8 Contrib Porting Tracker Issue Page, and check if the project is already being tracked.
IMPORTANT: Make sure that you choose - Any - issues manually, since the drop down defaults to Status: Open issues.
For this how to, I am going to choose the module Nice Menus and add it to the list of contrib projects documented in the Drupal 8 Contrib Porting Tracker project.
Click Search and, in this case, no results appeared since the project hadn't been added yet. Make sure you search several variants of the project name, including the machine name. For example, "Nice Menus", "nice_menus", and "nicemenus" (in case there is a typo). Note: If the project already is being tracked, you can update the issue for that project if you have additional information to add or more current information.Step 2: Check the project’s page and issue queue
If a project is ported, in the process of being ported, or is not going to be ported, we want to create an issue in the Drupal 8 Contrib Porting Tracker. In other words, if the issue doesn’t exist, make it!
If we take a look at the Nice Menus’ Drupal.org project page, we see Nice Menus has a development release for Drupal 8. Great!
It's also important to get a look into how the development is going for the Drupal 8 port, especially if there is not an official D8 version yet. You can do this by searching “Drupal 8”, “Drupal 8 port”, "D8 port", etc. in the issues for the project.
Looking through the issue queue for Nice Menus I saw that many users were having difficulty using the Drupal 8 release of the module. Now I know to put the status as "Needs work" (all the other status will be explained in the next section).Step 3. Create an issue in the Drupal 8 Contrib Porting Tracker
Navigate to the template for Drupal 8 Contrib Porting Tracker.
Click the CLONE ISSUE button. This handy button shows up because we installed Dreditor. :)
The template will open up in a new page.
Now, let’s fill in the information in the fields.
- TItle: [module_short_name] Module Human-Readable Name (Issue Template)
- Ex. [nice_menus] Nice Menus
- Project: Drupal 8 Contrib Porting Tracker (2573607)
- Leave as is
- Category: Plan
- Leave as is
- Choose between: Critical, Major, Normal, Minor
- Unless this is a very popular module or blocks the porting of numerous other modules, choose between Normal and Minor
- Status to choose from:
- Active = No D8 port started yet.
- Needs work = D8 development has started but is not yet usable.
- Needs review = Project has Alpha or Beta D8 releases available for testing.
- Reviewed & tested by the community = Project has Release Candidate (RC) D8 release.
- Fixed / Closed (fixed) = Project has stable D8 release.
- Statuses with special meaning:
- Postponed = Project porting is blocked; for example, blocked on another dependent module or on a core issue.
- Postponed (maintainer needs more info) = Needs research to determine D8 status.
- Closed (won't fix) = Project or its functionality is now in core.
- Closed (duplicate) = Project has been renamed or made obsolete by another project.
- DO NOT use these statuses at this time (in the future, it's possible these will be used for a status)
- Patch (to be ported) (if there is a patch available, mark as Needs work and update the issue summary with a link to the issue with the patch)
- Closed (works as designed)
- Closed (cannot reproduce)
- Status to choose from:
- Version: 8.x.0.x.dev
- Leave as is
- Choose from: Module, Theme, or Distribution
- Leave as unassigned unless you are planning to do the port yourself
- Issue tags
- Leave empty or follow the guidelines for tagging issues
Fill in the information for the Issue summary.
(Note: The issue template may change in the future so follow the template on the Drupal 8 Contrib Porting Tracker for the latest and greatest.)
Read the highlighted section since it contains directions and then delete it.
Now fill out the text underneath each <h3>.
If some sections aren't applicable to the project or are unknown, please keep the section and write in the section: "N/A", "Unknown", "None", etc. or even just leave it blank. That way someone with the information will have a spot to easily add it later.
The sections include:
- Project summary and overall status
- Project URL
- Link to the code - this is usually either on drupal.org (main project page or an issue in that project) or on github
- Estimated completion date
- Any other projects that this module depends on
- Name(s) of who is doing the port
- What is needed to help the port
- The roadmap for how the project will be ported
- Any links for reference
Delete the text in the Parent issue field.
Click the Save button.
Proofread the issue you created. If you find any mistakes, simply edit the issue again and fix the mistakes.
Great job! Here’s a look at the finished result for the Nice Menus Drupal 8 Contrib Porting Tracker issue.Step 4. Tracking the top 1000 projects by November 19th!
The Drupal 8 Contrib Porting Tracker is a centralized way to track all our favorite projects available for the community. We are currently part of a team of community contributors who are adding these porting issues for the top 1000 projects and would love your help.
To find the top 1000 projects, check out the Drupal project usage overview page. Go down the list and find a project that's not in the Drupal 8 Contrib Porting Tracker and then add it following the instructions above. Or, if you want to coordinate with us more tightly, we are tracking the top 1000 projects we are adding right now so contact us and we can collaborate on getting these into drupal.org.
Our goal is to get these top 1000 projects into the Drupal 8 Contrib Porting Tracker by November 19th in honor of the official release. It takes a village to raise a Drupal!
Lindsay Gaudinier Topics: Services:
Chromatic: BADCamp 2015: Transitioning From theme() and Theme Functions to Render Arrays and Templates
I was fortunate to attend and speak at BADCamp for the first time this year. BADCamp is the Bay Area Drupal Camp, held annually in Berkeley, CA. I don't know the official numbers, but I believe over 1,000 were in attendance, giving it the feel of a smaller DrupalCon. The camp was well organized, the sessions were high quality, and I met and got to know quite a few great people.
Anyone who wasn't able to attend can watch my session, 7 to 8: Transitioning From theme() and Theme Functions to Render Arrays and Templates, here:
My slides are also available online. The video and slides include in-depth examples, but for the TL;DW crowd more interested in the key takeaways:Render Arrays > theme()
The theme() function no longer exists in Drupal 8. Instead, render markup by passing render arrays to the template. Start using render arrays instead of theme() in Drupal 7 right now. Not only will it make the code easier to port to Drupal 8, but there are other advantages.
Using render arrays allows for the data to remain an array until the template renders it into markup. Waiting to render markup allows other modules or themes to intercept and alter the data before it is rendered. This is typically done with preprocess hooks.Templates > Theme Functions
When Drupal 7 goes to render markup, it does so with either a theme function, such as theme_image(), or a template. Theme functions contain a lot of logic and are a tough way to write and alter markup. Overriding theme functions also involves copying a significant amount of code to make changes.
Instead of writing theme functions, write templates. Keep the logic in preprocess and process functions. This separation will make altering the logic and markup much easier. Other modules or themes can easily use preprocess hooks or override templates as needed.
Drupal 8 has taken this approach. While theme functions can still exist in Drupal 8, all core theme functions were converted to templates.More information
For more on this topic, check out these resources on drupal.org:
- Twig best practices - preprocess functions and templates
- Render Arrays in Drupal 7
- Setting up variables for use in a template (preprocess and process functions)
- Theming Guide
There were also a number of other sessions at BADCamp related to this topic. They included:
- Drupal 8 Theming: A Crash Course
- Drupal 8 Theming - No More div-itis
- Drupal 8 The Back-end of Front-end
Thanks again to the BADCamp organizers. I hope to see everyone again next year!
Yes, 1779 days after Drupal 7 arrived, we finally have a release date for Drupal 8.
As a result of this decision, two other important dates were decided:
- the end of support for Drupal 6
- the approximate release date for Drupal 8.1
Read on to find out more about these important dates for Drupal, during the next six months:
When it comes to picking the best Drupal agency to work with or for, you should look at team wellness. To be fair, most completely remote, globally distributed powerhouses are healthy. But this post, it’s different, it’s why Axelerant is at the forefront of Drupal agencies.
Here we have an amazing life coach working full-time for our team members, semi-annual raises that are peer-determined, serious productivity, and a get things done mentality that isn’t measured in hours. And these are just a few unique details of Axelerant. These characteristics aren’t exactly how you’d classify an agency typically.
At Axelerant, work-life balance, organizational culture, time (and of course, money) are gone about differently. It’s changed the way we live.We take employee satisfaction to an odd extreme.
We hired a Life Coach full-time for our team members. This unique move has helped forward our holistic approach to instill job satisfaction, side step burnout, and enable healthy professional growth. Team members can contact our life coach to work on career path objectives, stress management, personal goal setting, life changes, social challenges, and much, much more.
This enablement creates a healthy and safe environment within our organization. In a professional environment like this, positive feedback doesn’t always do the job. We’re building a positive culture for our team, with an emphasis on goals, personal development, and satisfaction.
We’ve got an awesome kudos system. Our HR platform is integrated with Slack, which lets us give publically and receive pats on the back throughout the day. We encourage many notes of appreciation, recognizing monthly those who give and receive the most.
Often when logging into our Slack system, we find personalized messages from the CEO and COO encouraging us to reach out to our leaders, peers, or them if there’s something on our minds.
Monthly 1-on-1’s are about career growth. Making improvements and milestones are imperative, but you could say that career growth is paramount. Team members meet with leaders to discuss this growth so they can visualize the stepping stones.
In these meetings, we discuss training opportunities, the possibilities of educational reimbursement, and career path changes. If a team member is interested in another vertical or department, we can nurture a transition or part-time involvement.
Our progressive policies are benefits. Team members are encouraged to take advantage of leave, travel, and tech policies whenever applicable. Inside Axelerant, you’ll find travel and technology budgets (Wi-fi reimbursement and device replacement); group health insurance; maternity, sabbatical, and paternity leave, and an extra special leave policy.
Days off are shareable with other team members. And these are paid, of course.We “do” work differently.
There’s been quite a bit of talk recently about burnout in the Drupal community. Work-life balance has been at the heart of this conversation. At the crux of work-life balance rests company policy.
Let’s face it, over working, over time, and burnout have a lot, if not everything, to do with an agency’s approach to productivity. The best Drupal company will put this into perspective.
We don’t clock in or out. We deliver quality work on time and budget, without timesheets. Productivity is about results via Key Performance Indicator’s, not punch cards. When you work hard, efficiently, and you’re connected with the team, you get quality results on time and budget.
Of course our approach is detailed; we’ve adopted and refined agile frameworks which support our self-organized, self-managed teams. Agile powers how we go about getting things done, our performance tracking and collaborative. There are many more reasons for our successes in delivery, including our competence with automation.
We set our work schedules. This scheduling is expressive of deep trust and responsibility, but it’s also a testament. Axelerant’s work-life balance is in the hands of each team member.
This doesn’t mean that our employees aren’t up early in the morning or late at night. What this means is while some may choose to be up before the sun (or long after it’s gone), it’s up to them. We encourage them to do what’s best for themselves.
These agile and scheduling characteristics help foster our team’s wellness, as both are focused on the needs of the individual. We’ve found that this doesn’t hinder project success, in fact, it helps to ensure it.
Rigidity doesn’t work, and our teams have proven that they can be trusted with accountability and independence.We handle finances differently.
We’re transparent. In Axelerant, employees can view salaries, raises, and other details about company spending. These aren’t coveted secrets; figures are talked about openly. In this way, every employee is kept in the loop and encouraged to ask questions about our internal affairs. We keep ourselves honest, and we don’t mind talking about money.
We’re passionate about our work and our livelihood. Some firms and agencies don’t like to speak about money. We’re not like this. Let’s be frank, financial conversations centered on our employees needs aren’t signs of a lack of passion or selfishness. At Axelerant, we encourage openness.
Semi-annual raises are peer-determined. Each team receives a raise budget based upon profits. Next, the allocation of this amount is by honest team-level discussions. We’ve found that this system in conjunction with 1-on-1s, metrics, and engagement survey enables team recognition and promotes project feats. While this isn’t wholly competitive, it does encourage personal growth.
We’re paid on-time, in monthly lump sums. This consistency works great for our employees when it comes to putting away savings and meeting monthly budgeting needs. Whereas some agency employees need to wait several weeks to a couple of months for addressing their school loans, rent, food, and other financial concerns, Axelerant employees are already done during the first week of every month.And being global? It changes everything.
Axelerant is a globally distributed team (France, Taiwan, India, Israel, Japan, Australia, United States, and more to come). Some of us are from big cities; others live in small towns—why does this matter? Because we’ve built a close-knit international team and have attained a diversity some can only dream of.
We’re a melting pot. Our cultural differences create a unique environment that enriches us all. The unique perspectives and insights every team member brings to Axelerant makes our team dynamic.
The importance of having this universal, a global mindset in today’s market can’t be undervalued. We’re world travelers, with deep appreciation for the new. This connectedness is positive energy that charges Axelerant’s brand: we’re multicultural movers, doers, and dreamers.
There are global events and retreats happening back-to-back. Our annual retreat officially brings us all together for epicness, but we often see one another at international cons, camps, and other local meetups. This sponsored travel takes many of us to places we wouldn’t be visiting otherwise, broadening our horizons, and exposing us to the world even more.
We’re an international, 24-hour powerhouse. We use time zones to our advantage. This provides a tremendous advantage to our clients and enables us to get ahead of other agencies. At any time, somebody from Axelerant, somewhere in the world, is working hard at getting the right thing done.
These are just a few oddities that make Axelerant great. If you’re looking to hire or work for the best Drupal agency, these are some of the details you should be considering.Sounds unbelievable right? It's not Find out for yourself
The post The Best Drupal Agency to Work With? Consider Team Wellness. first appeared on Axelerant.
Perhaps the most important workflow any of us encounter is the one least talked about: That is, the flow of, well, our work. Not of our content through a CMS, but of the process of building that CMS in the first place. Or, for that matter, any web project.
Many electrons have been spilled extolling the merits of Agile development and the evils of Waterfall development, the two popular workflow archetypes. The real world, as ever, is not that simple. Especially when we speak of consulting projects rather than in-house teams, pure Agile is rarely acceptable; it lacks long-term predictability (by design). And good design (both visual and technical) requires some level of up-front gestalt planning.
Every project is different, but what does an ideal project workflow look like? And how can we try to approach that ideal more readily?Plan Ahead
There is an old British military adage: Proper Prior Planning Prevents Piss Poor Performance.
Up-front planning of a project is crucially important, especially when some stakeholder asks the all important question: “So will we be able to do it within budget and/or timeline?”
Good planning is how you are able to answer that question.
More important, though, that planning phase (often called “discovery”) is where the architecture of the project is defined. That architecture encompasses three different, closely-related areas: Content Strategy, Design, and Architecture.Content Strategy
Content strategy is one of those fields that has only recently received a name, but has been around as long as good websites have existed. It can be thought of as the “architecture of information” (not to be confused with information architecture, which is a subset of content strategy), or perhaps design of information. Content strategy is concerned with questions such as:
Sometimes we need a Drupal installation for a quick test of a module, theme, or feature that we are working on. You can have a LAMP stack installed locally or, as we do at Agaric, use virtual machines. In both cases, it can take a considerable amount of time to make the required configuration to install Drupal. It is possible to avoid all that by leveraging Drupal’s support for SQLite and using PHP’s built in web server. Let me show you how to easily create a disposable installation with a few drush commands.
During BADCamp 2015 sprints, some developers and myself joined Jesús Manuel Olivas to work on Drupal Console. It is an amazing project that allows you to speed up your Drupal 8 development by generating scaffolding code. Some Console commands require a Drupal installation to work. I wanted to contribute to the project so I used drush to download and install Drupal in seconds. For instructions on installing drush, check this great article by Karen Stevenson.
1. Download Drupaldrush pm-download --drupal-project-rename=drupal drupal-8.0.x
This will download the latest development version of Drupal 8.0 and place it in the directory specified by the --drupal-project-rename parameter. In our case, the directory name will be called drupal. If you omit this parameter, the files will be downloaded to a directory with the Drupal version number in it.
2. Change directory and install Drupalcd drupal drush site-install standard --db-url=sqlite:///tmp/test.db
Once we have downloaded the code, we change directories to the Drupal root and issue the installation command. standard is the installation profile to be used. The --db-url parameter allows us to specify the database to connect to. Usually this would include the credentials for MySQL or your favorite database server. In our case, we are going to use SQLite which is a self-contained database engine. To use it, we only need to precede with sqlite:// a file path on our system where the database will be created. In this example, that path is /tmp/test.db
3. Start PHP’s built in serverdrush runserver
Starting in version 5.4.0, PHP includes a lightweight web server. The previous command will start the server listening by default on 127.0.0.1:8888. Paste that in your browser’s address and enjoy a fully working Drupal installation in front of you. If you got a different IP address or port number use that instead. The server will keep listening and even output logs as you interact with the site. When you are done testing, press Ctrl + C to stop the web server.
4. Clean uprm /tmp/test.db cd .. rm -rf drupal
Finally, do some clean up. Delete the database file. If you set up the database in /tmp you might not need to manually delete it. You should also remove the Drupal directory. Everything will be gone in a snap.
The complete recipe is:# Download Drupal drush pm-download --drupal-project-rename=drupal drupal-8.0.x # Change directory and install Drupal cd drupal drush site-install standard --db-url=sqlite:///tmp/test.db # Start PHP’s built in server. Press Ctrl + C to stop the web server. drush runserver # Clean up. rm /tmp/test.db cd .. rm -rf drupal
A shourtcutdrush core-quick-drupal --core=drupal-8.0.x --profile=standard drupal
The previous drush command will download Drupal, install it using SQLite, start PHP's built in server, and even open a browser windows with user 1 already logged in. The command exposes lots of parameter to configure the Drupal installation. In our example, we are downloading version 8.0.x, place it in a directory called drupal, and use the standard installation profile. All the other parameters would use the defaults. For a list of available parameters and arguments issue the following command in the terminal drush help core-quick-drupal.
My motivation for following this approach was that I needed to write and test code when sprinting on Drupal Console. If you do not need to modify code, Patrick Drotleff has built an amazing website that allows you to create temporary Drupal installations with support for modules, themes, distributions, patches, and more. To use it, visit https://simplytest.me
Drupal Console not only generates scaffolding code. It also lets you interact with your Drupal installation in similar ways to Drush. For example, it lets you download and install Drupal using a MySQL database. Notwithstanding, it is not possible at the moment to install Drupal using SQLite or start the PHP’s built in server. Jesús Manuel Olivas, one of the project maintainers, said that these options would be available in future versions of Drupal Console.
What do you think about this method for creating disposable Drupal installations? Do you follow a different approach? Let me know in the comments.
A while ago, our creative director asked me to implement a custom 404 page on our corporate website. We were tired of the generic drupal 404 page and wanted to give it our own “cheeky” touch.
Of course with drupal, there are a few different ways to accomplish this. So I decided to use a custom preprocessor and php template for our application.
Basically, what we are going to do is create a new php template called page--404.tpl.php and modify the code to suit our needs. But before we can get started, we first need to tell drupal about this new template.
We're now a LaunchCode Education Partner, and we're thrilled to introduce you to this great organization!
Several of our recent projects have involved setting up languages that feel like 'child' languages of other languages, for a variety of reasons. Sometimes it's for marketing, so that content can be overridden for markets using a specific currency, other times it's to target a specific audience. Our classic examples are 'Euro English' and 'British English' - in either case, these are special cases of regular English. A more traditional example would be Canadian French - where most content would be the same as French, but some pages would want different spellings or customisations. We came across Amazee Labs' work on language fallback which inspired us to work on the Language Hierarchy project.
Since my talk at Drupalcon Barcelona about a recurring revenue for Drupal shops I’ve had several discussions with other agencies about how to grow a professional and reliable Drupal support business. In this blog post I’d like to share with you the things I've learned. Read more