Skip to content

12LTS Crowdfunding Campaign

Oliver Klee edited this page Oct 7, 2024 · 29 revisions

Crowdfunding campaign for TYPO3 12LTS compatibility

Note: This crowdfunding campaign has been canceled and been replaced by the early access program.

This extension will be compatible with TYPO3 12LTS. However, this requires quite a lot of work. This crowdfunding campaign will collect the funds for this work.

The goals are to

  • have clean 12LTS compatibility
  • replace the use of AbstractPlugin and marker-based templates with a partial rewrite with Extbase/Fluid (with an extremely high coverage of automated tests)

TL;DR Overview

12 LTS Compatibility status

Extension 12LTS-compatible release 12LTS testing branch
phpunit (to do) (not available yet)
oelib (to do) (not available yet)
feuserextrafields (to do) (not available yet)
onetimeaccount (to do) (not available yet)
seminars (to do) (not available yet)

❓ How does this work?

To contribute to the campaign, please send an email with the net sum you would like to pledge (at least 100€), your billing address, your company name and URL (for the list of pledges) to typo3-coding AT oliverklee DOT de.

As a campaign backer, you will get a backlink from the seminars manual, regular update emails and beta versions to test and use.

I will start work on each top-level milestone (and send the invoices for that milestone) once the corresponding milestone is finished. (And as long as a milestone is not completely financed, you will not receive an invoice for your pledge that covers the corresponding milestone.)

You can always increase you pledge, but you cannot reduce or cancel it. After milestone 1 is financed, you can also pledge for a certain milestone. I'd prefer to do the milestones in order, though. Also, pledging for a certain milestone will spread out the pledges, hence reducing the probability of more milestones getting full funding.

All prices listed in the milestones are net prices.

πŸŒ‘πŸ’Έ Milestone 1: Fix some open bugs in the extensions, do some cleanup, create a documentation extension

Total required financing: 1400€

Financed: 500€ (35%)

  • oelib: 3 bugs
  • onetimeaccount: 7 bugs
  • seminars: 23 bugs
  • also switch TypoScript includes to always use @import
  • raise all extensions to PHPStan level 9 and the bleeding-edge rules (without fixing the additionally-found issues)
  • enable the bleeding edge PHPStan rules for all extensions
  • add the crowdfunding campaign announcements to various parts of the seminars, onetimeaccount and feuserextrafields extensions
  • create and link an example extension that documents how to extend the feuserextrafields and onetimeaccount extensions

πŸŒ‘πŸ’Έ Milestone 2: Tests streamlining

Total required financing: 1000€

  • switch the seminars tests from nimut/testing-framework to typo3/testing-framework
    • 79 unit testcases
    • 44 functional testcases
  • make all data providers static (in preparation for PHPUnit 9)
    • feuserextrafields: 4
    • oelib: 84
    • onetimeaccount: 6
    • seminars: 91
  • stop using setMethods() in the tests: 7 (seminars)
  • convert the view helper tests to proper functional tests

πŸŒ‘ Milestone 3: Drop old things

Total required financing: 800€

  • drop TYPO3 10LTS support
  • drop things marked as deprecated
    • phpunit: 1
    • feuserextrafields: 2
    • oelib: 49
    • seminars: 16
  • drop support for PHP 7.2 and 7.3
  • move the removal of some deprecated thing one major version later (where it is not practical to update the callers yet)
  • drop obsolete TYPO3 version switches and method_exists calls:
    • phpunit: 0
    • feuserextrafields: 6
    • oelib: 81
    • onetimeaccount: 0
    • seminars: 54

πŸŒ‘ Milestone 4: PHPUnit and PHP language level upgrade

Total required financing: 2000€

  • switch to the latest TYPO3 Rector version
  • upgrade all extensions to PHPUnit 9
  • upgrade the code use PHP 7.4 language level features
  • add more native type declarations (also with callables)
  • reformat the code with the TYPO3 Core CS-Fixer rules
  • upgrade all extensions to typo3/testing-framework V7
  • switch the DB fixtures from XML to CSV
    • feuserextrafields: 8
    • oelib: 8
    • onetimeaccount: 1
    • seminars: 143

πŸŒ‘ Milestone 5: Stop calling deprecated code

Total required financing: 2400€

  • feuserextrafields: 52 calls
  • oelib: 367 calls
  • onetimeaccount: 7 calls
  • seminars: 367 calls

πŸŒ‘ Milestone 6: Basic 12 LTS compatibility for the ecosystem extensions

Total required financing: 1600€

Just get the automated tests and the code to work, but do not make it clean of fix any deprecations. Also update the TCA as needed. Go through all extension scanner warnings and fix the positive cases.

  • testing TYPO3 distribution
  • testing site package
  • phpunit: 1 extension scanner warning, 0 files changes by Rector
  • feuserextrafields: 4 extension scanner warnings, 2 files changed by Rector
  • oelib: 18 extension scanner warnings, 10 files changed by Rector
  • onetimeaccount: 1 extension scanner warning, 1 file changed by Rector

πŸŒ‘ Milestone 7: Basic 12 LTS compatibility for seminars

Total required financing: 2400€

Just get the automated tests and the code to work, but do not make it clean of fix any deprecations. Also update the TCA as needed. Go through all extension scanner warnings and fix the positive cases.

  • ca. 200 extension scanner warnings
  • 78 files changed by Rector

πŸŒ‘ Milestone 8: Rewrite the registration engine

Total required financing: 2400€

This is a dependency of almost every seminars plugin and hence is the main blocker for the migration to Extbase/Fluid. It takes care of processing registrations and unregistations, calculating vacancies, and sending out emails. It has 1216 lines in the current seminars main branch. A secondary goal of the rewrite is to avoid race conditions when multiple persons are registering in parallel.

πŸŒ‘ Milestone 9: Extbase/Fluid rewrite: single view (with configurable fields)

Total required financing: 1600€

πŸŒ‘ Milestone 10: Extbase/Fluid rewrite: list view (with configurable columns, but without filtering, and without flexible sorting)

Total required financing: 1600€

πŸŒ‘ Milestone 11: Extbase/Fluid rewrite: filter/search form for the list view

Total required financing: 3200€

πŸŒ‘ Milestone 12: Extbase/Fluid rewrite: category list

Total required financing: 600€

πŸŒ‘ Milestone 13: Extbase/Fluid rewrite: "my events" list and unregistration functionality

Total required financing: 1600€

πŸŒ‘ Milestone 14: Extbase/Fluid rewrite: event headline

Total required financing: 400€

πŸŒ‘ Milestone 15: Extbase/Fluid rewrite: FE list of registrations

Total required financing: 800€

πŸŒ‘ Milestone 16: Extbase/Fluid rewrite: topic list

Total required financing: 400€

πŸŒ‘ Milestone 17: Avoid warnings and deprecations with TYPO3 12LTS in all extensions

Total required financing: 2400€

πŸŒ‘ Milestone 18: Update the extension manuals to the new TYPO3 standards

Total required financing: 2400€

πŸŒ‘ Milestone 19: Drop the marker-based templates and the AbstractPlugin-based plugins from seminars

Total required financing: 1600€

The tricky part here is removing those parts one by one without breaking anything else.

❀️ Campaign backers

To contribute to the campaign, please send an email with the net sum you would like to pledge (at least 100€), your billing address, your company name and URL (for the list of pledges) to typo3-coding AT oliverklee DOT de.

Clone this wiki locally