Project Mentors: varunity, penyaskito
Interested Students:
Project Difficulty: CHALLENGING
Project Skills/Prerequisite: php, mysql, cms, content sync, local sync, local dev, OOP, Yaml, SQL
Problems to solve
In Drupal 8, the Configuration system empowers teams for using staging workflows based on their version control of system of choice.
However, those teams often need to include content in the mix, which can be redacted and evolved in a staging site. We need some way of pushing those into production.
This could help in scenarios where there is no always internet access, so this could allow to have a local website where editors could generate content which later can be pushed to production.
One can even imagine being able to share a working drupal site on a USB stick.
Goal
Providing a module that allows to move content around different instances of the same site, allowing to move content from a staging site to a production site.
This project will allow for distributed teams of persons to author content on a website whether or not they are online so that they can operate effectively in scenarios where there is not always internet access (or a development site).
This project will allow for distributed teams of persons to author content on a development website, and push that content later into staging.
Technical background
The idea is to create a Drupal 8 module which allows persons to create many copies of a website for offline distributed content management. This would work by having one central website that all data is ultimately fed to. The other 'satellite' websites (which can operate offline) have their own databases but keep track all new edits and content that it created. Once one of these sites goes online, an admin will have the option of synchronizing their data with the central 'main' site. This solution can leverage the migrate module to achieve this: https://drupal.org/project/migrate
In Drupal 8 the IMP initiative adds a migration API that would help people migrating from D6 and D7 to D8, and to help developers to build migrations from whatever else to Drupal.
But nothing stops you to migrate from D8 to D8, so this could provide a nice framework for implementing a content staging tool based on migrate API.
Preparing to apply
As with all of the drupal tasks here, start by creating a user account on drupal.org if you don't already have one. You can also learn about how to start contributing to drupal using Drupal ladder: http://drupalladder.org/ . Once you are comfortable enough using git, reviewing code and testing patches, start learning about how and what information is stored at the database level with Drupal. You will also want to look at the various backends that Drupal supports such as MySQL and SQLite. The general rationale for this project has been discussed in a couple places on d.o. eg. https://drupal.org/node/2012148 .
It is recommended to base your work on the migrate module (https://drupal.org/project/migrate) which already provides a flexible framework for migrating content into Drupal from other sources. Here is a video that demonstrates how to use the migrate module in general: http://vimeo.com/54448150 . Next would be to decide whether to work in drupal 7 or 8, the migrate module is being brought into the core of Drupal 8.
The best direction would be to break this project up into smaller milestones. First, figure out how to migrate content such as nodes, users, files, terms, and comments between separate installations of the same drupal site. The next step will be to allow an administrator to do this through the web interface and start figuring out how to manage merge conflicts, eg. if the same node was edited by two separate people so we have to decide which version to use or how to handle this case. Providing good documentation and instructions will be an important part of this project.
Further resources
The IMP initiative: https://groups.drupal.org/imp
Content Staging Initiative contains ideas: https://groups.drupal.org/large-scale-drupal-lsd-projects-and-plans/cont...
IRC channel: #drupal-migrate
Work on Migrate API takes place here: https://drupal.org/sandbox/chx/2105305
Migrate docs: https://drupal.org/node/2129651
State of the art in Drupal 7:
https://drupal.org/project/deploy
https://drupal.org/project/defaultcontent