## Description:
The mission of JSPWiki is the creation and maintenance of software related to
Leading open source WikiWiki engine, feature-rich and built around standard 
JEE components (Java, servlets, JSP).

## Issues:
There are no issues requiring board attention.

## Membership Data:
Apache JSPWiki was founded 2013-07-17 (9 years ago)
There are currently 14 committers and 8 PMC members in this project.
The Committer-to-PMC ratio is 7:4.

Community changes, past quarter:
- No new PMC members. Last addition was Dave Koelmeyer on 2016-04-06.
- No new committers. Last addition was Dave Koelmeyer on 2016-04-06.

## Project Activity:
Again, quiet period, as noted on the previous report, we have switched
to 2.12.0, which requires JDK-11, upgraded some libraries, and we have 
fixed several XSS vulnerabilities present on some JSPWiki plugins, 
which will warrant a CVE.

We got another vulnerability report, which was rejected.

Last release was 2.11.3 on 2022-08-02.

## Community Health:
Traffic on both MLs had an increase compared with last quarter, most
due to last quarter being an almost no activity quarter. 

There is enough people to provide project oversight.
