100 PaperCuts

Project Goal

The aim of the 100 Papercuts project is to identify and fix high-visibility, easy to correct bugs in Liferay Portal. It is driven by the wider Liferay community, with volunteers working to identify, prioritize, assign, and resolve known issues.

Project Team


The Process

1. Identify issues.  The community has always been encouraged to vote for issues that they would like to see fixed sooner rather than later.  This has allowed Liferay program managers to properly prioritize bugs based on community feedback.  With the 100 Paper Cuts program, voting has become even more important.  We use the same voting system to identify high visibility, easy-to-fix bugs.  The 100 Paper Cuts process begins with a period of time in which additional voting is encouraged.  If you wish to vote for issues, please read the voting process.

2. Assign and Fix.  During a 2-week period, approximately 10 issues are selected and fixed based on their impact and effort required to fix.  We aim for selecting bugs that take no more than 1 developer-day to fix.  This period is called a "Community Sprint" and represents a fixed time amount in which to fix the identified issues.  Once the sprint period is over, the process is repeated.

3. Track progress.  During and after the sprint, issues are tracked for progress, until the issue is merged with one or more Liferay releases.

Fixing Issues

The Community Contribute page documents how to contribute to Liferay.  For the 100 PC program, contributions are in the form of bug fixes.  The goal of the program is to get the bug into the Community Resolved state.  Once in this state, Liferay staff take over to shephard the fix into the source base.  For more information on development and bugfixing on Liferay, see the following resources:

To fix a papercut:

1. Make sure you have an account on issues.liferay.com. If you do not, sign up for one (it's free!).

2. Browse the list of open issues.  For any issue you feel is a papercut, regardless of whether or not you want to personally work on it, you should mark the issue by adding the following text in a comment on the issue: "This issue is a backlog candidate for the 100 PaperCuts program. Please consider participating! See http://liferay.com/community/100-papercuts".

3. Select an issue from the backlog to work on for a given sprint.

4. Read and understand the issue you want to work on.  Attempt to reproduce the issue on the latest (trunk) version of Liferay.  If you cannot reproduce it on trunk, and the bug was reported against an earlier version, attempt to reproduce it using that version. If you can reproduce it on the earlier version, but not on the latest version, then the bug is most likely fixed!  Add a comment on the bug indicating you think it is fixed, and if the original submitter agrees, Liferay will handle the resolution of this issue.

5. If you CAN reproduce it on the latest revision, then the first thing to do is to add a comment to the issue using the template: "This issue is currently being addressed in Sprint X the 100 PaperCuts program.  Please see http://liferay.com/community/100-papercuts".  This comment will allow us to filter and find papercuts using JIRA filters

6. Fix the issue using the above development guidelines and tools.

7. Once the issue is fixed, you must generate a patch using svn diff > LPS-[ISSUE]-build-[SVN REVISION].patch. For example, to generate a patch for LPS-12322 on SVN revision 43533, the filename would be LPS-12322-build-43533.patch.

8. Attach this patch to the issue using JIRA's attachment feature.  Along with the patch, add a comment explaining the nature of your fix.  Also, ask the original submitter to review and test your fix, and tell them to click the "Accept Contribution" option (see below) once they have verified your fix.

9. Important!  Click the "Contribute Solution" link on the issue.  This is an indication that the issue has been fixed by you, and it is now in the hands of the original submitter of the bug. It is their responsibility to review and test your fix, and click "Accept Contribution".  This will move the ticket into the "Community Resolved" state, where Liferay Program Management will take over to shephard it into a future Liferay release.  At this point, you are done!  Congratulations!

10. If the original submitter is no longer active and you do not get a response after a week or so, let the team know, and we will ping the submitter, and in the worst case, accept it on their behalf (after testing of course).

Good luck, and good hunting!