Now that we're nearly down to single figures for beta-blockers a few of us have started organizing around a D8CX initiative similar to that run during the Drupal 6->7 update. Talk on irc over a month-or-so led to a formal kick-off meeting to set down some goals and get some action items.What is D8CX I hear you say
Back in the Drupal 6 -> Drupal 7 cycle the D7CX initiative promoted/assisted contrib modules porting from Drupal 6 to 7.
The CX stands for 'Contrib experience', ie its about ensuring the best contrib-module experience for building sites with Drupal 8.
Present at the meeting were Nick Waring (nickwaring89) (PreviousNext), Dave Reid (davereid) (Lullabot), Tim Plunkett (tim.plunkett) (Acquia) and myself (larowlan) (PreviousNext). Apologies were received from Angela Byron (webchick) (Acquia), Michael Schmid (schnitzel) (Amazee Labs) and Kim Pepper (kim.pepper) (PreviousNext). Although Kim did drop in for the last few minutes.Goals
Introductions aside we turned our attention to the group's goals which were agreed as follows:
- Promoting the status of Drupal 8 ports of key contrib modules
- Establishing a curated list of modules to report on
- Facilitating communication to wider the community of key contrib module maintainers' needs (eg testing, funding, sprinters)
- Providing a centralized location/point of call for those willing to help/sponsor to make first contact
We decided that our primary objective should be to reboot a site similar to drupalcontribstatus.com (via wayback machine). We discussed re-purposing d8cx.org but @webchick kindly offered the drupalupgrade.info domain.
Screenshot of drupalcontribstatus.com from Internet Wayback Machine
We settled on the following feature-set for the site:
- Dashboard on home page showing status/% of modules with links to more detail
- Call to action 'get involved'.
- Possible 'pledge/chip-in/sponsor' links where module maintainers identify a need?
- For each selected module
- Status (none/dev/alpha/beta/rc/full)
- Percent complete (manually set)
- Status description (text)
- Upcoming sprints
- Links to crowd-sourcing campaign if applicable
- How to help blurb (priority tasks)?
- Maintainer details/bio
- Port team/sponsor details/acknowledgements/thanks
- Latest news/updates
- News feed (of updates/progress) for syndication (twitter/rss)
In addition we planned to have regular (fortnightly) meetings to discuss progress.Promotion
We discussed proposed ways to promote the work being done and our status as follows:
- groups.drupal.org/core post to announce initiative and goals with details on how to get involved (you're reading it - spooky)
- Regular blog article on port status/milestones reached (eg module x reached beta) - see news feed feature above
- Regular podcast/lightning talk? (hangouts on air) Regular catch-up with selected maintainer to flag where they're at and where audience can help?
- @schnitzel has proposed a session on D8 Contrib Module status for a session at DC Amsterdam
One of the key items identified is that Drupal 8 might mean some significant refactoring of modules during porting. To this end a Contrib mentoring session similar to core mentoring was proposed, essentially contrib office hours where maintainers/those helping with ports can come to irc and ask questions like 'how should I do this?' 'what happened to y?' 'what's the best way to architect x?'. This is informally happening in #drupal-contribute already but a dedicated Q/A session at regular timeslot(s) via irc made sense. The caveat here would be that the knowledge captured/shared during these sessions be distilled into handbook/documentation pages and/or the examples project. Yes, you must take a blood oath to do so. Seriously.Action items
Meeting action items were as follows:
- Decide on a domain and organize hosting (@timplunkett).
- Start building the site functionality (@larowlan)
- @nickwaring89 kindly volunteered to co-ordinate site updates/collaborate with maintainers to gauge their needs/status
- Post minutes on g.d.o/core (@larowlan)
- Start building a list of candidate modules to report on(@davereid, @kim.pepper)
- Assess state of upgrade status for support querying 8.x status (@larowlan, @webchick)
- Reach out to other large Drupal shops/service providers to seek their involvement in the initiative (@timplunkett, @kim.pepper)
- Reach out to module maintainers of modules identified(@nickwaring89)
Next meeting 10pm UTC Wednesday 9th of July. This is a rough time-slot for European community members but falls around 8am for Australia and at the end of the working-day for the US. We aim to move to a rolling schedule that would allow the three time-zones of participants (Europe, US, Australia) to be able to reasonably attend two of every three meetings.Want to get involved?
Get in touch with nickwaring89 to register your interest in getting involved.AttachmentSize Screenshot 2014-06-27 14.23.17.png88.72 KB
Our client had some very specific requirements for their project. They needed to be able to insert links to files and they needed to keep the same URL for those files even if the file changed. Those familiar with Drupal will know that by default, Drupal will suffix the newer version of the filename with _0, _1 etc which obviously breaks the URL. Here's how we worked around the issue...
Exaltation of Larks: Weaving Community with TimeBanks USA: Drupal and Time-Based Alternative Currencies
TimeBanks USA is a 501c3 nonprofit organization that promotes and supports timebanking. Timebanking was created by Dr. Edgar S. Cahn, who founded TimeBanks USA in 1995.
Timebanking is a tax-exempt alternative currency system that works like this: if I spend one hour helping you build your website, I earn one credit, or time dollar. You can then turn around and exchange that time dollar by giving it to someone who fixes your refrigerator, coaches you on your resume, or gives you a ride to the airport.
“The possibilities are endless,” according to TimeBanks USA. “An hour of gardening equals an hour of childcare equals an hour of dentistry equals an hour of home repair equals an hour of teaching someone to play chess.” It’s different from bartering, because this type of timebanking is based on services (and not goods) between members of a network.
This wasn’t the first time Exaltation of Larks has worked with alternative currencies. We created a virtual economy for Digital Dollhouse, a casual game where girls are empowered to become their own interior designers. In this virtual world, it’s possible to trade or regift items like dolls, plants and pets, and work with an in-game currency named ddCoins.
In addition to our work with TimeBanks USA, our experience with timebanking includes working as volunteers with two Los Angeles-area timebanks: Arroyo S.E.C.O. Time Bank and the West LA timebank cleverly named Our Time Bank. Our Time Machine project is an experimental Drupal installation profile for communities and organizations looking for turnkey timebanking software for their members and participating businesses and organizations.
TimeBanks USA founder Dr. Edgar S. Cahn has spent more than four decades striving for social justice. He began his career working for the Kennedy administration, focusing on alleviating poverty and hunger. He then opened the Citizens Advocate Center, an organization dedicated to protecting the rights of community groups as they interacted with the government. In 1972, Dr. Cahn founded the Antioch School of Law, whose curriculum was designed to teach students to practice law for the greater good of society.
Here at Exaltation of Larks, we have enormous respect for Dr. Cahn: at the age of 80, he is still a rabble-rouser and hell-raiser who is fighting to change the world, and we’re proud to provide him with the technical assistance to further this goal. Dr. Cahn is a true visionary and we hope to work with — and write about — him and his partner, Chris Gray, TimeBanks USA’s CEO, more in the future.TIMEBANKS USA’s ROLE IN TIMEBANKING
TimeBanks USA supports timebanking in myriad ways, including offering onsite trainings nationwide; organizing an annual timebanking conference; hosting webinars and teleconference calls; and consulting individually with clients. The organization helps members connect with local timebanks or create their own.
One of the parts of TimeBanks USA infrastructure is a large scale social networking platform named Community Weaver, which has a software-as-a-service subscription model. There are more than 400 timebanking websites all around the world that rely on it to help manage and organize their timebanking processes, community activities and other needs.TIMEBANKS USA’s NEEDS
Exaltation of Larks performed a substantial security and performance audit on Community Weaver, a complex Drupal multisite system. We helped TimeBanks USA fix critical issues affecting one of their essential online organizational tools — their Community Weaver software. This software platform runs a quickly evolving and iterating network of Drupal websites, so it was vital that the software could be updated and developed sustainably and seamlessly, yet without overriding the autonomous decision-making processes of each chapter website.
In addition, we worked with TimeBanks USA to develop a project plan for version 3.0 of Community Weaver and raise the funds to build it; we addressed problems arising from the system’s simultaneous use of both WordPress and Drupal; and we helped streamline the organization’s decision-making process.
TimeBanks USA needed extensive rework on their Community Weaver software, specifically with regard to security, performance and usability issues. Community Weaver is an online organizing and tracking tool for timebank members: it records time exchanged, displays service offers and requests, keeps track of memberships, and displays announcements for the community. Any local timebank can subscribe to TimeBanks USA’s software-as-a-service (SaaS) system to manage their members’ work. TimeBanks USA hired Exaltation of Larks to audit and rework Community Weaver 2.0, with the plans to eventually migrate all their technology, online memberships and e-commerce data to version 3.
TimeBanks USA was also experiencing security problems with its self-hosted WordPress website, which was outside our original scope of work. TimeBanks USA used our emergency support system and we quickly mobilized to resolve this new issue. We determined that security had been compromised and implemented several solutions to tighten it up, from checking the code integrity to updating MySQL access and hardening file permissions.
In addition to our work with TimeBanks USA, we worked with the Arroyo S.E.C.O. Time Bank, one of the many timebanks affiliated with TimeBanks USA. Arroyo S.E.C.O. serves neighborhoods in the eastern and northeastern Los Angeles area, which meant the Larks who were in the Downtown Los Angeles area could work with them one-on-one.OUR SOLUTION
We began by tackling the security issues found in Community Weaver. Fortunately, TimeBanks USA had an in-house Drupal developer, who we worked with on a massive infrastructure audit, focusing on security and performance. This multisite installation had been built by its previous developer with development practices that were common in 2007, before Features and configuration-in-code became popular. We identified which multisite instances had been modified by their local chapters’ coordinators — which meant examining data structures, views, and content types across hundreds of Drupal websites — and which had unsafe code or configuration. We found security vulnerabilities through the entire stack, from the Drupal systems and websites down to the server operating system, all of which we documented, prioritized and / or resolved.
This was an extensive audit that had both technical and political ramifications. Each chapter is run by its coordinators and volunteers and sometimes in completely different ways than other chapters. In a multisite environment, making technical decisions for the entire fleet of hundreds of websites would impact all local chapter websites that had been modified for their own business cases.
We worked in conjunction with TimeBanks USA to devise policies and joined them on many global community conference calls — open to all coordinators of all the timebanks in the world — to describe our technical approach and to solicit feedback. Our task was to provide technical leadership for the entire organization. We needed a set of standards for sustainable development of this enormous network, but we also needed to respect each individual chapter’s right to make its own decisions.
The project plan we provided included time estimates to address the security problems we found. TimeBanks USA’s tech coordinators reviewed our list of most-needed fixes and then we consulted with a local timebank coordinator and Community Weaver user to make sure these fixes matched their timebank’s list of essential tasks.
We worked with several popular web hosting providers, including Drupal-as-a-service platform companies, to negotiate competitive pricing on behalf of TimeBanks USA. Due to their unique system and web application architecture, we recommended SoftLayer based on their features and pricing.
The unfortunate multisite architecture that the prior developers had devised had the result of creating exponential complexity precluding any proper maintenance and further development on the system. We navigated our way through thousands of lines of uncommented custom code. We also found that the Linux server environment was an abandoned and unsupported custom distro. In both cases, we replaced as many unknown components as possible with stable, peer-reviewed alternatives and we documented the rest. We also stabilized the system by locking down the kinds of changes that individual coordinators could make to their individual timebank chapter websites, thus reducing future maintenance costs.
We fixed several security issues in the system by altering file permissions, MySQL accounts, and text input filters. We used PHP Filter Lock, a module we developed that disables the text form fields that contain PHP code, thereby mitigating the risk of CSRF and XSS security threats on websites that have the core PHP Filter module enabled.
On the same server as the Drupal multisite network was a WordPress marketing website. This in itself is not a problem. Exaltation of Larks’ position is that WordPress is great for simple websites and Drupal is great for complex systems and web applications. Having both on the same server created unnecessary security issues, however. The WordPress installation was technically able to overwrite anything on the Drupal side as well as access the Drupal database. We changed all MySQL usernames and passwords and locked down the file permissions so that the WordPress website could no longer be overwritten or be a risk to other software on the server, including Community Weaver.
Next, we worked with TimeBanks USA to develop the requirements for the next version of Community Weaver. The materials we developed included specifications for a fully featured mobile app, a business plan with financials and pitch deck, and more, and were designed to help TimeBanks USA secure additional funding. In the meantime, we trained a member of their community to maintain the software so they could further reduce their total cost of ownership.
Exaltation of Larks also provided TimeBanks USA with communications strategy consulting services. We performed a 360-degree organizational audit and came up with a more streamlined decision-making process. We created flowcharts of all the key players and stakeholders at TimeBanks USA and highlighted the points at which they had both strengths and weaknesses, and made recommendations where more efficiency was needed.COMMUNITY INVOLVEMENT
Timebanking has evolved very differently in other parts of the world in ways that no one could have predicted. Nowhere is this emergent behavior more apparent than in highly populated cities, where the numbers, density, and different practices around timebanking create vastly different needs. One such advanced timebank is the Arroyo S.E.C.O. Time Bank in Los Angeles, which has thousands of members across dozens of separate neighborhoods. They needed several custom workflows implemented on their individual timebanking website to manage the scale that had resulted from their impressive growth. By its very nature, the timebank had no money for further development on their individual website.
Barnraisings are a concept taken from Amish culture, where the community comes together to build a barn for a newly married couple who wouldn’t be able to afford the time or expense of building a barn on their own. In the context of web development, barnraisings are like code sprints where the programming community gets together with a deserving nonprofit, and works with them to create or improve their software. For the development community, this is a teaching experience, and newer developers get to learn from seasoned veterans about client relationships, requirements gathering, project planning and the tools used for effective teamwork. The nonprofit brings food — usually excellent food — and everyone benefits.
Starting in April, 2012, the Larks partnered with Droplabs and arranged three separate barnraisings to build new features for the Arroyo S.E.C.O. Time Bank. Not only was a good time had by all, the team built functionality that the Larks turned into Features-based modules that could then be securely distributed to the other timebanks, to be turned on, or not, according to the wishes of each individual timebank coordinator. Features built included a custom registration workflow, neighborhood-specific blogs, and structured data types for content, among others.PROJECT OUTCOME
Previous to Exaltation of Larks coming on board, TimeBanks USA had been working with a different development company. The Community Weaver software proved challenging to rework and over the 2 years we worked together we ensured that key security and performance problems with the software were resolved.
TimeBanks CEO Chris Gray says of the project: “Given the importance of the software for the mission and vision of TBUSA, and given how much we had to learn, this was a very intense experience for us.”
In addition, with the help of the volunteers at the barnraisings, we added several new features to the Community Weaver software, including a blog post content type and RSVP feature that integrates with the Signup module. These features directly benefit all the hundreds of TimeBanks chapters around the world that use the same Drupal distribution of Community Weaver.
“All members of the Larks team, from the principals to the project leader to the programmers, demonstrated that they cared deeply about the quality of the work undertaken,” Chris Gray said. “[They] provided many hours of consultation to this endeavor. We are truly grateful for those contributions. Under challenging circumstances, they provided highly professional services to TBUSA. We greatly appreciate the professionalism of the Larks and the ongoing willingness to go above and beyond.”
Having a good workflow is important. A workflow that is repeatable and consistent makes your life easier.
I create a branch for every Drupal core issue that I work on and use the issue’s node id as a branch name. For example:
git checkout -b 2284103
This system has many advantages, especially if you work on multiple patches. It’s also quite easy to implement. If you are reading an issue on Drupal.org, you already have the branch name. From there, it’s as simple as copying and pasting from the url. If you have git shell completion installed, you can change your command prompt so that you know which issue you are working on by glancing at the terminal prompt.
Demand for Drupal talent is high… Really high. A good Drupaler can find work on some of the most notable sites in the world next to other great minds and in good working conditions. Drupal is taking the world by storm, converting government agencies, Fortune 500s and many more on a daily basis. But this popularity has come at a price. The existing talent pool is just too limited to support Drupal’s popularity without serious investment in developing a greater pool of talent, and that something the existing community has got to own and make happen.
I’ve spent a disproportionate amount of my time over the last year thinking and talking about Personalization in Drupal (just ask my wife), and I’ve had the privilege of working with a brilliant group of people to help design and build a solution for it. Since we launched Lift in February, I’ve also given a large number of demos and discussed Lift in great detail with organizations large and small, learning ever more about what the needs are in the market, and stealing..err..borrowing ideas from them as I go along.
This post marks the first of a multi-part blog series where I hope to distill everything I know about Acquia Lift as a product, as well as personalization, testing and targeting more broadly as we implement these tools.
Gábor and I sat down for a chat at United Nations headquarters at NYCCamp in April 2014. We talked about the very productive contribution sprints at the NYC Camp; effecting positive change in the world with technology and how Drupal 8 will enable anyone to communicate using tools in their own language; and the incredible energy and quantity of contributors at the Drupal DevDays in Szeged Hungary.
DrupalEasy was really jazzed to host the career how-to session with community leaders, living Drupal success stories, and a panel of talent-hungry recruiters from Drupal organizations around the world At DrupalCon Austin. Drupal Career Trailhead; Embark on a Path to Success provided so much great information on mapping out your Drupal Career, and so many people asked about follow up, that we realized it warranted some further dissemination.-->
One of my long-standing gripes with Views is the inability to alter the behaviour of existing Views handlers (e.g. fields, filters, etc.) without having to subclass the desired handlers to add new functionality. While the subclassing approach is fine when the functionality targets a new field type, it is not ideal if the change required should affect existing fields, across different types of handlers.
I was recently commissioned to create a module that displays tooltips on field headers, regardless of field type.
- What is Kalabox?
- How is it different from MAMP, Aquia Dev Desktop, etc.?
- What comes with Kalabox?
- How does it work?
- What if a shop already has a stardard set of tools? How difficult is it to start using Kalabox?
- Some VMs get slow when you run more than one at a time, how does Kalabox scale/perform?
- How does it integrate with Pantheon?
- Can you pull cone from dev and database from live?
- Are you planning to integrate with other platforms?
- Are you planning/willing to work directly with other providers like #AberdeenCloud to build their integration plugin?
- What’s different in the 2.0 verson?
- You’re running a kickstarter. Tell me about that.
We may have been quiet for the past month as we prepared for -- and then recovered from -- DrupalCon Austin, but core development has been sizzling! (And not just because of the Texas climate.)
DrupalCon Austin sprints
Photo credit: pdjohnson
In addition to all the great sessions (videos below), summits, BOFs, and trainings, Austin included six full days of sprints on everything from Drupal 8 release blockers, frontend, and APIs, to D8 contrib initiatives like #d8rules, the Examples D8 port, and D8 Media, to Drupal.org itself. Nearly 500 sprinters and mentors got involved on the main Friday sprint day, and over 100 sprinters participated in the extended sprints before and after the Con.
If you were at the sprints, you might have noticed a few goofy sprinters decked in rabbit ears. :) These indefatigable contributors were working on some of the very last Drupal 8 beta blockers. During Austin, we managed to resolve six of these issues, but more importantly, we identified the path forward in all the beta blockers we didn't fix as well.Done > Perfect
The past month also showed a shift in the community's outlook: It's time to get Drupal 8 done. We need to stop making large, non-essential changes, because every time we make more work for ourselves, we delay the release of 8.0.0 for hundreds of thousands of people. When we have a choice between doing something quickly and imperfectly, or slowly and perfectly, it's time to pick the quick, imperfect fix. A couple examples:
- Last month, we discovered that Drupal 8's new support for PHP INTL dates was badly broken. Instead of spending dozens of hours trying to resolve this issue before releasing a beta, we removed the feature. It did not exist in D7, and it can be added back for 8.1.0, or provided by a contributed module.
- In Drupal 8, comment fields can now be attached to any entity type, instead of just nodes; however, they don't work on entity types with non-numeric ID keys (contact forms are the only example in Drupal 8 core). Instead of holding up the release on making every fieldable entity type commentable, we settled for almost every entity type being commentable -- which is still a big improvement from D7.
Drupal 8.0.0 will not be perfect, but it will be powerful. And we have the chance to make it even better in 8.1.0 six months later. Think about which issues in the core queue might make sense as minor version targets, and help us work on Drupal 8 efficiently.
Lots of comprehensive API documentation has been added to the API.Drupal.org handbook page over the past month, thanks especially to API documentation maintainer jhodgdon and review efforts from core component maintainers. This overview page (and the detailed documentation linked from it) should provide a much better starting point for learning about Drupal 8. (See below for how you can help document the remaining API topics.) API.drupal.org has also recently added an automatic list of services provided in Drupal 8 core. For updates on Drupal documentation work, see This Month in Drupal Documentation.Where's Drupal 8 at in terms of release?
Each week, we check with core maintainers and contributors for the "extra critical" criticals that are blocking other work. These issues are often tough problems with a long history. If you're familiar with the problem space of one of these issues and have the time to dig in, help drive it forward by reviewing, improving, and testing its patch, and by making sure the issue's summary is up to date and any API changes are documented with a draft change record.
#2238217: [Change record] Introduce a RouteMatch class
The one reasonably approachable task in this week's top beta blockers is to complete the needed change record documentation for the recently added RouteMatch class. Help by writing a draft change record for the issue, and then update existing change records to also include an issue reference to #2238217 and to use the new API. (See comment #143 on the issue for a start.) Post links to the revision diffs for your change record updates so they can be reviewed by other contributors.
#2256521: New plan, Phase 2: Implement menu links as plugins, including static admin links and views, and custom links with menu_link_content entity, all managed via menu_ui module
This massive (nearly 600 K) improvement to the Drupal 8 menu link API resolves or unblocks numerous critical issues while also supporting performance, DX, and multilingual improvements. The patch is developed from a sandbox:
git clone --branch 2256521 http://git.drupal.org/sandbox/dereine/2031809.git
Help this issue by:
- Providing code additional reviews, since the patch is way too big for any one contributor to review in one sitting.
- Proactively identifying things in the patch (or from others' reviews) that could be resolved in followup issues, filing those followup issues, and adding the appropriate code @todo and links to the followup issues.
- Looking through the patch and issue to identify the complete, specific API changes it introduces, and adding these changes to the issue summary.
- Checking for existing change records that will need to be updated for these API changes, listing the updates that will be needed in the issue summary, and editing the change records to add a reference to #2256521.
- Drafting a new change record for the change.
Check with Wim Leers, pwolanin, or dawehner so that you can align your efforts with their work on this patch.
#2144263: Decouple entity field storage from configurable fields
This issue is key to completing the Drupal 8 Entity Field API and is the culmination of work done across DrupalCons Portland, Prague, and Austin. The patch needs test failures resolved, architectural review, and (as above) identification of any needed change record updates. Coordinate with Berdir, plach, or yched to help further with this issue.
#1825952: Turn on twig autoescape by default.
Enabling Twig's built-in autoescaping of HTML-unsafe code will security-harden Drupal 8, and should eventually allow us to reduce complexity and improve perfomance in the theme layer. The patch introduces a SafeMarkup class that can be used to identify sanitized strings for use in templates, and all other strings are automatically escaped. Help with this patch by providing feedback to points raised in recent reviews (see comment #185), helping write thorough API documentation for the SafeMarkup class, or starting a draft change record. Contact xjm to help out with this issue.
More ways to help
Photo credit: Michael Schmid
We're closing in on Beta 1!
Only 11 beta-blocking issues remain, and we will probably be in the single digits by the end of the week. This means now is a good time to start looking at all the beta targets and especially issues with a beta deadline. (See Beta blocker deadline target what? for an explanation of these issue categories.) Keep an eye out for other issues that should have a beta deadline as well.
- #2148255: [meta] Make better D8 api.d.o landing page, linked to high-level overview topics, and put it in Core api.php files
#1971384: [META] Convert page callbacks to controllers
We converted all of core to use our new routing system last fall, but eighteen different form and page controllers still need to be cleaned up to conform to our best practices. Currently, almost all of these patches need to be rerolled for PSR-4 and for other core changes. Note, however, that many of these patches have gone through multiple rerolls (mostly by novice contributors) over the course of more than a year, without sufficient review before the patches become stale. So, what these issues need most is 1-2 experienced contributors with an understanding of Drupal 8 architectural concepts who can manage the meta issue and its children, and provide thorough code review when new patches are submitted. If you can help out, start by reviewing those child issues still at "Needs review".
#2016679: [Meta] Expand Entity Type interfaces to provide methods
Drupal 8 core provides numerous entity types, but the full public API for each type is not easily documented or discoverable. To improve the developer experience, each entity type interface is being expanded with relevant methods for the specific entity. Most issues have a submitted patch, and what is most needed is architectural review of the proposed interface methods, including recommending which properties should instead be protected. If you have experience with one of the subsystems that still has an open child issue, or if you have a sound grasp on OO design generally, we could use your help to thoroughly review these patches so that the completed APIs are available for contributed module developers in a beta release.
As always, if you're new to contributing to core, check out Core contribution mentoring hours. Twice per week, you can log into IRC and helpful Drupal core mentors will get you set up with answers to any of your questions, plus provide some useful issues to work on.
You can also help by sponsoring Drupal core development.Notable Commits
There have been a remarkable 360 commits since our last post in May! Far too much great work has been done across D8 core to summarize it all, but here are a handful of the more "epic" beta-blocking issues that were recently resolved:
- Issue #2224887 by alexpott, Berdir, Gábor Hojtsy, Jalandhar: Language configuration overrides should have their own storage.
- Issue #2247991 by xjm, typhonius, donquixote: [May 27] Move all module code to PSR-4.
- Issue #2183231 by tstoeckler, plach, jessebeach, fago, Berdir, xjm, mauzeh: Make ContentEntityDatabaseStorage generate static database schemas for content entities.
- Issue #2143291 by plach, alexpott, xjm, effulgentsia, pwolanin, swentel | yched: Clarify handling of field translatability.
- Issue #2167167 by Berdir: Remove field_info_*().
- Issue #2238217 by effulgentsia, neclimdul, martin107, tim.plunkett, cweagans, kim.pepper, xjm: Introduce a RouteMatch class.
You can also always check the Change records for Drupal core for the full list of Drupal 8 API changes from Drupal 7.Drupal 8 Around the Interwebs
If you didn't make DrupalCon Austin -- or even if you did -- be sure to check out all the Drupal 8 session recordings. Some highlights:
- Building a full site in Drupal 8 Alpha by Schnitzel
- Drupal 8 In a Nutshell by kim.pepper and boztek
- 30 Drupal 8 API Functions You Should Already Know by fmitchell
- Drupal 8 Theme System: hook_theme() to Twig template by Cottser and joelpittet
- Dependency Injection by fabpot
- Drupal 8 Entity API by fago
- Understanding the Drupal 8 Plugin System by helior
- Status of Migrate in 8 by mikeryan, Ryan Weal, ultimike, chx, bdone
- The road to 8.1 by Crell
- Q&A with Dries
Seen enough videos now? Looking for something to read instead? webchick's ongoing blog series, the Ultimate Guide to Drupal 8, is a great resource for everything you might want to know about D8 improvements.Drupal 8 in "Real Life"
It's a sprint-filled summer!
- July 1: Drupal Gold Coast July Sprint in Brisbane Australia is a 3-hour sprint focused on new Drupal 8 contributors.
- July 5: Sprint Day Zaragoza in Madrid Spain is an all-day Drupal 8 sprint. @drupal_zgz
- July 5: Summer Drupal Code Sprint Novosibirsk 2014 #1 in Novosibirsk Russia is a 3-hour sprint focused on porting Drupal 7 modules to Drupal 8.
- July 6: Oak Park Sprint in Illinois, USA is a 4-hour Drupal 8 sprint.
- July 12-13: Drupal 8 at the Jersey Shore in New Jersey, USA, has room for 40 Drupal 8 sprinters. @drupalcampnj
- July 17-20: DrupalCorn in Iowa, USA will have a Drupal 8 contributed module sprint. @drupalcorn
- Aug 7-10: Twin Cities DrupalCamp in Minnesota, USA will have a sprint room for all four days and has a sprint sign-up. @TCDrupal
- Aug 7-10: Drupalaton
in Lake Balaton, Hungary has Drupal 8 sessions and sprints. @drupalaton
Do you follow Drupal Planet with devotion, or keep a close eye on the Drupal event calendar, or git pull origin 8.x every morning without fail before your coffee? We're looking for more contributors to help compile these posts. You could either take a few hours once every six weeks or so to put together a whole post, or help with one section more regularly. Contact xjm if you'd like to help communicate all the interesting happenings in Drupal 8!
Roughly a year ago Alex Sexton's Smashing Magazine article highlighted a new role emerging amidst the increasing complexity of front-end work in a responsive world: Front End Ops. Since that article was published, there's been an entire conference devoted to the subject, and folks like Chris Rupl have evangelized similar roles and supporting tools to the Drupal community.
- Drupal 6 Lead, Drupal 8 Multilingual Initiative Lead, Acquia OCTO ("Office of the CTO ")
- Drupal.org profile: gábor-hojtsy
- Website: http://hojtsy.hu "A personal Drupal resource site"
- Twitter: gaborhojtsy
- 1st Drupal memory: 2003. Migrated Hungarian developer community website from PHPNuke to Drupal; began filing and solving language issues against Drupal.
I recently ran across a problem of needing multiple Drupal Commerce add to cart buttons on a sing
Bootstrap is our go to base theme, but what happens when the grid the client asks for has different width, or more break points?
Using Bootstrap-Sass creating a custom grid is possible in a manner that can be copied and adjusted from one project to another. As example for this post, and for your future reference you may follow the live demo and repository that changes Bootstrap to work with five breakpoints (tip: use Resizer for easy viewport resize).
Note that example is using Jekyll for simplicity, however the same technique can be used on Drupal.
Photo Credit: Tyler Ward
In Toadcast 23 we talk with Tom Martin and Dan about Drupalcon 2014, Texas Food, Heat, Sessions from Four Kitchens, Adam Edgerton, Roaches, Austin City Life, Pet Talk, Presentations by Dan, Drupalcon 2015, The Definition of Decimate, Future of Drupal, & Expansion of Drupal Crowd.
At Drupalcon, we had the opportunity to share with the community a case study featuring The Weather Channel (TWC), which has one of the most highly visited web sites in the world (www.weather.com). And, it’s certainly among the largest Drupal sites under development.
The approach was to break the engagement into two phases, the first to address editorial concerns and the second to replace legacy systems and take over the front end serving.
Slated to be part of Drupal 8 core, Entity Reference is a field type module you should be familiar with now. For experienced Drupal users, the reference field is probably not a new concept. Regardless of your Drupal skill level, I hope to give a practical example of how the Entity Reference module can be utilized and introduce a few other modules that greatly improve its usability.
The Entity Reference module provides a new field type that allows entities (nodes, taxonomy terms, etc.) to create a reference (or connection) to each other. The need for references usually comes from needing to create content with complex data points (or fields). My example is for Aten Records (our company's fake record label). Aten Records needs to catalog all of their artists, albums and tracks. Imagine trying to store every album and track for an artist in a single content type (artist for example). It would be challenging because of the data we need to collect for each album and track. It becomes much easier to imagine three content types (artist, album & track), but we need a way to connect the three content types together. Entity References can help!
You can also follow along with the screencast if you like.Create content types
- Name (title field)
- Biography (body field)
- Photo (image field)
- Albums (Entity Reference referencing the album content type)
- Title (title field)
- Album Artwork (image field)
- Year (text field)
- Tracks (Entity Reference referencing the track content type)
- Title (title field)
- MP3 (file)
- Length (text)
- Writer (text)
- Make sure it is pointing to the correct entity type (node in our example)
- Make sure it can reference the correct content types
- Make sure it can reference a unlimited number of options
We can now create artists, albums and tracks but the workflow isn't ideal.Default workflow (cumbersome)
- Create all tracks for an album
- Create the album (reference the tracks created above)
- Create the artist (reference the album created above)
Repeat for each new album (or artist / album)A more ideal workflow
- Create an artist, create albums and tracks directly from the artist edit screen!
References dialog launches a new content create form in a modal window on the page where you are currently editing content. I've chosen this for album, so new albums can quickly be created without leaving the artist edit screen.
- Enable references dialog
- Modify albums field settings on the artist content type
Inline entity form embeds the form of the referencing entity directly on the page. I've chosen this for tracks so we don't have modals in modals, because we already have an album modal window open at this point.
- Enable inline entity form
- Modify tracks field settings on the album content type
I will only briefly touch on this topic since it could be a whole other blog post.
- Modify the view mode display for artist and album
- For each entity referenced field, choose "show rendered node"
The sky is really the limit with how you use references in a project. Imagine a social site with profiles referencing work experience, a soccer club website with teams referencing players, or a hiking website with trails referencing other nearby trails. What other tips do you have for folks just getting started with Entity References? What other modules improve usability of Entity References?