This is status report of Bridgescore+ and what has happened over the last few months.
At some point, we will do a version upgrade to this software to offer more features.
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.
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.
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.
We will try and reverse engineer these from any discrepancies found during testing.
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).
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.
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.
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.
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.
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.