Bridgescore+ - August 15, 2015

This is status report of Bridgescore+ and what has happened over the last few months.

Availability

Access to an on-line version of Bridgescore+ for Units and Districts has been available (for free) since September 2014. This version supports KO starts and other features. 13 of the 25 Districts have been provided access (if your District does not have it, ask the District President to send me email and I will make it available to you). We don't track usage, so don't know how much it has been used.

At some point, we will do a version upgrade to this software to offer more features.

Version

Previously Bridgescore+ ran on Ruby 2.0, Rails 4.0, Rake 10.2, Bootstrap 2. This enabled us to support both Bridgescore+ and also answer any questions that ACBL may have on the ACBL version, ACBLscore+.

We recently made a major effort in upgrading all of the underlying tools to the latest versions. We are now running on Ruby 2.2, Rails 4.2, Rake 10.4, Bootstrap 3. There are about 70 different third party tools ("gems") that we use, these were all updated as well.

This was a major effort, some of it still on-going. The hardest was the upgrade to Bootstrap 3. About 300-500 files needed to be changed for this update. Every screen that was a pop-up needed to have code changes because Bootstrap 3 changed its functionality.

Upgrading the underlying technology was long overdue. We had deferred it in case ACBL needed help in upgrading their version, but decided not to delay any more.

This deferred maintenance unfortunately has little benefit to the users, but is necessary to stay current with new software and to be able to support long term.

It is worth noting that this maintenance is one of the problems that ACBL ran into. Earlier in 2015 they attempted to review ACBLscore, and believed it would be trivial to take the source code (from May 2014), run and install on the latest software from all vendors. Twitter Bootstrap (this is the framework we use for displaying output on the screen) had undergone a major update from Bootstrap 2 to Bootstrap 3 which unfortunately was not backward compatible. Therefore when they attempted to run the software on Bootstrap 3 there were many user interface problems. It is possible to install and configure Bootstrap 2, but that was not tried by ACBL.

Electronic Scoring Device (ESD)

Major work has been done on the ESD interface.

We have a standalone Windows program that reads (and writes) the BWS files. This program can send (and receive) data from Bridgescore+.

We have implemented the ability to run Swiss teams. Next step is to start testing running a Swiss at tournaments using ESDs.

Masterpoints

The original version had all masterpoint calculations in a C shared library. This code was large (7,000+ lines of code) and had become difficult to support. There were stand alone tests, but the complexity of the code made it difficult to do regression tests.

The experience of ACBL releasing a slightly modified Masterpoint formula in January 2015, and then waiting several months for the various bug fixes to work out was illuminating.

We want to test against the 2015 formula, but until we were sure that the game files had accurate information, we held off doing any work with the 2015 formula.

We decided to completely re-write the masterpoint calculation code. Previously it was written in C, the new version is written in Ruby and packaged as a stand alone library "gem". There are many advantages. Standalone tests can be run, regression tests are much simpler.

The club masterpoint formula is mostly complete, we are working on implementing the tournament masterpoint formula. As we already have working code to go from, this should be relatively easy to complete. We are hoping to have all the masterpoint code complete by the end of August so we can test at the Atlanta Regional.

Lots of tests are being written as well to provide regression tools.

The masterpoint formula are relatively simple, but there are many special cases. For example, the code that decides which colors are awarded has almost 50 separate cases.

A lot of work is going to be spent on testing these changes.

Masterpoint Assignment

We still do not have any masterpoint assignment specs.

We will try and reverse engineer these from any discrepancies found during testing.

Movements

Movements were a critical path item for ACBLscore+. There was about 6 months of work to complete the movement code for ACBLscore+.

Currently, we can score, rank, masterpoint a Mitchell movement, but in order for a full release we need full support for all movements.

Fortunately, we have a great developer working on this code.

We have taken all the movement code out of Bridgescore+ and put it all into a separate, standalone library (aka 'gem'). The advantages are the same as the masterpoint code.

We can test the movements independent of the scoring.

The first tests will be to check that the gem can create the same guide cards for the same movement as ACBL. We have automated scripts that can generate a guide card from any type of ACBL movement. We use the same concept for testing: generate a guide card from Bridgescore+, then compare the two.

Once we have the standalone tests, then we will work on integrating the movements into Bridgescore+. Currently Bridgescore+ can handle Mitchells, adding this new functionality will add support for all game types including Howell, Web, relay/bye stand etc. etc.

We still estimate that the complete implementation, which includes testing and an EDMOV functionality is a 6 month elapsed project. Throwing extra resources at this is unlikely to make it move any quicker. The good news is that we have started on the work and it is going very well. This will not hold up release to the larger clubs (except for non Mitchell movements).

Interface - ACBLscore

The 'gfprint' tool can read an ACBLscore game file. It can output the file in many formats, including XML, CSV etc. gfprint can also create an ACBLscore game file from XML. This is required as we can run Bridgescore+, generate the results, create an ACBLscore game file, and the existing ACBL infrastructure can handle the ACBLscore game files.

A version of 'gfprint' is available as a web service. We offer the ability to extract data from a game file. We have decided not to offer the ability to create a game file at this point.

Interface - Other

Bridgescore+ can output in various other formats, e.g. PBN, LIN, DUP. Most of these formats need more real world testing.

KO Start

Bridgescore+ has been able to start a KO using projectors for over 18 months. This has been used in many tournaments. So far, with complete success. It was used in Gatlinburg 2014, 2015 and will be used in 2016. We can now start a KO event about 1-2 minutes after the last entry is closed (we have to wait for the TD to decide the bracket sizes, print off the bracket sheets in case the projector fails, then we display them to the users).

KO Run

Bridgescore+ can run a KO.

Swiss

Bridgescore+ uses a projector to display Swiss results.

We currently do not have a Swiss matching algorithm. We are hoping that we could have one written open source by volunteers so it could be used by all scoring programs.

Hand Records

Bridgescore+ has full capability of generating hand records.

Journalists

Bridgescore+ can import various hand records, including scraping data from web sites to incorporate into Bridgescore+ data.

A standalone version of Bridgescore+ that supports hand records has been up and running for some time.

Using this it is possible to take a hand, say one from the NABC in Chicago, and automatically create a Word document with the hand rotated.

Features

Bridgescore+ supports the ability to separate functionality and put it into a Feature so that the code can be packaged on a Feature basis.

Fast Automated Results

Bridgescore+ has fast results, however the code has not been tested since March 2012. It truly is fast, i.e. as soon as the game is over.

Testing

Testing is moving in several directions.

For the stand alone gems, we use stand alone unit tests. This enables us to test, for example, Masterpoint calculations, without having to create a game.

After we have completed and locally tested the club and touranment masterpoint formula, we may offer the ability for users to upload a game file, so that we can test the new Bridgescore+ MP formula.

Texting

Bridgescore+ supports the ability to text a player. This may seem insignificant, but it is an ideal way for a TD to get in touch with a player.

Schedule

Bridgescore+ supports the ability to display the tournament schedule with a projector, including where the event is being held.

ACBL

We do not know what is going on with ACBL. It does not look likely that they will finish ACBLscore+ any time soon, therefore we have decided to complete a version of Bridgescore+ that does the majority of what ACBLscore does.

Help

We will be looking for help in several different areas.

1. A volunteer to help with gfprint. The code is written in C. It can read a game file and output in many different formats, including CSV, XML, and data needed for fast results. The code is about 2 years old. ACBL has introduced some new event ratings. Support for these needs to be added. The code base is approximately 40,000 lines. As we run into more complex game files, it is probable that debugging will be needed. The hardest part is taking an XML file and creating an ACBLscore game file. This works, but needs a lot more testing.

2. Write the masterpoint assignment rules. This means going through the various ACBL documents and collating a list of all the rules associated with Masterpoint assignment.