Core Conversations

WYSIWYG -- Editor module

Room: 
Centennial Suite
Problem: 

Drupal is currently years behind in providing a content editing interface that is intuitive for end users. The expectation is so great to have a WYSIWYG editor in content management systems that when presented with the Drupal node editing form, users may struggle to find the "toolbar" that normally comes with text editing interfaces. Most users do not know HTML, we shouldn't be shoving it onto them.

Contributed-based solutions to WYSIWYG are a start but currently all of them lack from deep integration with Drupal. At minimum, we should be targeting at a bundled WYSIWYG in core with the ability to insert an image with a caption. Even today, the solution for doing this eludes every contributed solution.

Proposed solution: 

This session is going to be a discussion more than a demo of proposed code. We'll take a look at what solutions other systems (namely WordPress) have included to deal with rich text editing, and we'll identify the central problems with building similar functionality into Drupal.

Ultimately, the solution currently being pursued will be an overhaul of the "Filter" module (which currently is only designed for filtering on output), and replacing it with a new module that controls not only filtering on output but also on input, making it possible to provided a true WYSIWYG (or at least a lot closer than anything we have today).

13:30 - 14:00 Bumping our Web Hosting Requirements

Room: 
Centennial Suite
Problem: 

Drupal currently caters to $5 shared hosting and exotic custom hosting like Examiner.com, Economist.com, etc. This massive range makes software design difficult. It also prevents us from focusing on a target audience.

Proposed solution: 

Drupal should focus on the audience it serves best. IMO, thats mid range and high end web sites. With that focus, we can design cleaner software and avoid some prolonged fights in the issue queue. Perhaps we can even stop the defections from core development (e.g. Development Seed).

Here are some possible increases in our software requirements:

- Shell access to your server is required.
- Drush is required
- APC or other opcode cache is assumed present

Unified Entity API as Part of the Configuration Management Initiative & An Entity Property API for Drupal 8

Room: 
Centennial Suite
Problem: 

Unified Entity API as Part of the Configuration Management Initiative
The divergent APIs and representations for different core entities means that there can be no standard way to export, import, or configure them.

In addition, this makes Drupal core harder to develop and maintain, and make the module builder DX worse too.

An Entity Property API for Drupal 8
Having the entity API unifying CRUD for Drupal 8 is already a great step forward. It seems obvious that it should handle full CRUD, but for it to be really useful we need to care more about the entity properties, fields and their differences.

While fields feature APIs for validation, access information, widgets, display formatters or translatability, we have nothing like that for regular entity properties. However, for modules to be able to work with entities in general, we need some of those features for regular entity properties too. Consider the use-case "RESTful web services", or any module that wants to generically use or update data from entities, like the Search API or Rules already do.

Proposed solution: 

Unified Entity API as Part of the Configuration Management Initiative
As a sub-effort of the Configuration management initiative, we need to standardize the core Entity API.

catch and I discussed this possibility in Chicago. This conversation will be an update on progress and plans going forward.

An Entity Property API for Drupal 8
The entity API module achieves already something similar in Drupal 7. It comes with an Entity property information system, which kind of wraps Drupal's divergent data structures behind unified data wrappers.

However for Drupal 8 we want to avoid the need for unnecessary wrappers. So we need to come up with an API that fulfills developer's needs without anything extra. So should be everything a field then?

I'd like to present and debate a slightly different approach: The entity property API, which cares about an unified and easy way for accessing and updating property values, validation, access information as well as other property metadata.
With such an entity property API in place, fields could very much build upon this generally useful API and complement it wherever necessary. Related, we might want to look into streamlining field storage and entity storage, and provide a storage system that can handle translatable properties out of the box.

For example, this is how the API could work:
<?php
// Get a node author.
$account = $node->author->get('author');
// Still, you can access $node->uid directly.

// Get the english version of the node title.
$node->get('title', array('lang' => 'en'));

// Throws exception if mail address is formatted invalid.
$account->set('mail', $value);

// Chain things as you wish.
// -> Get the node author's fourth hobby stored in his main profile.
print $node->get('author')->get('profile_main')->get('hobbies', array('delta' => 3));
?>

Hierarchical Permissions for Drupal 8

Room: 
Centennial Suite
Problem: 
  • The current permission system is hard to understand for inexperienced Drupalers.
  • In many cases we get the clear picture of what a permission means only if we try out things, or read the code itself.
  • Permissions often overlap with others (e.g., administer content), but administrators do not notice this.
  • Managing permissions is difficult, and could become hard when we work on a larger website. The user interface isn't transparent enough, and sometimes it needs serious concentration to work with.
Proposed solution: 

During Google Summer of Code we are working on this topic. Let’s imagine that modules describe trees instead of simple lists when they determine their permissions. Leaves of these trees can be very specific about what rights and functionalities the users get if we grant that certain permission for them. Without a tree, this would mean an unmanagable number of permissions but with the hierarchy, users can be as specific or generic as necessary when granting permissions. There is no more situation like enable the ‘administer something’ permission where we have no idea what power we give our users, unless we have experience of that certain topic and module. Well-structured permission trees with a brand new user interface could be a huge step forward to a better UX.

In this presentation we would explain this whole philosophy, and show the new fancy UI (or at least some plans for one) for the permissions management page. Then we could discuss the possibilities to integrate this work (with more or less modifications) into Drupal 8 core.

17:30 - 18:00 Project Application Process Revisited

Room: 
Centennial Suite
Problem: 

In order to create full-fledged modules, new contributors must go through a strenuous peer review process that involves checking for security problems, misuse of Drupal's APIs, coding standards, and duplication.

Last year at DrupalCon Copenhagen, a session was given that explained why we had a project approval process, and talked about the damage this process does to the community, to attempt to come up with a plan to help ease some of the suffering.

A year later, we now have Git, and we have sandboxes available to all authenticated users. Have things improved for the better, or gotten worse? How has the process changed?

Proposed solution: 

Data. We mine the Drupal.org database and report our findings. What's the average wait time of people in the approval queue? Is the review team actually finding and stopping security holes before they get introduced? What's our attrition rate like, after someone goes through the application process? Is webchick just overreacting?

From here, we discuss next steps. We'll propose some of our own, but are really interested in a discussion from the folks in the room about what can be done to balance the legitimate needs of the security team and our community, without bludgeoning new contributors in the face.

13:00 - 13:30 Responsive Content: Re-architecting the Basic Page, Render API, etc.

Room: 
Centennial Suite
Problem: 

A core conversation in which we discuss the implications for Mobile, WYSIWYG, Render API, Design Patterns, Semantics (HTML5/Aria/Microformats/RDFa), the Basic Page, Responsive Design, and Unstructured Data.
 

Until recently mobile development meant site builders had to build parallel solutions, either a mobile app or a mobile-only website.

But the past year has seen a fundamental shift in how we think about web sites. Responsive Design means that the front-end of a website can adapt to the varying screen sizes of devices from small cell phones to large 30" LCDs. Using media queries, JavaScript and smart CSS choices means front-end developers can continue to use a single HTML source for all screen sizes.

But this is not enough.

Leading mobile development leaders like Stephanie and Bryan Rieger, Jason Grigsby and Steve Souders know there are competing requirements for our new mobile world:
- “One Web” means serving all devices using a single URL.
- Performance is even more critical than normal, so serving images, CSS and other assets that aren't used by the client is a huge waste.
- There are no such thing as a “mobile friendly CMS”. 

Drupal handles structured data very well. But what about the “Basic Page” content type? Its usually a dumping ground for unstructured data, content that doesn't conform to a standard model that easily fits the concept of a “field”. Brochure-ware sites are actually really good examples of unstructured data.

To truly reach the One Web ideal, we need all our content to be responsive. Literally let the site builder change the way the content displays depending on the context. Which means we need Drupal to understand the semantic structure of our content, even when its all in one textarea.

We should be able to drop an image into a textarea and still know its an image and give it all the features it would have if it was a field.

How do we make Drupal understand the semantics of our content so that our content can be responsive?
 

Proposed solution: 

 
How do we make Drupal content responsive?

This question is tricky, but its essential that we agree on the direction Drupal needs to go.

Possible solutions:
- Let the theme system convert semantic content into rendered markup
- HTML5, mircrodata, microformats, RDFa, whatever, describing the semantics internally?
- JSON as loose semantic structure?
- Please god, not XSLT
- element info API version 2?
- RDFa, JSON and Aloha editor like: http://www.slideshare.net/bergie/vie-using-rdfa-to-make-content-editable
- Drag and drop design patterns into a WYSIWYG that stores both markup and semantic understanding of content?

13:30 - 14:00 Making Drupal Documentation Modular, Reusable and Open Source

Room: 
Centennial Suite
Problem: 

Drupal is modular, reusable and open source, but that's not the case for our documentation. The documentation in code falls under the GPL license and we have a few angels that contribute to our community documentation but on the documentation that we make for our users and customers we are failing to collaborate.

Proposed solution: 

In this presentation we'll explain how we could turn Drupal documentation into modular, reusable units on which we can collaborate. We'll explain what single sourcing is and how we could from a single set of topics make documentation for different purposes and topics. From a shared topic repository we would be able to create manuals, online help, built in help, training materials, training curricula and FAQ's for RFP's.

We'll give an introduction to DITA (Darwin Information Type Architecture), an Oasis XML standard started at IBM and how it's used in industries with modular products to publish documentation in a range of formats in minutes in stead of days while saving up to 60% of translation costs.

We'll than explore how we could implement a documentation tool chain for Drupal that would take advantage of a DITA like architecture. We'll talk about:

  • The conditional text GSoC
  • The core initiative for an improved built-in help system
  • the DITA Drupal module and explain how we want to make Drupal a platform for community authored DITA documentation that does not require knowledge about DITA from it's contributors.

Search in Drupal 8 & Search Toolkit for Drupal 8

Room: 
Centennial Suite
Problem: 

Search in Drupal 8
The problem is well-known: core search has lagged behind for quite some time, being now mostly only used by smaller sites, and being largely worked around or completely replaced by modules providing advanced search solutions. It's essentially just part of "Drupal the product", not "Drupal the framework".

Search toolkit for Drupal 8
The current core Search module presents an API that tries to be generic, but ends up being insufficient for many advanced uses or for non-SQL back-ends.

the parts of the current Search module that are most useful are UI elements like the search page, form, and theme functions so that themes can look good for any module re-using those.

Proposed solution: 

Search in Drupal 8
It has been largely agreed that core search in D8 should therefore be split into a generic framework providing backend- and data-independent tools for providing indexing and search capabilities, and a default implementation of that framework that small users can instantly use to add search capabilities to their sites.
Advanced search solutions like other backends (Solr, Xapian, Sphinx, …), facetted searches, searching of external content, etc., should easily be able to build on the core search framework to provide a unified API to all kinds of searches, and to avoid re-inventing the wheel over and over for all backends and purposes.

There are already several discussions and other resources detailing all aspects of that new search framework:

As a base solution I'd suggest the Search API module, which already supports most of the required features and could be adapted well enough to provide the others as well for D8 core.
I'd be willing to take a shot at that and would present a rough plan for it in this core conversation. Then, the discussion could work with a concrete proposal for which possible flaws, short-comings and open points could be debated.

Also it could be discussed how this will fit in with large other changes in D8, like i18n, configuration management, plugin system, entities, etc. It will especially be important if there will be something like the Entity API (or at least its property information system) in D8 core.

Search toolkit for Drupal 8
The current Search module suffers from a lack of maintainer-ship. We need to simplify the functionality provided by the core back-end so it becomes easier to maintain (and test) going forward.

In addition, new effort should focus on providing in Core a Search Toolkit that provides a framework and basic implementation for the UI, but moves away from any attempt to interface generically with the indexing process or other pieces that are back-end specific. A key portion of such a toolkit would be adapted from the Facet API module

In addition, we should remove the advanced search form from core, remove most of the complex query parsing from core, and provide implementations of a couple facets for core via the SQL back-end.

The net advantage is that new search UI elements could be used across back-ends, and theming would be more consistent regards of how the search results are generated.

(Node) Access Control

Problem: 

With entities, revisions and complex use-cases, the node access system needs a review. Can we:

- Expand access control beyond CRUD operations?
- Define access control for general entities?
- Streamline data storage?
- Optimize query performance?
- Standardize access to simplify node access checks?

Proposed solution: 

Many possible solutions:

- Expand or remove the access operation whitelist.
- Move to entity-based grant storage.
- Remove complex access from core.

Status of the Multilingual Initiative

Problem: 

Update: this is going to be held as part of http://london2011.drupal.org/coreconversation/updates-drupal-8-initiativ... and/or http://london2011.drupal.org/coreconversation/1500-1530-updates-drupal-8...

No problem, just a status report from the multilingual initiative. Follow http://groups.drupal.org/internationalization for status and participate there in the meantime. You all make this happen!

Proposed solution: 

Be awesome!

Disclaimer: session template borrowed from Greg Dunlap, thanks :)

Platinum Sponsors