Online Rule 42 and Protest Schedule System

Please note: I made several major improvements to the system since the european summer 2014. Some of these, like the Twitter integration, only work on the juryboard server.
For most events it will be easiest to get an install on the juryboard server, normally this can be done within hours of sending me an email with the request.
If you want to use the system on your own server, you can still do that, to get the latest version (newer than the one offered for download here), just send an email to

If you don't know what Rule 42 or Appendix P means, you are probably wrong on this page ;-)

This system is a web-based system to enter and keep track of Rule 42 penalties and protest hearings. It allows each judge to enter her/his penalties directly into the system and publish the list on the web for competitors to see.

While the main goal was to make the information available online, so that competitors can check it without having to be at the physical noticeboard at the venue, it also produces printouts to be put on the noticeboard at the venue.

The public online hearing schedule is set up so that the browser reloads the page every 5 minutes, so that a monitor at the notice board stays up to date.
You can also highlight hearings, for example to draw attention to the next one coming up.

Penalty Enter page
Penalty enter page

Technical setup

You can either ask me ( to set it up on, as a lot of other events do, or download it here and install it on your own PHP-capable webserver. There is no database required.

You can also run it locally on your computer with programs like WAMP (for Windows), MAMP (for Mac) or LAMP (for Linux) - all called *AMP, they are all free and very easy to set up.
If you want to run it on a webserver, so that people can see the information on the web, you need FTP access to the server and a FTP program. If you have a website, you will probably know how that works.

Download the latest version and unzip it. You end up with a folder 'juryboard-*date*', where *date* is the versions build date. It contains several folders and two files called 'index.php' and 'index-end.php'. Rename the folder 'juryboard-*date*' to something useful e.g. regatta name and year, the name is up to you and should only help you to keep it organized, you should avoid spaces and special characters though.

Upload the folder to the webserver, or if you run it locally on a *AMP, put the folder into the 'htdocs' folder within *AMP.
That's it and it works now, you only have to set up the details now.

First Run

Go with your Browser to WEBADRESS/YOURFOLDERNAME/jury (WEBADRESS is the address of the site you put it on, or the address *AMP is starting up with minus the *AMP part, usually something like 'http://localhost:8888/'; YOURFOLDERNAME is the name you gave the 'juryboard' folder) you should see a page with 'Startpage for Jury Noticeboard' header and a list of links
Go to Global Settings first and set the Regatta details, name, link to event page and time zone are the ones you want to set first.
After you did that, go to 'Jury Admin Home' and then to 'Protests', scroll down to 'Make This List Public' and click on it, then go to 'List Rule 42 Penalties' and click on 'Make this list Public'; now the public side of the system is ready.
If ou go to WEBADRESS/YOURFOLDERNAME now (the public part of the system) you see the links 'Rule 42 Penalties' and 'Protests' and if you click one, you see the still empty lists available to the competitors.

Setup for Regatta

To finish setting it up for a regatta you have to do some small things within the folders (you have to use your FTP program for that).
Logo & sponsors:
In standard install, you have an image on the top right: 'Event Logo' that should be replaced by your regatta or club logo.
In the main folder, here are four folders: jury (the backend), 42penalties (the public penalty list) hearingschedule (the public Protest schedule) and shared (contents needed for all pages). In shared there is a folder 'images' and within this you will find the folders 'logos' and 'sponsors'
Every image you put in logos will be displayed on the top right of the pages, beside each other if you put more than one.
Every image you put in sponsors will be displayed on the bottom of the pages, beside each other if you put more than one.

Password protect:
If you have the system running on a public webserver, I strongly advise to password protect the backend (that is the jury folder). If you run it locally on *AMP and do not publish it on the Web, you do not need to do that.
For that you have to log on to your Webhoster (with your browser), were you can access the basic settings for your web account. In the basic settings (often called Web manager or similar) you have the option to 'password protect directories'.
Click that option and on the next page when asked to select the directory to protect, navigate to the 'jury' folder. Once this folder is selected, select a username and password and protect the folder, from now on when you want to access the backend with going to
WEBADRESS/YOURFOLDERNAME/jury you will be asked for username and password.

Global Settings:
You now only have to work with the browser in the system.
Go to WEBADRESS/YOURFOLDERNAME/jury and click on 'Global Settings'
Ideally you enter something for each option on this page, that is:
Logos & Title:
Under Logos & Title there is a text field, enter the Regatta name and Click save, This title is now displayed on top of all pages.
The next field sets the link to the events website, it will be used when you click on the logo.
This only works if the system is hosted on, if it is and Twitter is selected, each change to the public pages (not the backend) will be tweeted.
A good way to push information to sailors if they use Twitter and follow @juryboard.
The backend language is always english, but for local events you can set the default language (im looking for more translations, if you can help, please let me know).
The user on the frontend can also use his preference. Of course that will only change headlines etc. all other text is in the language you enter it.
Enter the Classes at the Event, they have to be Exactly the same you will use for the entry list, otherwise the autocomplete filling of boats will not work.
Fleets for Protest Time Limits:
In case not every class has exactly one protest time limit, e.g. different fleets per class might have different protest time limits, or many classes get started together as a fleet and have one protest time limit.
There is the option to just copy all classes from the classes page, so you don't have to re-type everything. All fleets get listed on the protest page with their protest time limit.
Enter the judges for the event. Many judges who used the system before are already in the system and can be looked up with the autocomplete system.
It is very important to enter the judges ISAF ID (you can go to the ISAF site to look for an official and then go to her/his details to see the ID). If the Judge does not have one, you can make one up from Country Code, Initials and additional letters.
The system uses the ID to identify Judges within the system, so if you do not enter an ID, the judge will not show up on any penalty lists etc.
You can also select how the judges are displayed on the public pages, ISAF ID (good balance of distinct but not obvious to outsiders), initials or full name, also 'none' but it is not advised to hide the person who gave the penalty. Entry list:
You can see and edit the entry list here. You could also enter the entry list here, but that might be painfully slow, further down this page I explain how to prepare the entry list from a file.
The entry list is not mandatory, but both for entering penalties and entering protests, it offers you to check if the Boat is on the entry list, which might be very helpful.
A word of warning, with very big entry lists (somewhere above 500, depending on internet speed) the list sometimes gets cut and shortened when saved. So if you have very large entry lists and you do not run the system locally, better do not use the browser to edit the entry list.
On the top of most pages there is a 'last changed' entry, the time there is set automatically, but to make sense to the users, you should set the timezone to the one of the regatta.
In the pulldown menue most Timezones are listed, but not all Towns (e.g. there is Paris, but not Berlin, Rome etc.). The system (server) will know Daylight savings etc.
The list is by hours west to east from UTC, starting with Niue in the Pacific at the top and ending with Kiritimati in the Pacific at the bottom. So for example all the Americas are further up, while Asia further down.

Preparing the entry list

If you have an entry list (excel or any other form), with some minimal computer skills, you can produce an entry list ready to upload into the system.
The entry list is in /jury/AllEntriesFile.php and this is a text file, so you can safely open it with notepad, TextEdit or any other text editor (NOT a word processor like Word etc.!).
The Entry list is in the form:

	$AllEntries = array (
So with search and replace you can reduce the entry list you've got to something like this: Classname, Countrycode and sailnumber, with commas and no spaces between them. Each Entry is in single quotation and they are all again comma-separated - you can have a line break after each comma, that makes it easier to read.
Once you have that list, you can copy and paste it in between the brackets in the AllEntriesFile.php like you see above.
The System might later - depending of you edit the entry list in any way - re-format the list to something like this:
	$AllEntries = array (
	1 => 'Finn,NOR,1',
	2 => 'Finn,HKG,7',
	3 => 'Finn,MAS,7'
Both ways work in the system.


Each time you save a new entry, the system writes a backup into the rss42/data/backup folder, with the original filename and a time when it was saved. So if the system got a major failure (didn't experienced one yet, but you never know), you can always go back one stap 'by hand', that is taking a file out of the backup and replacing the one in rss42/data/ with it.

Using the system

Some fields have light gray information displayed, that is just an example of the data to be entered, not actual data (example: time for Rule 42 penalty).
As more than one person can enter penalties at the same time.

Enter Penalty:
Go to WEBADRESS/YOURFOLDERNAME/jury, log in and click on 'enter new penalty':
Only the basic fields are mandatory - but you should always try to fill out most fields.

  1. Enter the date - today's date is already pre-filled; enter time - suggested is the actual time when filling.
  2. Select the two judges from the pulldown menue
  3. If the entry list is entered, start entering something from the Boat ID, e.g. National Code or Sailnumber, and the system will offer you choices from the entyr list, you can then select one and take that data over into the penalty info.
  4. If the boat was not in the entry list, select the CLass from the pulldown, enter the country code (either lower or upper case, it will automatically change to upper case) and Sailnumber. If the boat was not in the entry list of the system, you can add it here.
  5. Enter Race Number, Leg Number and Leg Type
  6. Select Rule and interpretation, if you hover (mose over, tab on iOS) over a rule or interpretation, the complete wording shows up. Only Interpretations which can be broken are listed.
  7. Under Remark/Observation, you can write what exactly you saw on the water, e.g. 'rapid upper body movement to flick the leech of the sail'
  8. Click 'Next step'
  9. If the boat got no penalty yet, only the just entered penalty will show, if it already got a penalty, there is a warning about that in red and the older penalties are shown as well.
    At the bottom af the page you can select the appropriate outcome of the penalty.
  10. When you selected the penalty, you can either save the penalty or go back to the first page to change the entry.
  11. When you save it, it is written into the list of penalties. Do not reload this page or use the back button in the Browser on this page, as that would write the same penalty a second time into the system.
  12. If you use the 'enter another penalty' button, you will get the first page again, but pre-filled with some essential data, e.g. the same judges and class.
  13. If after entering and saving you go to the penaltylist, you will see the complete penaltylist of the event. If you want to change an entry, you can click on the Blue line with the sailnumber and edit all penalty data for that boat. There is a max of 5 penalties per boat, but I hope that never get's reached.
    You can change the order the penalties where given and unccheck the 'penalty given' checkbox if you want to remove the penalty for any reason.
  14. On the bottom of the penalty list are some statistics, these do not get printed, if you print this page, neither are they on the public list.
  15. If you want to publish the list on the web by clicking 'Make this list public'.

  1. Go to 'Protests', this is basically the only page.
  2. You can enter the time limits - all fleets defined in the GLobal Settings are listed - the ones without a time limit set will not be published or printed
  3. You can check Boats against the entry list.
  4. You can set a header for the hearing schedule, for example: 'No protests received by the end of protest time on 14.11.'
  5. There has to be a protest # (which can be any letter or number, just not empty) - if there is no number the protest does not get saved, or it will be deleted from the list.
  6. Most fields should be self-explanatory.
  7. Under Scheduled, there is a field 'Posted' this does not get published or printed and is for 'office' use only, to make sure you can check when a protest was entered into the system, of course it is only as accurate as it is entered.
  8. The list of judges for the panel does not get published, it is just for organizational purposes.
  9. At the end of each row there is a checkbox 'Mark' if checked, the online version (both backend and public) will show this row with a yellow background and slightly bigger text. You can use that feature to highlight the next protest coming up (alert parties), or if you change the schedule (because another protest before took longer than expected).
  10. Also in the last column there is an icon like a book, if you click on that you get a page for printing this protest details as a cover page for filing the protest papers, including tickboxes for the scorer etc.

If you use a web-statistics program (like Piwik, or Google analytics), the code for that would go into the html-end.php file (it gets automatically set into all pages).

A note on Printing

Unfortunately different browsers have different ways of printing webpages and the results are not always satisfactory. If you run into problems (most common: not the whole list gets printed), it sometimes helps to save it as a pdf file first, and print this file.

If you use the system, I would be grateful for feedback and any suggestions to improve it.