This issue will be used for the high-level farmOS 2.x roadmap, with links to child issues as they are created. Please comment on sub-issues instead of this issue whenever possible.

Problem/Motivation

farmOS is currently built on Drupal 7, which was released in 2011 and will be end-of-life in November 2021 2022. This means it will no longer be supported by the Drupal community: https://www.drupal.org/psa-2019-02-25 Updated: https://www.drupal.org/psa-2020-06-24

In the meantime, Drupal 8 (released in 2015) and Drupal 9 (released in 2020) offer significant improvements that farmOS will benefit greatly from. Drupal 8 saw a major refactoring from Drupal 7, moving away from a lot of the old "Drupalisms" and procedural code to more modern object oriented PHP standards and frameworks like Symfony. Drupal 9 is essentially just Drupal 8 with deprecated code removed, and moving forward the Drupal community intends to keep upgrades easier in the future (https://dri.es/making-drupal-upgrades-easy-forever), to avoid the same difficulties of the D7-to-D8 upgrade paths.

So, the current plan is to skip Drupal 8 and build farmOS 2.x on Drupal 9.

It is important for farmOS to upgrade to Drupal 9 to ensure that it can continue to be developed/supported into the future.

Apart from that, we also have a long list of improvement ideas for farmOS. Many of these will be easier to implement with the tools that Drupal 9 provides. And it's better to build it once in the new way, rather than rebuild it again after the upgrade.

The upgrade will have many challenges, but the sooner we complete it, the better positioned we will be as a growing community. It is better to invest in feature development on farmOS 2.x than it is to build in farmOS 1.x and then need to rebuild/refactor for 2.x. Of course, we also have to balance this with the needs of current 1.x users.

This is also an opportunity to take the lessons that we learned in 1.x and reapproach some things in 2.x. The migration path from a 1.x database to 2.x will be fully-automated, so we can make changes to the data model in 2.x and write automated migrations from the 1.x data model.

Some of the high-level goals of the upgrade include:

  • Improved APIs (JSON:API / GraphQL / Auto-generated docs with OpenAPI)
  • Improved translation/localization capabilities
  • More granular data (entity revisions for assets, logs, areas, etc)
  • Map enhancements (standalone JS library, timeline slider, etc)
  • More accessible to frontend developers (Field Kit / Field Modules)
  • Cleaner codebase (D9 OO)
  • Improved performance (lazy loading code, more caching options, etc)
  • PostgreSQL database support
  • Upstream support/security (Drupal 7 EOL 2021)
  • UI improvements (modern theme options, in-place editing, etc)

And some things that will most-likely be done at the same time:

Proposed resolution

The following meta issues outline the major initiatives of the upgrade. Each
contains overviews and links to specific tasks:

Comments

m.stenta created an issue. See original summary.

m.stenta’s picture

Issue summary: View changes

One of the first steps I am in the process of taking right now is: #3083352: Migrate to farmOS-map library

This will remove the OpenLayers module as a dependency, which clears a major hurdle in the upgrade path to Drupal 8 and 9.

SocialNicheGuru’s picture

Also will there be a way to install via composer?

m.stenta’s picture

Also will there be a way to install via composer?

Yes - we discussed this recently in fact, and I think we are only going to use Composer for building farmOS. Not Drush Make like we've been doing in the past. Last I checked, drupal.org packaging still requires Drush Make file, which means we will need to package ourselves and publish on GitHub instead.

m.stenta’s picture

Version: 8.x-2.x-dev » 2.x-dev

Officially created the 2.x-dev snapshot release node on drupal.org: https://www.drupal.org/project/farm/releases/2.x-dev

This means we can start using the 2.x-dev version in the issue queue instead of the old 8.x-2.x-dev.

m.stenta’s picture

Issue summary: View changes
m.stenta’s picture

Issue summary: View changes
m.stenta’s picture

Issue summary: View changes

Added a "Launch" meta roadmap issue will be used to track tasks/considerations for the ultimate launch of farmOS 2.x as the new official branch: #3162602: [META] farmOS 2.0.0-beta1

m.stenta’s picture

Issue summary: View changes
m.stenta’s picture

Issue summary: View changes
m.stenta’s picture

Status: Active » Fixed

farmOS 2.0.0-beta1 has been released! https://farmos.discourse.group/t/farmos-2-0-0-beta1-has-been-released-ha...

We can close most of these "[META] 2.x..." tracking issues now and open new issues/roadmaps as needed.

I am leaving some open, which we will work on ahead of the 2.0.0 "stable" release:

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.