farmOS 2.x Releases (and What to Expect)

This thread aims to summarize the farmOS 2.x releases, and what users and developers can expect.

In general, there will not be specific dates/timelines for the official 2.0.0 “stable” release. It will be ready when it is ready. Follow this thread for updates (click the :bell:).

Note that comments are locked in this topic, but feedback is welcome in: farmOS 2.x Alpha Feedback

Why farmOS 2.x?

If this is the first you are hearing of “farmOS 2.x”, you may be wondering what it is and why we’re doing it. farmOS 2.x is a major upgrade to the farmOS codebase, and is an opportunity for us to take a big step forward with all the lessons learned in 1.x.

Farmers and other end users can expect an improved user interface and experience in general. We’ll also have better translation and localization capabilities. Areas will now be unified under assets, technically considered “location assets” from now on. Plus, we’ll be adding inventory management for all assets, a long-awaited feature!

For admins and developers, 2.x will represent a modernization of the code architecture and development process. You can expect improvements to our backend APIs, documentation and overall developer experience (DX) for modules and other integrations. For more details, see the farmOS 2.x Development Roadmap.

Release strategy and expectations

Alpha Releases (2.0.0-alpha#)

Today (April 1, 2021) we have tagged the first “alpha” release of the farmOS 2.x branch 2.0.0-alpha1

This first milestone signifies that all of the critical data architecture is in place, and an automated migration path is available to copy records from a farmOS 1.x database into a farmOS 2.x database. This alpha release also includes a feature-complete REST API for pushing/pulling data via HTTP requests.

This release does not include all of the frontend UI/UX features that are available in farmOS 1.x. Prioritizing and porting those features is our focus now, as we approach the first beta release.

We will continue to tag additional alpha releases (eg: 2.0.0-alpha2, 2.0.0-alpha3, etc) as new features, fixes, and improvements are completed.

Alpha releases are primarily targeted at users and developers who want to begin experimenting with the 2.x data migration, as well as begin building modules and API integrations on top.

Here is a summary of what you can expect during the alpha phase:

Users/admins

  • DO NOT USE WITH REAL DATA!
  • Begin testing the 1.x data migrations to make sure everything comes over from their 1.x instance.
  • Updates will require reinstalling from scratch and re-running the migrations.
  • Provide feedback on data migration.

Developers

  • Test out the new 2.x APIs.
  • Begin developing/porting farmOS modules. See https://www.drupal.org/project/farm/issues/3151247
  • Review module development docs: Getting started - farmOS 2.x Docs
  • Many helper functions are not available yet (eg: for common actions in quick form submit functions etc).
  • Provide feedback on APIs, development environment, documentation, etc.
  • Assist with the UI/UX development, documentation, helper functions, etc.

Beta Releases (2.0.0-beta#)

The “beta” phase of releases will signify that farmOS 2.x is stable enough to start using with real data, although there may still be known bugs and missing features.

Beta releases will be targeted at “early-adopter” users and developers who are ready to make the jump to farmOS 2.x, or who are starting fresh on farmOS without an existing 1.x instance.

Here is a summary of what you can expect during the beta phase:

Users/admins

  • May start using with real data.
  • Automated updates will be available between releases, so you won’t need to reinstall from scratch and re-run migrations.
  • There may still be bugs. Things may still break.
  • Provide feedback on UI/UX features.

Developers

  • Helper functions and internal APIs should be in place for most requirements.
  • Continue porting add-on modules.
  • Provide feedback on developer experience (DX).

Release Candidates (2.0.0-rc#)

We may tag release candidates (eg: 2.0.0-rc1, 2.0.0-rc2, etc) as we get closer to the final 2.0.0 release. These will be considered stable enough for general use, but may still have missing features or known issues that are deemed non-critical.

Stable Release (2.0.0)

The stable 2.0.0 release will be tagged as soon as we feel confident that all the necessary features are in place and there are no blocking issues.

And beyond!

Of course 2.0.0 is just the first step! Moving forward from here we will follow standard semantic versioning practices, with patch releases (eg: 2.0.1, 2.0.2, etc) for minor changes and bug fixes, and minor releases (eg: 2.1.0, 2.2.0, etc) for new features (always backwards compatible).

8 Likes

farmOS 2.0.0-alpha2 was released!

This is the second “alpha” release of the farmOS 2.x development branch. It is still NOT ready for production use. But we’re getting closer… :slight_smile:

Highlights since the 2.0.0-alpha1 release:

  • Location hierarchy page with drag-and-drop editor
  • Maps of assets
  • Map asset popups
  • Map layer color/styles config
  • Views of logs that reference assets/locations
  • View of assets in a location
  • View of assets in a group
  • Views of assets/logs by type include columns/filters for type-specific fields automatically
  • Birth log type + migration
  • Dashboard stacked two-column layout
  • Dashboard “Metrics” block
  • Basic breadcrumbs
  • Started Help module
  • Allow custom CORS for the 2.x API
  • Always create revisions via API
  • Many small UI improvements
7 Likes

farmOS 2.0.0-alpha3 has been released!

This is the third “alpha” release of the farmOS 2.x development branch. It is still NOT recommended for production use. However I am optimistic that this will be the last “alpha” release before we release the first “beta” - which will be an official signal that it’s ready to start using. No promises though - we’ll see! :slight_smile:

On that note, we’ve decided to make a small change to what “alpha” and “beta” will mean, and what you can expect with these releases leading up to the first “stable” release (aka farmOS version 2.0.0). I will update the forum topic description above to reflect these changes, but to summarize briefly: we want to get “beta” out sooner, even if it means it doesn’t have ALL the UI/UX features that were available in 1.x. Originally “beta” was going to include everything 1.x had, but this just means everyone has to wait longer, even if they don’t need those features. So instead, we plan to release the first beta as soon as we feel confident that the most important pieces are in place and stable. And we will continue to add more UI/UX features in follow-up 2.0.0-betaX releases leading up to the final 2.0.0 stable release. Continue to follow this forum topic for updates if you’re interested!

Highlights since the 2.0.0-alpha2 release (roughly in order of completion):

  • Separate color-coded Land and Structure type map layers
  • Allow standard users to view entity type resources via JSON:API
  • Upload files via the API
  • Allow managed roles access to entity revisions tab
  • Seed asset type
  • Upgrade to farmOS-map 2.x
  • Display community farmOS modules in /farm/settings/modules
  • Bulk actions for assets, logs, plans
  • KML import/export
  • Geocoding of GeoJSON and GPX files
  • Render asset, log, and plan pages in stacked two-column layout
  • Dropbutton to add logs from asset pages
  • Move map layers into sidepanel
  • Perform entity validation during migration
  • Add Drush commands for simplifying migrations
  • Split Sale/Purchase logs out to farmOS Ledger community module
  • Improvements to data stream migrations, UI, and API endpoints
  • Material asset type
  • Material quantity type
  • Many small UI improvements
  • Many bug fixes
7 Likes

In the interest of supporting users who want to begin using farmOS 2.0.0-alpha3 before a beta is released, I’ll try to use this comment to document any manual updates that might be required between 2.0.0-alpha3 and whatever the next (hopefully beta) release is.

If you wait until the next release (beta or otherwise) to deploy your instance, you won’t need to take these steps.

  • Enable new modules via Drush: drush en farm_owner farm_entity_fields farm_entity_views:
  • Enable farm_update module, if you want automatic configuration updates (recommended) - for more info: Updates - farmOS 2.x Docs (via Drush: drush en farm_update)
  • If you are managing the root composer.json for your deployment, then see details below for changes you need to make.
  • Rebuild caches (via Drush: drush cr)

Changes to composer.json

This only applies if you are managing your farmOS deployment with Composer and a custom composer.json. If you are using a packaged tarball, or a Docker image with only the sites directory bind-mounted as a volume, then you do not need to do anything.

We are now using composer-merge-plugin to manage more of the project composer.json dependencies and configuration. For more details see: Use composer-merge-plugin to manage project composer.json dependencies [#3239420] | Drupal.org

This commit shows the required changes: Issue #3239420: Use composer-merge-plugin to manage project composer.… · farmOS/composer-project@42bdd33 · GitHub

1 Like

farmOS 2.0.0-alpha4 has been released!

I am optimistic that this will be the last “alpha” release before we release the first “beta”

Sorry I lied. I might tag a few more alphas (more frequently) as we approach beta. This just makes it easier to deploy updates while we’re testing things. :slight_smile:

Highlights since farmOS 2.0.0-alpha3:

3 Likes