Difference between revisions of "Release notes for WeBWorK 2.18"

From WeBWorK_wiki
Jump to navigation Jump to search
 
(72 intermediate revisions by 5 users not shown)
Line 1: Line 1:
Note that WeBWorK 2.18 has not yet been released. Currently this page is a work in progress.
 
 
 
== New WeBWorK Features ==
 
== New WeBWorK Features ==
* The overall layout of WeBWorK has changed a bit with the sidebar navigation menu scrolling independently of the main content.
 
  +
* UI Changes for WeBWorK
* The LTI module has been updated to support version 1.3, also called LTI Advantage tools, but LTI version 1.1 can still be used.
 
  +
** The overall layout of WeBWorK has changed a bit with the sidebar navigation menu scrolling independently of the main content.
* A new status called "observer" has been added. This can be used for TAs and professors or others to ensure that they don't show up in scoring, statistics and student progress views.
 
  +
** The page Help (which was a ? icon in the navigation list) has been moved to a ? next to the page title. The page help for each page has been improved.
* Gateway quizzes are now called Tests. In addition, there are other changes:
 
  +
** The instructor Tools is more clearly a separate page rather than a Header for other tools.
** (Are there other notable quiz changes?)
 
  +
** The Set Assigner and Problem Editor can now be directly accessed from the sidebar navigation.
* The Student Progress page has the option for 'Time remaining' for tests.
+
** The Student Progress page has a new option to show 'Time remaining' for tests.
* Producing a hardcopy has been revamped. It now uses the exam class from latex. (Update documentation for hardcopy?)
+
** The Stats page has been rewritten for layout and clarity.
* There is the ability to save/retrieve data within pg problems on a user-set level. (Needs documentation)
+
** PG problem editor improvements
* Essay answers
+
*** The layout of the page is updated to include a source editor and viewer in a side-by-side manner.
* The date/time widget (flatpicker) now includes a "Now" and "Today" button to set the date/time to now or adjust the date only respectively.
+
*** There is a new Generate Hardcopy tab from which you can generate a PDF displaying only the problem being edited. This makes it much easier to test hardcopy generation for problems.
* The PG problem editor improvements
+
*** There are new problem viewing output formats (TeX and PTX -- PreTeXt).
** There is a new format to include a source editor and viewer in a side-by-side manner.
+
*** The Update/New Version tab options are now called Save/Save As...
** The update/new version tab options are now called Save/Save As...
+
*** There are options to save backups for pg problems. (documentation?)
** There is the option to save backups for pg problems. There is a new Course Configuration and options in the "Revert" tab. (documentation?)
+
** The date/time widget (flatpicker) now includes a "Now" and "Today" button to set the date/time to now or adjust the date only respectively.
* The Stats page has been rewritten for layout and clarity.
+
* A new LTI version 1.3 authentication module has been added that utilizes some of the LTI Advantage tool set. The LTI version 1.1 authentication module is still available.
* When using the problem grader, there is now an option for using points (default), percent or both. This is a new options in the Problem Answers tab of the Course Configuration.
+
* A new status called "observer" has been added. This can be used for TAs and professors or others to ensure that they don't show up in scoring, statistics and student progress views. They will be shown in green in the Classlist Editor.
  +
* Gateway quizzes are now called Tests.
  +
* Hardcopy generation has been revamped. A new hardcopy theme system has been devised. Each theme is contained in a single XML file. These theme files can be edited from the PG problem editor. There are eleven themes distributed with webwork2. See [[Hardcopy Themes]].
  +
* The ability to save/retrieve data within pg problems on a user-set level has been added. (Needs documentation)
  +
* Essay answers
  +
** There is now an equation editor to insert math via MathQuill (similar in nature to the MathView equation editor).
  +
** This equation editor is also available for manual graders.
  +
* When using the problem grader, there is now an option for using points (default), percent or both. This is a new option in the Problem Display/Answer Checking tab of the Course Configuration.
  +
* The Wiris Math Editor has been removed. It was never functional and input is better handled by MathQuill.
   
 
== New PG Features ==
 
== New PG Features ==
  +
  +
* Built-in Features
  +
** Images can be inserted in PGML with the code <tt>[!alt text!]{image source}{optional width}{optional height}</tt>. See [https://webwork.maa.org/wiki/Images_-_PGML the wiki page on PGML images] and a [https://openwebwork.github.io/pg-docs/sample-problems/problem-techniques/Images.html sample problem].
   
 
* New Macros:
 
* New Macros:
** plotly3D (documentation)
 
  +
** There is a new macro for plotting three dimensional curves and surfaces using the plotly.js JavaScript library. See the [https://openwebwork.github.io/pg-docs/pod/pg/macros/graph/plotly3D.html POD for plotly3D.pl] and sample problems on [https://openwebwork.github.io/pg-docs/sample-problems/Parametric/SpaceCurveGraph.html space curves] and [https://openwebwork.github.io/pg-docs/sample-problems/Parametric/SurfaceGraph.html surface graphs].
** random names with pronouns (documentation)
 
  +
** A new macro allows you to generate a random name for a person. Methods are provided to insert the correct pronouns (he, she, or they) for that name into sentences. See the [https://openwebwork.github.io/pg-docs/pod/pg/macros/misc/randomPerson.html POD for randomPerson.pl] and a [https://openwebwork.github.io/pg-docs/sample-problems/Misc/RandomPerson.html sample problem].
** MathObject checkboxes (Need a LINK)
 
  +
** There is a new MathObject checkboxes macro for creating multiple choice checkbox answers. See the [https://openwebwork.github.io/pg-docs/pod/pg/macros/parsers/parserCheckboxList.html POD for parserCheckBoxList.pl] and a [https://openwebwork.github.io/pg-docs/sample-problems/Misc/MultipleChoiceCheckbox.html sample problem].
** parserRadioMultiAnswer--this allows for a mixture of radio buttons and within each, other inputs. (Need a LINK)
 
  +
** A new macro allows authors to tie a radio answer together with several answer blanks that are dependent on the radio choice. See the [https://openwebwork.github.io/pg-docs/pod/pg/macros/parsers/parserRadioMultiAnswer.html POD for parserRadioMultiAnswer.pl] and a [https://openwebwork.github.io/pg-docs/sample-problems/LinearAlgebra/MatrixOperations.html sample problem].
** Non-decimal base context (documentation)
 
  +
** There is a new linear relation context for lines and linear inequalities. See the [https://openwebwork.github.io/pg-docs/pod/pg/macros/parsers/parserLinearRelation.html POD for parserLinearRelation.pl] and a [https://openwebwork.github.io/pg-docs/sample-problems/Algebra/LinearInequality.html sample problem].
  +
** A new specialTrigValues.pl macro provides the standard values of trig functions on the unit circle. See the [https://openwebwork.github.io/pg-docs/pod/pg/macros/math/specialTrigValues.html POD for specialTrigValues.pl] and a [https://openwebwork.github.io/pg-docs/sample-problems/Trig/SpecialTrigValues.html sample problem].
   
* Updates to existing macros
+
* Updates to existing macros:
* niceTables.pl has been completely overhauled.
+
** The niceTables.pl macro has been completely overhauled. See the [https://openwebwork.github.io/pg-docs/pod/pg/macros/ui/niceTables.html POD for niceTables.pl] and a [https://openwebwork.github.io/pg-docs/sample-problems/problem-techniques/DataTables.html sample problem].
** New features:...
+
** Authors can now specify values for checkbox and radio answers added via the parserCheckboxList.pl and parserRadioButtons.pl macros that will be displayed on the past answers page (instead of B0, B1, etc., as was previously shown). See the [https://openwebwork.github.io/pg-docs/pod/pg/macros/parsers/parserCheckboxList.html POD for parserCheckboxList.pl] and [https://openwebwork.github.io/pg-docs/pod/pg/macros/parsers/parserRadioButtons.html POD for parserRadioButtons.pl].
** Changes?
+
** The graphTool macro has been updated:
* Labels for checkbox/radio answers (documentation)
+
*** There is now a number line mode for graphing intervals.
* The graphtool now has a number line mode (documentation)
+
*** There are default answer checkers that make writing graph tool problems easier.
* DropDown option to Popup macro. (documentation)
+
*** A <tt>generateAnswerGraph</tt> method has been added which shows the correct answer graph. This is useful for solutions.
  +
*** A dynamic help system has been implemented to help students use the graph tool.
  +
*** See the following sample problems: [https://openwebwork.github.io/pg-docs/sample-problems/Algebra/GraphToolNumberLine.html Number Line Mode], [https://openwebwork.github.io/pg-docs/sample-problems/Algebra/GraphToolCircle.html Plotting a Circle], [https://openwebwork.github.io/pg-docs/sample-problems/Algebra/GraphToolCubic.html Plotting a Cubic], [https://openwebwork.github.io/pg-docs/sample-problems/Algebra/GraphToolLine.html Plotting a Line], [https://openwebwork.github.io/pg-docs/sample-problems/Algebra/GraphToolPoints.html Plotting Points]
  +
*** Also see the [https://openwebwork.github.io/pg-docs/pod/pg/macros/graph/parserGraphTool.html POD for parserGraphTool.pl].
  +
** There is a new DropDown method provided by the parserPopup.pl macro. See the [https://openwebwork.github.io/pg-docs/pod/pg/macros/parsers/parserPopUp.html POD for parserPopUp.pl] and a [https://openwebwork.github.io/pg-docs/sample-problems/problem-techniques/SimplePopUp.html sample problem].
  +
  +
* Mathquill changes
  +
** Typing <code>deg</code> will automatically turn into a degree symbol. So for example, if <code>23degF</code> is typed it will become <code>23°F</code>.
  +
** Trigonometric functions such as sin, cos, tan, arcsin, arccos, etc, and logarithmic functions ln and log will now automatically wrap the function argument in parentheses. Exponents (or subscripts) on these functions can be typed before the parentheses or after.
  +
** Double and triple click selection behavior has been implemented for MathQuill inputs.
   
 
* Changes to Units:
 
* Changes to Units:
** degrees (celsius, Fahrenheit, Kelvin) and mathquill
 
  +
** Students can enter °C or °F instead of degC or degF for Celsius and Fahrenheit degrees. This can be done easily if MathQuill is enabled as described above. Students may also paste unicode characters for these from other websites.
** new units: angstroms, microsecond, nanosecond, picometre, femtometre, tera electron-volt, Megawatt, milliwatt, milliCoulomb, microCoulomb, nanoCoulomb, milli-ampere, milli-tesla, Becquerel.
+
** Several new units have been added, including angstroms, microseconds, nanoseconds, picometers, femtometers, tera electron volts, Megawatts, milliwatts, milliCoulombs, microCoulombs, nanoCoulombs, milli-amperes, milli-teslas, Becquerels, (US) gallons, (US) quarts, and (US) pints.
* Note: the AnswerFormatHelp macro has been deprecated. Instead, the built-in helpLink should be used instead. (LINKS!!)
+
** Many unicode characters for units have been added.
  +
** More forms of units are now allowed including plural forms. For example, one may enter <code>30 ft</code>, <code>30 feet</code>, or <code>1 foot</code>.
   
* Mathquill changes
 
  +
== Deprecated PG ==
* AnswerHelpFormat macro has been deprecated. Authors should now use <tt>helpLink</tt> function instead.
 
  +
* unionInclude macro has been deprecated. This was used for random problems. The built-in XXX should be used instead.
 
  +
* Deprecated Macros:
  +
** <tt>AnswerFormatHelp.pl</tt>: Authors should now use the [https://openwebwork.github.io/pg-docs/pod/pg/macros/core/PGbasicmacros.html#helpLink-type-display_text-helpurl helpLink] function from <tt>PGbasicmacros.pl</tt> instead.
  +
** <tt>unionInclude.pl</tt>: This was used for random problems.
  +
** Although not officially deprecated at this point, <tt>unionTables.pl</tt> should not be used due to accessibility and html validation issues. Use <tt>niceTables.pl</tt> instead.
  +
  +
* Other Deprecation
  +
** <tt>$BEGIN_ONE_COLUMN</tt> and <tt>$END_ONE_COLUMN</tt>: These have often been used in set header files. These variables are now defined to be the empty string, and no longer actually start or end one column mode. Set headers are now always inserted in one column mode in hardcopy.
   
 
== Security/Advanced Features ==
 
== Security/Advanced Features ==
   
The backend of WeBWorK has been relying on apache and mod_perl for nearly two decades. However, mod_perl has not been updated since 2011 and many linux distros are no longer supporting mod_perl in an easy way. The server part of WeBWorK is now functioning with [https://mojolicious.org Mololicious], which includes a standalone web server (hypnotoad) written completely in perl.
+
The backend of WeBWorK has been relying on mod_perl for nearly two decades. However, mod_perl is deprecated and has not been updated since 2011. Many Linux distributions no longer support mod_perl, and it is becoming increasing difficult to install it on some of them. The server part of WeBWorK is now implemented with [https://mojolicious.org Mojolicious], which includes a stand alone web server (hypnotoad) written completely in Perl.
   
Mojolicious has some nice modern route handling features...
 
  +
== Upgrade Instructions ==
  +
* It is recommended to back up your current webwork2 configuration files before proceeding. Do this with
  +
*: <code>> cp -r /opt/webwork/webwork2/conf /opt/webwork/webwork2/conf.bak</code>
  +
* Now update the webwork2 and pg code. For this run
  +
*: <code>> cd /opt/webwork/webwork2</code>
  +
*: <code>> git fetch origin</code>
  +
*: <code>> git checkout -b WeBWorK-2.18+ WeBWorK-2.18+</code>
  +
*: <code>> git pull</code>
  +
*: <code>> cd /opt/webwork/pg</code>
  +
*: <code>> git fetch origin</code>
  +
*: <code>> git checkout -b PG-2.18+ PG-2.18+</code>
  +
*: <code>> git pull</code>
  +
* Update the javascript and css assets for webwork2 and pg with
  +
*: <code>> cd /opt/webwork/webwork2/htdocs</code>
  +
*: <code>> npm ci</code>
  +
*: <code>> cd /opt/webwork/pg/htdocs</code>
  +
*: <code>> npm ci</code>
  +
* The following perl packages will need to be installed (run <code>bin/check_modules.pl</code> to ensure you have all programs/modules)
  +
** Mojolicious (on Ubuntu 22.04 install the package libmojolicious-perl, on earlier versions of Ubuntu install from cpan)
  +
** Future::AsyncAwait (on Ubuntu 22.04 install the package libfuture-asyncawait-perl, on earlier versions of Ubuntu install from cpan)
  +
** SVG (on Ubuntu install libsvg-perl)
  +
** Data::Structure::Util (on Ubuntu install libdata-structure-util-perl)
  +
** Crypt::JWT (on Ubuntu install libcrypt-jwt-perl)
  +
** Crypt::PK::RSA (on Ubuntu install libcryptx-perl)
  +
** Math::Random::Secure (on Ubuntu install libmath-random-secure-perl)
  +
** Mojolicious::Plugin::NotYAMLConfig (this is included in libmojolicious-perl on Ubuntu 22.04, on earlier versions of Ubuntu install from cpan)
  +
** Mojolicious::Plugin::RenderFile (on Ubuntu install libmojolicious-plugin-renderfile-perl)
  +
** Minion (on Ubuntu install libminion-perl)
  +
** Minion::Backend::SQLite (on Ubuntu install libminion-backend-sqlite-perl)
  +
** Perl::Tidy (install using cpanm with <code>sudo cpanm Perl::Tidy@20220613</code>)
  +
** Pandoc and the pandoc application (on Ubuntu install libpandoc-wrapper-perl for both)
  +
* Hardcopy generation now requires that the <code>mhchem</code> LaTeX package be installed. (on Ubuntu install texlive-science.)
  +
* Delete the old apache2 configuration file /opt/webwork/webwork2/conf/webwork.apache2.4-config and the link to it in /etc/apache2/conf-enabled with
  +
*: <code>> rm /opt/webwork/webwork2/conf/webwork.apache2.4-config</code>
  +
*: <code>> sudo rm /etc/apache2/conf-enabled/webwork.conf</code>
  +
* Compare your site.conf file to site.conf.dist, and your localOverrides.conf file to localOverrides.conf.dist and update as needed.
  +
** Note that if you have used lighttpd to serve static files previously, then you should remove anything related to that from your configuration files. Although it is still technically possible to do that if you are proxying via apache2, that is not recommended, and we do not offer instructions on how to do so.
  +
* Enable new apache2 modules that are needed with
  +
*: <code>> sudo a2enmod proxy_http headers</code>
  +
* Switch from mpm_prefork to mpm_event. This step is optional but recommended. The only reason we have been using mpm_prefork is because it is required for mod_perl2. The mpm_event module is a threaded module that is better with memory management and high server loads. Another option that may be better in some cases is the mpm_worker module. In general it is not recommended to use the mpm_prefork module anymore. There are no advantages, only disadvantages.
  +
** Disable the apache2 mpm_prefork module and enable mpm_event with
  +
*: <code>> sudo a2dismod mpm_prefork</code>
  +
*: <code>> sudo a2enmod mpm_event</code>
  +
** Adjust the parameters in the file /etc/apache2/mods-available/mpm_event.conf as needed. See [[Installation Manual for 2.18 on Ubuntu#Edit mpm_event.conf]] for details.
  +
* Next set up the new apache2 configuration.
  +
*: <code>> cp /opt/webwork/webwork2/conf/webwork2.apache2.4.dist.conf /opt/webwork/webwork2/conf/webwork2.apache2.4.conf</code>
  +
*: <code>> sudo ln -s /opt/webwork/webwork2/conf/webwork2.apache2.4.conf /etc/apache2/conf-enabled/webwork2.conf</code>
  +
* Restart apache2 to make all of the apache2 changes take effect with
  +
*: <code>> sudo systemctl restart apache2</code>
  +
* Note that at this point webwork2 is not running, and you will not be able to access the usual pages. The webwork2 service now needs to be set up for this to work. Start by copying the systemd service .dist file for webwork2.
  +
*: <code>> cp /opt/webwork/webwork2/conf/webwork2.dist.service /opt/webwork/webwork2/conf/webwork2.service</code>
  +
* Now enable and start the service with
  +
*: <code>> sudo systemctl enable /opt/webwork/webwork2/conf/webwork2.service</code>
  +
*: <code>> sudo systemctl start webwork2</code>
  +
* You should now be able to visit <nowiki>http://your.server.edu/webwork2</nowiki> (the usual url for your server) and see webwork2 in action.
  +
* Note that anytime prior to this upgrade that you would have restarted apache2 to make changes to code or configuration take effect, you will instead now run <code>sudo systemctl restart webwork2</code>. You will rarely need to restart apache2.
  +
* Make sure to upgrade courses from the admin course to relegate changes to the database.
  +
* If you have course archives located in /opt/webwork/courses, then you will need to move them to /opt/webwork/courses/admin/archives. That directory probably will not exist, so you will also need to create it. You can do this with
  +
*: <code>sudo mkdir /opt/webwork/courses/admin/archives</code>
  +
*: <code>sudo cp /opt/webwork/courses/*.tar.gz /opt/webwork/courses/admin/archives/</code>
  +
*: These files will also now be available from the "File Manager" in the admin course.
  +
* This final step is optional. Some long running processes are not directly run by the webwork2 app. Particularly mass grade updates via LTI and sending of instructor emails. Instead these tasks are executed via the webwork2 Minion job queue. If the users of your system will be utilizing either of those features, then you will need to set up the webwork2 job queue. If those features will not be utilized by the users of your system, then you can skip this step. See [[Installation Manual for 2.18 on Ubuntu#Set Up the Webwork2 Job Queue]] for instructions on how to set up the job queue.
   
(Include some security features?)
 
  +
== Release Details ==
  +
<pre>
  +
WeBWorK
  +
Online Homework Delivery System
  +
Version 2.18
   
(Link to upgrade instructions)
 
  +
Copyright 2000-2023, The WeBWorK Project
  +
All rights reserved.
   
== Upgrade Instructions ==
 
  +
Details
  +
-------
  +
  +
Release date: July 20, 2023
  +
  +
Commits: The webwork2 main branch was modified by 792 commits in merging the WeBWorKk-2.18 branch into main, and the pg main branch was modified by 504 commits in merging the PG-2.18 branch into main.
   
  +
Github repository: https://github.com/openwebwork
  +
Modules: webwork2 pg
   
  +
Release team:
  +
* Glenn Rice, Missouri Western State University
  +
* Danny Glin, University of Calgary, technical manager for The WeBWorK Project (TWP)
  +
* K. Andrew Parker, New York City College of Technology (“City Tech”), City University of New York
  +
* Nathan Wallach, Technion - Israel Institute of Technology
  +
* Alex Jordan, Portland Community College (PCC)
  +
* Peter Staab, Fitchburg State University
  +
* Mike Gage, University of Rochester
  +
* Jaimos Skriletz, Boise State University
  +
</pre>
   
 
[[Category:Release_Notes]]
 
[[Category:Release_Notes]]

Latest revision as of 13:49, 12 August 2024

New WeBWorK Features

  • UI Changes for WeBWorK
    • The overall layout of WeBWorK has changed a bit with the sidebar navigation menu scrolling independently of the main content.
    • The page Help (which was a ? icon in the navigation list) has been moved to a ? next to the page title. The page help for each page has been improved.
    • The instructor Tools is more clearly a separate page rather than a Header for other tools.
    • The Set Assigner and Problem Editor can now be directly accessed from the sidebar navigation.
    • The Student Progress page has a new option to show 'Time remaining' for tests.
    • The Stats page has been rewritten for layout and clarity.
    • PG problem editor improvements
      • The layout of the page is updated to include a source editor and viewer in a side-by-side manner.
      • There is a new Generate Hardcopy tab from which you can generate a PDF displaying only the problem being edited. This makes it much easier to test hardcopy generation for problems.
      • There are new problem viewing output formats (TeX and PTX -- PreTeXt).
      • The Update/New Version tab options are now called Save/Save As...
      • There are options to save backups for pg problems. (documentation?)
    • The date/time widget (flatpicker) now includes a "Now" and "Today" button to set the date/time to now or adjust the date only respectively.
  • A new LTI version 1.3 authentication module has been added that utilizes some of the LTI Advantage tool set. The LTI version 1.1 authentication module is still available.
  • A new status called "observer" has been added. This can be used for TAs and professors or others to ensure that they don't show up in scoring, statistics and student progress views. They will be shown in green in the Classlist Editor.
  • Gateway quizzes are now called Tests.
  • Hardcopy generation has been revamped. A new hardcopy theme system has been devised. Each theme is contained in a single XML file. These theme files can be edited from the PG problem editor. There are eleven themes distributed with webwork2. See Hardcopy Themes.
  • The ability to save/retrieve data within pg problems on a user-set level has been added. (Needs documentation)
  • Essay answers
    • There is now an equation editor to insert math via MathQuill (similar in nature to the MathView equation editor).
    • This equation editor is also available for manual graders.
  • When using the problem grader, there is now an option for using points (default), percent or both. This is a new option in the Problem Display/Answer Checking tab of the Course Configuration.
  • The Wiris Math Editor has been removed. It was never functional and input is better handled by MathQuill.

New PG Features

  • Mathquill changes
    • Typing deg will automatically turn into a degree symbol. So for example, if 23degF is typed it will become 23°F.
    • Trigonometric functions such as sin, cos, tan, arcsin, arccos, etc, and logarithmic functions ln and log will now automatically wrap the function argument in parentheses. Exponents (or subscripts) on these functions can be typed before the parentheses or after.
    • Double and triple click selection behavior has been implemented for MathQuill inputs.
  • Changes to Units:
    • Students can enter °C or °F instead of degC or degF for Celsius and Fahrenheit degrees. This can be done easily if MathQuill is enabled as described above. Students may also paste unicode characters for these from other websites.
    • Several new units have been added, including angstroms, microseconds, nanoseconds, picometers, femtometers, tera electron volts, Megawatts, milliwatts, milliCoulombs, microCoulombs, nanoCoulombs, milli-amperes, milli-teslas, Becquerels, (US) gallons, (US) quarts, and (US) pints.
    • Many unicode characters for units have been added.
    • More forms of units are now allowed including plural forms. For example, one may enter 30 ft, 30 feet, or 1 foot.

Deprecated PG

  • Deprecated Macros:
    • AnswerFormatHelp.pl: Authors should now use the helpLink function from PGbasicmacros.pl instead.
    • unionInclude.pl: This was used for random problems.
    • Although not officially deprecated at this point, unionTables.pl should not be used due to accessibility and html validation issues. Use niceTables.pl instead.
  • Other Deprecation
    • $BEGIN_ONE_COLUMN and $END_ONE_COLUMN: These have often been used in set header files. These variables are now defined to be the empty string, and no longer actually start or end one column mode. Set headers are now always inserted in one column mode in hardcopy.

Security/Advanced Features

The backend of WeBWorK has been relying on mod_perl for nearly two decades. However, mod_perl is deprecated and has not been updated since 2011. Many Linux distributions no longer support mod_perl, and it is becoming increasing difficult to install it on some of them. The server part of WeBWorK is now implemented with Mojolicious, which includes a stand alone web server (hypnotoad) written completely in Perl.

Upgrade Instructions

  • It is recommended to back up your current webwork2 configuration files before proceeding. Do this with
    > cp -r /opt/webwork/webwork2/conf /opt/webwork/webwork2/conf.bak
  • Now update the webwork2 and pg code. For this run
    > cd /opt/webwork/webwork2
    > git fetch origin
    > git checkout -b WeBWorK-2.18+ WeBWorK-2.18+
    > git pull
    > cd /opt/webwork/pg
    > git fetch origin
    > git checkout -b PG-2.18+ PG-2.18+
    > git pull
  • Update the javascript and css assets for webwork2 and pg with
    > cd /opt/webwork/webwork2/htdocs
    > npm ci
    > cd /opt/webwork/pg/htdocs
    > npm ci
  • The following perl packages will need to be installed (run bin/check_modules.pl to ensure you have all programs/modules)
    • Mojolicious (on Ubuntu 22.04 install the package libmojolicious-perl, on earlier versions of Ubuntu install from cpan)
    • Future::AsyncAwait (on Ubuntu 22.04 install the package libfuture-asyncawait-perl, on earlier versions of Ubuntu install from cpan)
    • SVG (on Ubuntu install libsvg-perl)
    • Data::Structure::Util (on Ubuntu install libdata-structure-util-perl)
    • Crypt::JWT (on Ubuntu install libcrypt-jwt-perl)
    • Crypt::PK::RSA (on Ubuntu install libcryptx-perl)
    • Math::Random::Secure (on Ubuntu install libmath-random-secure-perl)
    • Mojolicious::Plugin::NotYAMLConfig (this is included in libmojolicious-perl on Ubuntu 22.04, on earlier versions of Ubuntu install from cpan)
    • Mojolicious::Plugin::RenderFile (on Ubuntu install libmojolicious-plugin-renderfile-perl)
    • Minion (on Ubuntu install libminion-perl)
    • Minion::Backend::SQLite (on Ubuntu install libminion-backend-sqlite-perl)
    • Perl::Tidy (install using cpanm with sudo cpanm Perl::Tidy@20220613)
    • Pandoc and the pandoc application (on Ubuntu install libpandoc-wrapper-perl for both)
  • Hardcopy generation now requires that the mhchem LaTeX package be installed. (on Ubuntu install texlive-science.)
  • Delete the old apache2 configuration file /opt/webwork/webwork2/conf/webwork.apache2.4-config and the link to it in /etc/apache2/conf-enabled with
    > rm /opt/webwork/webwork2/conf/webwork.apache2.4-config
    > sudo rm /etc/apache2/conf-enabled/webwork.conf
  • Compare your site.conf file to site.conf.dist, and your localOverrides.conf file to localOverrides.conf.dist and update as needed.
    • Note that if you have used lighttpd to serve static files previously, then you should remove anything related to that from your configuration files. Although it is still technically possible to do that if you are proxying via apache2, that is not recommended, and we do not offer instructions on how to do so.
  • Enable new apache2 modules that are needed with
    > sudo a2enmod proxy_http headers
  • Switch from mpm_prefork to mpm_event. This step is optional but recommended. The only reason we have been using mpm_prefork is because it is required for mod_perl2. The mpm_event module is a threaded module that is better with memory management and high server loads. Another option that may be better in some cases is the mpm_worker module. In general it is not recommended to use the mpm_prefork module anymore. There are no advantages, only disadvantages.
    • Disable the apache2 mpm_prefork module and enable mpm_event with
    > sudo a2dismod mpm_prefork
    > sudo a2enmod mpm_event
  • Next set up the new apache2 configuration.
    > cp /opt/webwork/webwork2/conf/webwork2.apache2.4.dist.conf /opt/webwork/webwork2/conf/webwork2.apache2.4.conf
    > sudo ln -s /opt/webwork/webwork2/conf/webwork2.apache2.4.conf /etc/apache2/conf-enabled/webwork2.conf
  • Restart apache2 to make all of the apache2 changes take effect with
    > sudo systemctl restart apache2
  • Note that at this point webwork2 is not running, and you will not be able to access the usual pages. The webwork2 service now needs to be set up for this to work. Start by copying the systemd service .dist file for webwork2.
    > cp /opt/webwork/webwork2/conf/webwork2.dist.service /opt/webwork/webwork2/conf/webwork2.service
  • Now enable and start the service with
    > sudo systemctl enable /opt/webwork/webwork2/conf/webwork2.service
    > sudo systemctl start webwork2
  • You should now be able to visit http://your.server.edu/webwork2 (the usual url for your server) and see webwork2 in action.
  • Note that anytime prior to this upgrade that you would have restarted apache2 to make changes to code or configuration take effect, you will instead now run sudo systemctl restart webwork2. You will rarely need to restart apache2.
  • Make sure to upgrade courses from the admin course to relegate changes to the database.
  • If you have course archives located in /opt/webwork/courses, then you will need to move them to /opt/webwork/courses/admin/archives. That directory probably will not exist, so you will also need to create it. You can do this with
    sudo mkdir /opt/webwork/courses/admin/archives
    sudo cp /opt/webwork/courses/*.tar.gz /opt/webwork/courses/admin/archives/
    These files will also now be available from the "File Manager" in the admin course.
  • This final step is optional. Some long running processes are not directly run by the webwork2 app. Particularly mass grade updates via LTI and sending of instructor emails. Instead these tasks are executed via the webwork2 Minion job queue. If the users of your system will be utilizing either of those features, then you will need to set up the webwork2 job queue. If those features will not be utilized by the users of your system, then you can skip this step. See Installation Manual for 2.18 on Ubuntu#Set Up the Webwork2 Job Queue for instructions on how to set up the job queue.

Release Details

                                    WeBWorK                                    
                         Online Homework Delivery System                        
                                  Version 2.18                          

                    Copyright 2000-2023, The WeBWorK Project                    
                              All rights reserved.                              

Details
-------

Release date:  July 20, 2023

Commits: The webwork2 main branch was modified by 792 commits in merging the WeBWorKk-2.18 branch into main, and the pg main branch was modified by 504 commits in merging the PG-2.18 branch into main.

Github repository:  https://github.com/openwebwork
Modules:            webwork2 pg

Release team:
* Glenn Rice, Missouri Western State University
* Danny Glin, University of Calgary, technical manager for The WeBWorK Project (TWP)
* K. Andrew Parker, New York City College of Technology (“City Tech”), City University of New York
* Nathan Wallach, Technion - Israel Institute of Technology
* Alex Jordan, Portland Community College (PCC)
* Peter Staab, Fitchburg State University
* Mike Gage, University of Rochester
* Jaimos Skriletz, Boise State University