Preparing for LifterLMS 6.0.0

LifterLMS 6.0.0 is scheduled for release in mid to late February, 2022. In addition to various bug fixes and improvements, this major release focuses primarily on improving the creation and management of certificates.

As a major release, some backwards incompatible changes have been made to the code base. These changes have been noted in the changelogs and compiled in the Breaking Changes section below.

# Release Schedule

The following is our target release schedule for version 6.0.0. The dates of these prerelease builds may be adjusted and additional versions may be added. The date of General Public Release may be delayed but will not be released early.

Friday, February 11, 2022Alpha.4
Tuesday, February 15, 2022 +4dBeta.1
Monday, February 21, 2022 +6dBeta.2
Friday, February 25, 2022 +4dRC.1
Tuesday, March 1, 2022 +4dRC.2
Monday, March 7, 2022 +6d6.0.0 General Public Release

# Breaking Changes

We strive, wherever possible, to remain backwards compatible. Doing so ensures that themes and integrations do not have to worry about their code bases being negatively impacted by changes in LifterLMS. However, this also results in a larger code base full of many unused and deprecated functions, classes, and files.

All breaking changes were deprecated in previous versions of LifterLMS and have been recorded in the 6.0.0 alpha version changelogs. They are summarized here as well:

  • Removed the deprecated LLMS() function in favor of the llms() function.
  • Removed the deprecated LLMS_SendWP::do_remote_install() method in favor of the LLMS_Abstract_Email_Provider::do_remote_install() method.
  • Removed the deprecated LLMS_Abstract_Email_Provider::output_css() method.
  • Removed the deprecated LLMS_Abstract_Generator_Posts::increment() method.
  • Removed the deprecated LLMS_Admin_Users_Table::load_dependencies() method.
  • Removed the deprecated LLMS_Admin_Import::localize_stat() method.
  • Removed the deprecated LLMS_Admin_Notices_Core::check_staging() method.
  • Removed the deprecated LLMS_Admin_Setup_Wizard::generator_course_status() method.
  • Removed the deprecated LLMS_Admin_Setup_Wizard::output_step_html() method.
  • Removed the deprecated LLMS_Admin_Setup_Wizard::scripts() method.
  • Removed the deprecated LLMS_Admin_Setup_Wizard::watch_course_generation() method.
  • Removed the deprecated llms_format_decimal() function.
  • Removed the deprecated llms_set_person_auth_cookie() function.
  • Removed the deprecated LLMS_Course::sections property.
  • Removed the deprecated LLMS_Course::sku property.
  • Removed the deprecated LLMS_Frontend_Assets::enqueue_inline_pw_script() method.
  • Removed the deprecated LLMS_Frontend_Assets::enqueue_inline_script() method.
  • Removed the deprecated LLMS_Frontend_Assets::is_inline_script_enqueued() method.
  • Removed the deprecated LLMS_Generator::add_custom_values() method.
  • Removed the deprecated LLMS_Generator::add_custom_values() method.
  • Removed the deprecated LLMS_Generator::format_date() method.
  • Removed the deprecated LLMS_Generator::get_author_id_from_raw() method.
  • Removed the deprecated LLMS_Generator::get_default_post_status() method.
  • Removed the deprecated LLMS_Generator::get_generated_posts() method.
  • Removed the deprecated LLMS_Generator::increment() method.
  • Removed the deprecated llms__created action hook from the LLMS_Abstract_Database_Store::create() method.
  • Removed the deprecated llms__deleted action hook from the LLMS_Abstract_Database_Store::delete() method.
  • Removed the deprecated llms__updated action hook from the LLMS_Abstract_Database_Store::update() method.
  • Removed the deprecated llms_user_removed_from_membership_level action hook from the LLMS_Student::unenroll() method.
  • Removed the deprecated and misspelled $purchaseable global variable in the lifterlms_template_pricing_table() function.
  • Removed the deprecated and misspelled $purchaseable global variable in the templates/product/pricing-table.php file.
  • Removed the deprecated LLMS_Frontend_Password class.
  • Removed the deprecated LLMS_Install::db_updates() method.
  • Removed the deprecated LLMS_Install::update_notice() method.
  • Removed the deprecated LLMS_Notifications::dispatch_processors() method.
  • Removed the deprecated llms_processors_async_dispatching filter hook from the LLMS_Notifications::__construct() method.
  • Removed the deprecated LLMS_Notifications::$_instance property.
  • Removed the deprecated LLMS_Person_Handler::register() method.
  • Removed the deprecated LLMS_Person_Handler::sanitize_field() method.
  • Removed the deprecated LLMS_Person_Handler::update() method.
  • Removed the deprecated LLMS_Person_Handler::validate_fields() method.
  • Removed the deprecated LLMS_Person_Handler::voucher_toggle_script() method.
  • Removed the deprecated templates/admin/notices/db-update.php file.
  • Removed the deprecated templates/admin/notices/db-updating.php file.
  • Removed the deprecated llms_usernames_blacklist filter hook in the llms_get_usernames_blocklist() function.
  • Removed the deprecated includes/libraries/wp-background-processing/index.php file.
  • Removed the deprecated includes/libraries/wp-background-processing/wp-async-request.php file.
  • Removed the deprecated includes/libraries/wp-background-processing/wp-background-process.php file.
  • Removed the deprecated LLMS_Section::get_next_available_lesson_order() method.
  • Removed the deprecated LLMS_Section::get_order() method.
  • Removed the deprecated LLMS_Section::get_parent_course() method.
  • Removed the deprecated LLMS_Section::set_parent_course() method.
  • Removed the deprecated LLMS_AJAX::get_ajax_data() method.
  • Removed the deprecated LLMS_AJAX::register_script() method.
  • Removed the deprecated LLMS_Interface_Post_Audio interface.
  • Removed the deprecated LLMS_Interface_Post_Sales_Page interface.
  • Removed the deprecated LLMS_Interface_Post_Video interface.
  • Removed the deprecated LLMS_Achievements::$_instance property.
  • Removed the deprecated LLMS_Certificates::$_instance property.
  • Removed the deprecated LLMS_Emails::$_instance property.
  • Removed the deprecated LLMS_Engagements::$_instance property.
  • Removed the deprecated LLMS_Events::$_instance property.
  • Removed the deprecated LLMS_Grades::$_instance property.
  • Removed the deprecated LLMS_Integrations::$_instance property.
  • Removed the deprecated LLMS_Payment_Gateways::$_instance property.
  • Removed the deprecated LLMS_Processors::$_instance property.
  • Removed the deprecated LLMS_Sessions::$_instance property.

What Happens to 5.x?

LifterLMS does not maintain multiple forks. We support and maintain a single stable release.

Upon the public release of LifterLMS 6.0.0, all users are encouraged to update to this version. All future updates to LifterLMS will be updates to version 6.0.0.

Contributing as a Beta Tester

The prereleases are available publicly to anyone interested in helping the core team root out bugs and issues.

Beta testing is not always fun or easy. The prereleases are considered generally stable but you should still use caution and expect to find some issues.

If you find any issues, please let us know by filing a new bug report or submitting a support request.

If you have general comments or feedback on the beta let us know in the comments below or post a reply in GitHub on our 6.0.0 general feedback issue.

# How to Install a LifterLMS Pre-release

There are three ways to install a prerelease version for evaluation and testing. Please do not install prereleases on production websites!

  1. You can subscribe to the beta release channel using the LifterLMS Helper and to start receiving automatic updates for beta releases through the WordPress admin panel.
  2. You can download the latest releases directly from the LifterLMS GitHub repository and install the zip file as a plugin on the WordPress admin panel.

What Should a Beta Tester Look For?

The changes in this release primarily revolve around designing and creating certificates.

If you nave any 3rd-party integrations or themes installed on your site, you should check if developer has tested compatibility with LifterLMS 6.0.0 and, if they haven’t, ask them to do so as soon as possible to ensure there’s no issues when 6.0.0 is released to the stable channel.

If you have any custom code on your site, make sure it continues to function as expected and doesn’t utilize and code removed in this major release.

If you’ve added any CSS or custom code specific to the way certificates are viewed, you should see if it creates any issues with the changes to certificates.

If you encounter any problems you should let your developer know and if you get stuck, file a new bug report or submit a support request and we’ll point you in the right direction.

A Call to 3rd-Party Integration and Theme Developers

If you maintain a LifterLMS theme, plugin, or integration we need your help!

Please install the latest prerelease version and test your code against ours. If you find any issues along the way let us know by reporting an issue in GitHub.

After testing your integration please let us know by commenting on our 6.0.0 feedback issue.

A Call to LifterLMS Experts

If you’re a member of the LifterLMS Experts program please collaborate with us during this beta period and help us ensure the transition to version 6.0.0 is as smooth as possible for your clients.

We’d like you to, at the very least, install and test the beta in your own testing environment.

As an expert we expect that you have a few LifterLMS clients, possibly with custom templates and feature plugins. If your clients (and contracts) allow, please test (or help your clients test) the beta in a safe testing or staging environment.

If you encounter any issues or run tests and find that everything goes well, please let us know by posting in GitHub or by directly emailing your contact at LifterLMS.

Hacktoberfest 2021: 4th Annual LifterLMS Contributor Month

During the month of October, LifterLMS will be celebrating open source with our fourth annual Hacktoberfest event: LifterLMS Contributor Month.

Hacktoberfest is a month-long open source community event organized by DigitalOcean.

LifterLMS will be participating in Hacktoberfest as a project maintainer. We encourage anyone to submit pull requests to any of the LifterLMS codebases found on GitHub.

Why Contribute

Contributing to open source projects is a great way to learn, practice your skills, meet new people, have your voice heard within a community, and build a public reputation you can take with you outside the project.

Who can Contribute

Anyone with a GitHub account can submit a pull request. If you don’t have one, you can sign up for free.

You don’t have to be a developer or coder to contribute. LifterLMS will accept contributions from QA testers, user experience and interface designers, documenters, and more! If you’re interested in participating but you don’t know how, get in touch with us and we’ll be happy to get you pointed in the right direction based on your unique set of skills and talents.

How to Contribute

Whether you’re a designer, developer, want to help with documentation, or something else entirely we have a task for you!

If you’re looking to write or improve new code, tests, or documentation, head over to our the LifterLMS GitHub repo and start looking through our existing issues. We’re using the special hacktoberfest tag for issues we feel would be ideal for first-time or new contributors to tackle during this event. You can view all these issues here. You could also check out our good first time contributor issues here.

If you plan to work on an issue please comment and let us know. This will help prevent collisions or duplicate efforts with other contributors.

Please review our contributor’s guidelines and ensure you’re adhering to our coding and documentation standards before submitting a PR!

You may also want to familiarize yourself with how to write and submit pull requests, and DigitalOcean has a great guide you can review here.

Finally, make sure you sign up for the official Hacktoberfest event so your eligible to win an official limited edition event shirt.

Rewards for Contributions

In addition to the satisfaction inherent in contributing to an open source project, we’ll be awarding prizes to anyone who contributes to LifterLMS during the month of October.

Every accepted pull request will provide you with an entry into a drawing for a free LifterLMS add-on license of your choice valued up to $360.

Anyone who submits three or more accepted pull requests will receive a LifterLMS t-shirt, hat, or mug (your choice).

All pull requests will be reviewed by the LifterLMS team by November 19, 2020. Only accepted pull requests count towards your contribution count.

Resources for Contributors

During the month of October we have several events to help support anyone looking to contribute:

Office Hours

In addition to our weekly Monday Developer Office Hours held in Slack in the #developers channel, we’ll also be hosting short dev chats on Wednesdays and Fridays through the month of October.

These informal chats are a great opportunity to interact with LifterLMS core developers and other contributors.

If you have any questions about any contributions you want to make, if you’re just getting started, or if you want to just say hello and keep us company, these dev chats are for you (and you don’t have to be a developer to join).

Kickoff Event

On Friday, October 1 we’ll be hosting a special hour-long office hours. This event is a great opportunity to start Hacktoberfest off with a bang.

Check out our contributor’s calendar for more details on these events.