All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
3.3.3 2025-01-07
Note: The farmos/farmos:3.x
and farmos/farmos:3.3.3
Docker images include
PHP 8.3 (because it is based on the drupal:10.4
Docker image). Please make
sure any custom code is compatible with PHP 8.3 before updating.
- Update Drupal core to 10.4 #900
- Update to stable Gin 4.0.0 #903
- Update simple_oauth to 6.0.0-beta7 #893
- Update simple_oauth to 6.0.0-beta8 and unpin version constraint #905
3.3.2 2024-11-20
- Fix config export via UI #883
- Fix group location logic #888
- Fix farm_log_quantity View alterations by farm_ui_views #891
- Fix "explode: NULL is not a string" when multi-value CSV columns are omitted #895
3.3.1 2024-09-26
This fixes a critical issue in the upgrade path from farmOS 3.2.x to 3.3.x. For more information, see farmOS#881.
- Remove dependency on admin_toolbar:admin_toolbar_links_access_filter #881
- Fix warning message when loading values from empty form state #880
3.3.0 2024-09-24
- Add bulk delete action to farm_log_quantity View #860
- Add an "Export Quantity CSV" bulk action to Log Views
- Allow modules to alter dashboard panes #868
- Add geometry/location fields to CSV importers #815
- Add an asset.logs service for retrieving logs that reference an asset #850
- Add farmOS-timeline library (experimental) #862
- Build multi-platform Docker images/manifests #864
- Add a Soil texture field to Lab test logs #873
- Update Drupal core to 10.3 #872
- Move farm_quantity View to farm_log_quantities and require log relationship #858
- Quantity CSV export improvements #861
- Reorder and improve entity field rendering #847
3.2.4 2024-09-18
- Single Dockerfile using multi-stages for production and dev image #855
- Simplify recommendation for XDEBUG_CONFIG in local development environments #870
- Update drupal/consumers to ^1.19 and fix kernel API tests
- When a quantity is deleted, clean up log references to it #859
3.2.3 2024-07-21
- Issue #3454144: Fix untranslated plant_type descriptions in plant and seed asset types
- Set owner of cloned assets to current user #851
- Issue #3314741: EntityFieldManager::getFieldMap() doesn't show farmOS bundle fields
3.2.2 2024-05-17
- Allow multiple locations to be referenced in the planting quick form #839
- Update farmOS-map to v2.3.0 #841 to add the ability to use custom stroke colors #201 (in custom map layers)
- Improve comment settings and edit sidebar #846
- Remove data_table from existing plan_record entity type definition #829
- Use farm_people entity_reference View for exposed Owner filter in farm_asset View #835
- Require asset name in bulk KML importer #836
- Fix incorrect CSV headers when exporting multiple record types #842
3.2.1 2024-04-12
- Patch JSON:API Schema to fix Issue #3390505: Error: uri is not a valid type for a JSON document
- Fix FieldException: Attempted to create a configurable field of non-configurable field storage image during update.php #828
3.2.0 2024-04-10
- Issue #3352183: Comments on farmOS records
- Add a Notes filter to the logs views #825
- Add file and image base fields to all taxonomy terms #807
- Issue #3390486: Add an Ontology URI field to all taxonomy terms
- Add "Days of harvest" field to Plant type terms #794
- Plan record views integration #818
- Add min/max options to decimal fields in farm_field.factory #822
- Set plant_type fields form/view display settings via alter hook instead of config #806
- Make "done" the default log status #782
- Set the minimum value of maturity_days and transplant_days to 1 #794
- Move transplant_days field to farm_transplant module #795
- Use content form for taxonomy terms #810
- Override the lab_test log timestamp label and description #774
- Override the birth log asset label and description #824
- Fix Client error when passing asset parameter to forms #814
- Update patch for Issue #3397275 to fix boolean field JSON Schema #819
- Do not trim whitespace from quantity field item content #820
- Do not install base modules when --existing-config is used #821
3.1.2 2024-02-26
- Check for correct update operation access in location hierarchy form #800
- Update to itamair/geophp 1.6 #801 to fix deprecated function warnings.
- Fix saving inventory quick form configuration with existing units term #803
3.1.1 2024-02-07
- Grant config permissions create quick_form permission #791
- Patch Gin to fix Issue #3419904: Help text is cutoff at xsmall breakpoint
- Update Migrate Tools to 6.0.3 for SA-CONTRIB-2024-008
3.1.0 2024-02-02
- Announce new releases on farmOS.discourse.group #780
- Add a Product asset type and Product type taxonomy #787
- Inventory quick form #766
- Add UI for creating instances of quick forms #785
- Show map on /locations #779
- Provide a plan_record entity type for plan record relationships with metadata #781
- Recommend running composer update twice #653
- Edit form UI improvements #770
- Improve asset and log CSV exports #783
- Remove "All" from "Items per page" options in Views #776
3.0.1 2024-01-18
- Allow users with asset view access to see /asset/%id/locations.
- Patch drupal/core to fix Issue #3414883: datetime_timestamp widget does not use default field value #771
- Fix duplicated revision tab on entities #773
- Improve access checking on location hierarchy forms.
3.0.0 2024-01-05
This is the first "stable" release of farmOS v3. See the release notes for 3.0.0-beta1 below for more information about major changes in the 3.x branch, including breaking changes to be aware of.
- Correct alter hook to add password grant to static scopes #755
- Use strict identical operator when checking geometry format #756
3.0.0-beta3 2023-11-27
3.0.0-beta2 2023-11-03
- Fixed 3.0.0-betaX tagged release packaging of tarballs and Docker images.
- Update csv_serialization dependency to ^4.0 #745
- Fix warning message when rendering link to birth log #746
3.0.0-beta1 2023-11-01
This is the first release of the farmOS 3.x branch, following semantic versioning. This means changes have been made which may be incompatible with existing integrations. These "breaking" changes are described below, with links to specific issues/pull requests for more details.
farmOS v3 updates Drupal to version 10. Drupal 9 is end-of-life as of
November 1st, 2023.
If you have built any add-on modules for farmOS, you will need to check that
they are compatible with Drupal 10, and declare support in your *.info.yml
file by changing core_version_requirement
from ^9
to ^9 || ^10
(to
indicate that it works on both versions), or just ^10
(to indicate that it
only works on Drupal 10). The PHPStan tool that is included with the farmOS
3.x-dev
Docker image can be used to perform static analysis of your module
code to see if there are deprecations that need to be fixed. See
farmOS coding standards for
more information.
If you are using PostgreSQL, Drupal 10 requires PostgreSQL version 12 or
greater, with the pg_trgm
extension enabled. If you have PostgreSQL 13 or
greater, the pg_trgm
extension will be enabled automatically during farmOS
installation. PostgreSQL 12 users, or users who are updating from farmOS 2.x to
3.x, will need to enable it manually by running the following query after the
farmOS database has been created, but before farmOS is installed/updated:
CREATE EXTENSION pg_trgm;
The Simple OAuth module has been updated to version 6. This includes a few breaking changes which may affect API integrations. farmOS includes code to handle the transition of its own OAuth clients and scopes, but if you have made any additional clients that used special roles they will also need to be updated. The biggest changes are that the "Implicit" grant type has been removed, and the "Password Credentials" grant type has been moved to an optional "Simple OAuth Password Grant" module, which must be enabled in order to use that grant type. The default farmOS client that is included with farmOS has also been moved to a separate module that is not enabled by default. After the update to farmOS 3.x, all access tokens will be invalidated, but refresh tokens will still work to get a new access token.
farmOS 2.x included code to help migrate data from a farmOS 1.x database. This code has been removed from farmOS 3.x If you are still on farmOS 1.x, you will need to migrate to farmOS 2.x, and then update to farmOS 3.x. For more information, see Migrating from farmOS v1.
Lastly, the following deprecated functions/methods have been removed:
farm_log_asset_names_summary()
QuickFormInterface::getId()
- Issue #3382616: Remove v1 migrations from farmOS 3.x
- QuickFormInterface::getId() is replaced by QuickFormInterface::getQuickId()
- Remove deprecated farm_log_asset_names_summary()
- Issue #3394069: Update quantities to use bundle permission granularity
- Issue #3357679: Allow material quantities to reference multiple material types
- Issue #3330490: Update Drupal core to 10.x in farmOS
- Issue #3256745: Move default farm OAuth2 client to a separate module
- Update Simple OAuth module to v6 #743
- Issue #3396419: Make log timestamp required
- Patch JSON:API Schema module for Issue #3397275: Use OptionsProviderInterface::getPossibleOptions() for allowed field values (anyOf / oneOf)
2.2.2 2023-10-25
- Fix planting quick form creating empty quantities #737
- Add post update hook to install the new quick_form entity type on existing farmOS installations #738
- Patch State Machine module to fix Issue #3396186: State constraint is not validated on new entities
2.2.1 2023-10-09
- Fix asset_lookup and term_lookup exception messages #731
- Prevent saving invalid ID tag types #725
- Quick form actions cause RouteNotFoundException: Route farm.quick.[id] does not exist. #727
2.2.0 2023-10-06
This is the second minor release of the farmOS 2.x branch, following semantic versioning. This means new functionality is added in a backwards compatible manner.
farmOS 2.2.0 adds a CSV import module with importers for all asset, log, and taxonomy term types, as well as a framework for module developers to build their own custom importers for bespoke CSV templates. See https://farmOS.org/development/module/csv for more information.
A new Group membership assignment quick form is provided for easily assigning asset group membership. This works similar to the Movement quick form that was added in v2.1.0.
This release also makes a number of UI/UX improvements, including a new Setup menu item which will serve as a place for common "farm data setup" tasks.
See links below for more details.
- farmOS v2 CSV import module #722
- Add a Group membership assignment quick form #723
- farmOS Setup Menu #706
- Issue #3354935: Configurable quick forms
- Add an Account Admin role with permission to administer users and assign managed roles #714
- Add action links to add location assets on locations page #709
- Dashboard improvements #712
- Condense metrics UI #711
- Condense views table UI #713
- Decrease horizontal and top margins on pages #719
- Misc quick form code and documentation improvements #703
- QuickFormInterface::getId() is replaced by QuickFormInterface::getQuickId()
- Issue #3359452: Deprecate farm_log_asset_names_summary()
- farmOS v1 migrations are deprecated and will be removed in farmOS 3.x
- Validate quantity entities created by create_quantity #721
- Update farmOS-map to v2.2.2 #724 to fix Map Search Bar no longer generating results #197
2.1.3 2023-09-20
- Fix composer.json version constraints for migrate_plus and migrate_tools #702
- Fix birth log quick form apostrophe becomes ' #698
- Exclude block.block.gin_content from farm_update #715
- Fix hideable boolean settings form #718
- Update Drupal core to 9.5.11 for SA-CORE-2023-006
2.1.2 2023-07-18
- Leaving empty the Parent field in the Assign Parent For This Asset form leads to unexpected error #683
- Correct namespace for MigrateToolsCommands #700
- Improve asset bundle logic in ID tag widget #699
2.1.1 2023-05-23
2.1.0 2023-05-19
This is the first minor release of the farmOS 2.x branch, following semantic versioning. This means new functionality is added in a backwards compatible manner.
farmOS 2.1.0 adds two quick forms that were present in farmOS 1.x. The Birth quick form makes it easy to record animal births, by creating the birth log and children animal assets all in one step. The Movement quick form (formerly the Animal Movement quick form in 1.x) makes it easy to record the movement of assets to a new location, with the option of customizing their geometry at the same time.
In editable maps, it is now possible to paste WKT into the textarea below the map and the map geometry will be automatically updated.
This release also moves the "View", "Edit", and "Revisions" links on assets, logs, plans, and taxonomy terms from primary tabs to secondary tabs, to create a better separation from the other primary tabs.
- Refresh map edit layer when WKT is pasted into data input field #670
- Add QuickStringTrait::entityLabelsSummary() method for summarizing entity labels #675
- Add asset inventory views field #679
- Birth quick form (ported from farmOS 1.x) #656
- Movement quick form (ported from farmOS 1.x) #677
- Update farmOS-map to v2.2.1
- Remove field links from asset entity browser view #673
- Move default entity tabs to secondary tabs #634
- Fix bulk move/group action log names when unsetting location/group #669
- Fix farm_log_asset_names_summary() $cutoff parameter #674
- Update Drupal core to 9.5.8 for SA-CORE-2023-005
2.0.4 2023-04-03
- Add "Speed" to the list of quantity measures #658
- Include Fraction bundle fields in default Views #664
- Allow map to be resized vertically #663
- Add integer, decimal, and email field support to field factory service #666
- Add a QuickFormElementsTrait with a buildInlineContainer() method #654
- Do not add birth log mother to animal assets that already have parents #655
- Simplify all map resize logic to use ResizeObserver #662
- Replace all usages of docker-compose with native docker compose #627
- Allow max_length to be overridden on string fields #666
- Standardize all taxonomy bundle labels to be singular #661
- Update Drupal core to 9.5.7 #667
- Fix quick form toolbar menu links #657
- Respect user timezone in midnight default datetime values #665
2.0.3 2023-03-15
- Update Drupal core to 9.5.5 for SA-CORE-2023-002, SA-CORE-2023-003, and SA-CORE-2023-004.
2.0.2 2023-03-10
- Convert geometry values to WKT in GeofieldWidget #640
- Fix map ui being unreadable on dark mode #642
- Patch Drupal core to fix Issue #3266341: Views pagers do math on disparate data types, resulting in type errors in PHP 8
- Implement FarmBreadcrumbBuilder::applies() to only affect desired routes
- Attempt to update the map size until it is rendered #576
- Show map popup for the smallest feature at the clicked point #652
2.0.1 2023-02-08
- Move land and structure type fields higher up for consistency #632
- Change asset action date pickers to use HTML5 calendar widgets #630
- Allow setting time in bulk actions and quick forms via datetime element #635
- Add folder creation and clear caches to Configure private filesystem in the Hosting and Environment docs #628
- Issue #3336698: Add "project: farm" to farm.info.yml to fix drupal.org usage statistics
- Fix type error when un-assigning asset from group #631
- Issue #3335267 by m.stenta, farmer-ed, penyaskito: 405 Method Not Allowed when trying to patch entities as a user with non-default language
2.0.0 2023-01-01
This is the first official "stable" release of farmOS v2! Moving forward, releases will follow standard semantic versioning.
- Prevent circular asset location #568
- Prevent circular group membership #562
- Issue #3328419: Uninstalling farm_ui_views module breaks site
- Remove line breaks and whitespace from log CSV quantity cells #622
2.0.0-rc1 2022-12-15
PHP 8+ is now the recommended minimum version requirement for farmOS. The official farmOS Docker images run PHP 8+ as of this release. PHP 7.4's end-of-life was November 28th, 2022. farmOS still works with PHP 7.4 as of this writing, but support is not officially guaranteed moving forward. If you maintain a farmOS module, please test that it works with PHP 8. If you host farmOS, please upgrade PHP to 8+ as soon as possible.
- Remove default_measure configuration from quantity type definitions #612
- Shorten name of tests and delivery workflow #617
- Only show the first quantity in log Views #619
- Issue #3310286: Add $timestamp parameter to service methods
- Correct hook_farm_update_exclude_config API docs #608
- Correct CSS classname for priority flag #609
- Fix user admin permissions form alter for managed roles #610
- Fix migration of lab field to taxonomy terms #611
- Fix TypeError when adding email delivery #616
- Fix enable/disable buttons on data stream notifications page #613
2.0.0-beta8.1 2022-11-26
- Issue #3308740: Update Drush to ^11
- Update Migrate Plus and Migrate Tools to ^6.
2.0.0-beta8 2022-11-25
This release fixes an issue with the input log migration from farmOS v1. If you have migrated input logs from farmOS v1, and they referenced multiple material types, they may have been affected. An update hook is included with this release that will attempt to re-connect to the v1 database used during migration to automatically fix the issue. If the v1 database is no longer available, then you will need to fix these logs manually. For more information, see: farmOS#579
If you would like to skip the automatic fix, add the following line to your
settings.php
(this can be removed after running update.php):
$settings['farm_migrate_skip_input_log_migration_fix'] = TRUE;
- Add action to bulk categorize logs #590
- Add action for bulk assigning asset parent #588
- Show "Add log" action links on /asset/[id]/logs/[type] #596
- Add "Date received" and "Date processed" fields to lab test logs
- Add a test quantity type with test method taxonomy #604
- Add tissue lab test type #605
- Update farmOS-map to v2.1.0
- Issue #3311264: Coordinate upgrade of Consumers module to get client_id base field
- Issue #3282186: Update simple_oauth to ^5.2.2
- Make translatable strings consistent between fields and actions #594
- Issue #3316925: Mark certain classes as @internal to indicate non-public APIs
- Render link to taxonomy terms in farm entity views #595
- Issue #3203129: Use GitHub Actions to build Docker Hub images
- Announce new releases on Mastodon/Twitter via farmOS-microblog #599
- Improve dependency relationships of asset/log/quantity modules #601
- Convert lab field to term reference on lab test logs #603
- Adapt csv export logic to support a type filter allowing single or multiple values. #584
- Click sort columns expand filters fieldset #586
- Issue #3189918: Broken relationship schema link in farmOS 2.x JSON:API
- Issue #3322227: Document schema title wrong for multiple resource types
- Change default client secret to be NULL to avoid issue #3322325 #597
- Fix input log quantity material migration #598
- Patch simple_oauth to fix Issue #3322325: Cannot authorize clients with empty string set as secret
2.0.0-beta7 2022-09-29
- Add button/menu item for data stream notifications collection page #555
- Issue #3306227: Dispatch events for asset presave, insert, update, delete
- Issue #3306344: Allow views exposed filters to be collapsed
- Issue #3309234: Add PHPStan to test and delivery workflow
- Issue #3309198: Allow users to override Gin theme settings
- Add owner field to assets #537
- Add log asset filter to all displays of farm_quantity view #569
- Improve API docs #557
- Issue #3305724 by pcambra, m.stenta: Allow map type and behaviors to be configurable in map blocks
- Update Drupal core to 9.4.x
- Update AssetLocationInterface::getAssetsByLocation to return asset objects keyed by ID #565
- Simplify location query processing of asset ids #564
- Update farmOS-map to v2.0.7 to improve edit control icons
- Fix for Autocomplete dropdown not showing in Chrome on Android #552
- Uncaught (in promise) TypeError: instance.editAttached is undefined #550
- Map form element #required is not enforced #560
- Incorrect translation placeholders for asset names #540
- Update farmOS-map to v2.0.5 to fix Uncaught (in promise) TypeError: o.getChangeEventType is not a function #551
- Fix [warning] Invalid argument supplied for foreach() EntityViewsDataTaxonomyFilterTrait.php:26 #575
- Set reduce_duplicates: true in Views exposed filters for multivalue fields #571
- Update core map behaviors to properly depend on core/drupalSettings #578
- Issue #3243922 by paul121, Symbioquine, m.stenta: farmOS-map chunks fail to load when map is rendered via AJAX
2.0.0-beta6 2022-07-30
- Issue #3290929: Provide a farmOS map form element
- Issue #3290993: Add "Move asset" button next to the current location field
- Generate unique form IDs for quick forms #547
- Update Drupal core to 9.3.16 for SA-CORE-2022-011.
- Update Drupal core to 9.3.19 for SA-CORE-2022-012, SA-CORE-2022-013, SA-CORE-2022-014, and SA-CORE-2022-015.
2.0.0-beta5 2022-06-02
- Issue #3275161: Allow IMG tags in default text format
- Update toolbar logo spacing for gin beta #527
- Only show active plans by default #529
- Do not check php-geos requirement in the update phase #526
- Patch entity_reference_revisions module to fix upstream issue #3267304.
- Update Drupal core to 9.3.12 for SA-CORE-2022-008 and SA-CORE-2022-009.
- Update Drupal core to 9.3.14 for SA-CORE-2022-010.
2.0.0-beta4 2022-04-13
- Link from entities to their referenced terms and show entity views on taxonomy terms #458.
- Encourage GEOS PHP extension use #521
- Update farmOS-map to v2.0.4.
- Issue #3270561: Upgrade to gin beta
- Separate Docker image build from testing jobs in run-test.yml workflow #522
- Merge test and release workflows into a unified delivery workflow #523
- Improve fields documentation #505
- Only require a name to build map popups #515
- Issue #3269543 by paul121: Automatically remove prepopulated entities from quick forms
- Do not add views handlers for unsupported field types #512
- Allow importing KML with empty geometries #510
- Update Drupal core to 9.3.8 for SA-CORE-2022-005.
- Update Drupal core to 9.3.9 for SA-CORE-2022-006.
2.0.0-beta3 2022-03-03
- Document farmOS cron set-up: https://farmos.org/hosting/install#cron
- Issue #3253433: Provide a helper function for loading flag options and allowed values
- Issue #3260645: CSV Export in Quantities not functioning
- Issue #3262752: Record type menu items lose translations
- Fix access check for "Developer information" on sensors and data streams.
- Maps broken with Uncaught SyntaxError: Unexpected token '?' #501
- Asset autocomplete breaks when asset has parentheses at the end #502
- Issue #3265207: API keys directory failure prevents farm client creation
- Issue #3264564: No space rendered in field suffix
- Error: Call to a member function get() on null in ContentEntityGeometryNormalizer.php on line 64 #493
- Update Drupal core to 9.3.6 for SA-CORE-2022-003 and SA-CORE-2022-004.
2.0.0-beta2 2022-01-19
- Add a Planting quick form module.
- Create a dedicated section in farmOS modules form for "Quick form modules".
- Provide a
quantity_measure_options()
helper function. - Localization module (
farm_l10n
) for enabling translations. - "Other" Structure type
- Open the Gin toolbar by default #470
- Enforce that the changelog is updated with every pull request #469
- Do not include archived assets in metrics count.
- Remove "administer farm map" from Manager role permissions.
- Add allow-plugins config #467
- Issue #3224663: Type-specific CSV exports do not respect exposed filters
- Improvements to sensor and data stream developer info #491
- Data is not deleted when a data stream entity is deleted #488
- Data does not immediately appear when posting to data streams #484
- Route "entity.data_stream.collection" does not exist. #486
- Fix Quick Form help text so that it works with new multi-route approach.
- Remove entity ID from entity autocomplete form elements.
- Data stream and notification permissions are not granted to managed roles. #479
- Sort locations by name, using natural sort algorithm.
- Quantity module breaks config_translation #480
- Log categories are not migrated to v2 #481
- Make local action buttons translatable.
- Fix permission for map settings form (/farm/settings/map).
- Patch
jsonapi_schema
module to fix Issue #3256795: Float fields have a null schema - Allow all three database tests to run even when one fails (workaround for Issue #3241653).
- Run SQLite3 tests in sequence instead of in parallel (another workaround for Issue #3241653).
- Update Drupal core to 9.3.3 for SA-CORE-2022-001
- Update Simple OAuth module to 5.0.6 for SA-CONTRIB-2022-002
2.0.0-beta1 2022-01-01
farmOS 2.x is a complete rewrite of farmOS for Drupal 9.
This brings many improvements, modernizations, and new features. The following
is a brief summary of notable changes from the 1.x branch of farmOS (aka
7.x-1.x
for Drupal 7).
Detailed release notes will be included in this file with each new release moving forward.
- Data model
- Documented data model
- Areas are now types of Assets
- New Asset types: Land, Structure, Water, Material, Seed
- Planting Assets are renamed to Plant
- New Log types: Lab test (merged Soil and Water tests)
- Inventory tracking for all Asset types
- Improved Asset location logic, including the ability to designate Assets as "fixed" (with intrinsic geometry) and/or "locations" (allowing other Assets to be moved to them)
- Improved Group membership logic, including member inheritence of group location
- Support for Quantity types
- Revisions for tracking changes to records
- Improved "Data streams" framework for sensors and other time-series data collection
- ID tags on all Asset types
- Flags can be limited by record type
- User interface/experience (UI/UX)
- Improved location hierarchy drag-and-drop editor, including ability to edit sub-hierarchies
- Improved KML/KMZ importer for bulk Land Asset creation
- Geocoding of GeoJSON and GPX files (in addition to KML/KMZ) on individual Assets and Logs
- Farm settings UI with simplified module installer
- Gin admin theme
- Improved mobile support
- APIs, libraries, and developer experience (DX)
- Documented API changes
- Modernized RESTful API built on JSON:API
- JSON Schema for all API resources
- 2.x API support in farmOS.js and farmOS.py libraries
- Updated farmOS-map library based on OpenLayers
- Improved APIs for module builders
- Object-oriented architecture based on Symfony
- Dependency management via Composer
- Automated testing via PHPUnit and GitHub Actions
- Coding standards enforcement via CodeSniffer
- Feature branch previews via Tugboat
- Hosting
- PostgreSQL database support (alongside MySQL, MariaDB, and SQLite3)
- Automated migration from 1.x to 2.x
- Improved performance with lazy-loading code and caching options
- Improved support for translation/localization (l10n)
- Security
- Support from the Drupal Security Team
- Drupal 9 will be supported (with security updates) until November 2023.
- Drupal 10 will be released mid-2022. farmOS will be prepared to update as soon as possible. This process will be trivial compared to the upgrade from Drupal 7, which required a complete refactor of the codebase. By comparison, updating from Drupal 9 to 10 will simply involve updating deprecated code.