Spark: Authoring Experience++ in Drupal 8 core

Last updated on
6 October 2020

Spark is an initiative announced by Dries Buytaert at DrupalCon Denver, and focuses on authoring experience improvements for Drupal. We spent the months before DrupalCon Munich prototyping in the Drupal 7 version of the Spark distribution, and now we're focusing on Drupal 8.

We are trying to change the game and ship Drupal 8 core with a default authoring experience at par or better than both open source and proprietary competitors. Join us! Here's what we're working on, and where you can help.

How to get involved?

- We hang out in IRC on #drupal-contribute and #drupal-usability.
- We use the "Spark" issue tag to note the Drupal core issues we're actively working on.
- Team leads are identified below; ping them if you'd like to help with code and/or reviews. If you don't know who to ping, ping webchick. :)
- We work in two-week "scrums." If you want to know what we're working on at any given time, subscribe to this issue for updates.

Jump to: What are we working on now, and how can you help?

Meet the team

King of WYSIWYG Mobile-licious Layout-o-rama Creative Juices Chief Prototyper Tester of ALL THE THINGS
Wim Leers head shot Jesse Beach head shot Gábor Hojtsy head shot Kevin O'Leary head shot Preston So head shot Dharmesh Mistry head shot
Wim Leers jessebeach Gábor Hojtsy Kevin "tkoleary" O'Leary prestonso Dharmesh "dcmistry" Mistry

Past focus: Before DrupalCon Munich (Aug. 2012)

A timeline highlighting period from May 2012 to August 2012.

From the time the Spark initiative was announced in May 2012 until DrupalCon Munich in August 2012, the Spark team focused on competitive analysis, design, and development of the following content authoring features on Drupal 7, to act as a prototype for D8 core improvements:

"True" WYSIWYG
We worked closely with the Aloha Editor team to create a custom build for Drupal in the Aloha module.
In-place Editing
The Edit module allows content authors to edit their site's content directly from the front end, without the need to go to the administrative back-end and lose context.
Responsive Layouts
The Layout module provides a GUI for building responsive layouts at various breakpoint sizes (mobile, tablet, desktop, custom), as well as a mobile preview bar to see how a site will look at various screen resolutions.
Mobile-friendly Toolbar
The Mobile friendly navigation toolbar ("navbar") module provides a navigation menu that works well on desktops and mobile devices alike.
New admin theme
Taking the existing core Seven theme as a base, the Ember theme provides a number of nice cosmetic improvements.

These modules are all available to try out in the Spark distribution (both D7 and D8).

Drupal 7 development is largely on hold atm while we focus on making Drupal 8 core the best it can be!

Current focus: Before Feature Freeze (Dec. 1, 2012)

A timeline highlighting period from August 2012 to December 2012.

"True" WYSIWYG in Core

This refers to the ability to edit your site's content as it appears on the page, with your site's styling and full site context.

Aloha Editor in Core

Spark integrates the Aloha Editor into Drupal via the Aloha module, and we are planning to put this capability into D8 core.

#1008522: Ship D8 with an out-of-the-box WYSIWYG editor
#1782838: WYSIWYG in core: round one — filter types
#1809702: WYSIWYG: Add Aloha Editor to core

Inline Editing

Spark's Edit module adds inline editing capability to Drupal, a feature that's growing more and more common in competing products (Symfony CMF, Plone, CQ5, etc.). Once Aloha Editor is in as a base, we hope to introduce this functionality to D8 core.

* #1706688: [meta] In-place editing, inline macros, editables, and Wysiwyg in core
* #1149866: Add Backbone.js and Underscore.js to core: Backbone.js in core would allow us to reduce the custom JS in Edit module quite significantly.
* #1808076: Convert edit module JavaScript to use Create.js, VIE, and Backbone: And to that end, we've begun porting the Edit module to Backbone.

Additionally, here are some issues we are not actively working on, but are hoping to see get committed before we attempt this feature in D8, since it would streamline our code quite significantly:

* #1696640: Implement API to unify entity properties and fields: Allows for treating entity fields and properties the same, both in terms of rendering and generating of forms.
* #1696660: Add an entity access API for single entity access: Need to check access on entities/fields to know if a user should be able to edit them.
* #1785256: Widgets as Plugins: Necessary for clean inline editing; otherwise we essentially have to duplicate other forms.
* #1785748: Field formatters as plugins: Necessary for clean inline editing; otherwise we essentially have to duplicate formatters.
* #1706612: remove 'submitted' variable in templates for ease of theme development: Currently this information is in the theme layer, and it's tricky because it's two properties displayed together.
* #1802278: Add a Date component to core: This would allow us to leverage real dates rather than janky fake dates, like 'Authored by'.
* #1801304: Add Entity reference field: This allows for real references and not janky fake references, like 'Author'.

Mobile authoring

The mobile revolution is here, and Drupal needs to be ready. Below is just a subset of the most critical issues for content authors we're planning to focus on; there are many more under the "mobile" issue tag.

* #1137920: Fix toolbar on small screen sizes and redesign toolbar for desktop: The big one. We want to provide a unified navigation experience across mobile and desktops, so that Drupal 8 doesn't look like this http://drupal.org/files/drupal-drupal-7-toolbar-on-iphone.png on a mobile device.
* #1276908: Administrative tables are too wide for smaller screens: Makes it possible to administer content (more) easily from a mobile device.
* #1608878: Add CTools dropbutton to core: Consolidate lots of options under a single dropdown for more consolidation of space. Extra bonus: Helps the Views in Core initiative!
* #1815602: Introduce a polyfill for matchMedia: Switch between layouts of the toolbar based on media queries.
* #1781422: Add search/jump/command functionality to toolbar

Things we are not able to actively work on, but nevertheless really want to see happen:

#1510532: [META] Implement the new create content page design

Layouts

Tag-teaming with the Blocks and Layouts initiative, we are hoping to lay the foundational work required to support layouts in core, using the existing blocks system (later building on the "smart blocks" capability being worked on by EclipseGc).

Plumbing: Dynamic layout support

These issues are being tracked under the Dynamic layouts tag, and include:

#1787634: [META] Decouple layouts from themes
#1787846: Themes should declare their layouts
#1787942: Allow assigning layouts to pages
#1787956: Make blocks relate to layout instances instead of themes
#1734642: Move breakpoint module into core

Responsive layout builder in core

Spark's Layout module provides a GUI for a responsive layout designer. We are hoping to move this capability into Drupal core once additional clean-up work is done.

* #1149866: Add Backbone.js and Underscore.js to core: Backbone.js in core (or similar) would allow us to reduce the custom JS in Layout module quite significantly.

In the meantime, here are some enabling issues we are hoping get into D8 core while we're focused on other features.

#1775774: Allow themes to identify their breakpoints to Drupal
#1535868: Convert all blocks into plugins

Before Code Freeze (Apr. 1, 2013)

A timeline highlighting period from December 2012 to April 2013.

  • Numerous clean-ups to Aloha Editor, working upstream with Gentics
  • Expanding basic Layout UI to incorporate contextual blocks (assuming this gets into core).
  • Propose minor cosmetic improvements to the Seven theme that were prototyped in Ember.
  • More...

Before Release (Sep. 2013)

A timeline highlighting period from April 2013 to September 2013.

TBD.

Help improve this page

Page status: No known problems

You can: