Millennium bug in SuperMemo

SuperMemo World

The worldwide cost of the y2k bug has been estimated to $600 billion (which is about the market capitalization of Microsoft or twice the annual savings of the GATT agreement). When the world passed January 1 without major glitches, someone asked: Can we have a refund? Some have seen the y2k bug as a major global conspiracy intended to boost earnings of selected software developers and consultants. Yet the story of y2k in SuperMemo is a good illustration how real the danger of y2k really was

This is the history of the millennium bug in SuperMemo

  • 1987 - first versions of SuperMemo were not y2k compliant. SuperMemo was then often run directly from a floppy disk with all user knowledge and the program stored on a single 360K diskette! This made every single bit and byte very precious! Secondly, SuperMemo was just a home-grown experiment that was not supposed to last 13 years!
  • 1991 - first commercial releases of SuperMemo for DOS were y2k compliant with respect to the learning process. SuperMemo counts time by adding 16-bit interval to the first day of the learning process which is a number of days after January 1, 1980. This should make it possible to use the program for 179 years after 1980, i.e. until the year 2159. SuperMemo 6 for DOS could be considered to suffer from the y2160 bug as it would interpret the year 2160 as 1980
  • 1999 - SuperMemo World receives increasing volumes of e-mail in reference to the y2k bug. All versions of the program have been double-checked and tested for potential problems. The official stand was: There is no y2k bug in SuperMemo ... until ... a user in Poland noticed that years displayed in Monthly burden in SuperMemo 6 for DOS are jumbled as soon as the date changes to the year 2000 
  • Jan 1, 2000 - first day of the new millennium passes without any signs of imminent trouble
  • Jan 6, 2000 - a user in Poland notices that the problem spotted in SuperMemo 6 is also present in the Polish compilation of SuperMemo 7.4 for Windows (this does not affect the English release)
  • Jan 9, 2000 - a user in Slovenia reports a "small y2k bug" in Import : Learning process in SuperMemo 99. Her report is scheduled for standard processing without much notice
  • Jan 11-16, 2000 - an increasing number of users report Import : Learning process is useless! The problem is ranked top-priority
  • Jan 17, 2000 - rude awakening: all versions of SuperMemo starting with Build 8.4 of January 1997 contain a y2k bug! The learning process backup export to text files uses two digits to code the year and when those two numbers reach .00, they are blatantly misinterpreted as the year 1900 -- a classic y2k bug! 
    Y2K has hit SuperMemo so late for two reasons: (1) import will fail only on scheduling repetitions of items that have last been repeated already in the year 2000. This requires a standard several-days interval to pass before the bug could be spotted, and (2) few users actually use the import option. It is only needed in case there is a need to restore the backup (e.g. in case of a loss of files, virus, etc.) or, as it was the case among those who noticed the bug, the users use the export/import options to move the learning process between two large and identical collections on two computers (e.g. at home and in the office). Conclusion, we are not out of woods yet with y2k glitches, esp. that the infamous leap year exception is still to come at the end of February
  • Jan 18-20, 2000 - in three consecutive days, we have posted three updates to the three main lines of SuperMemo for Windows: 16-bit SuperMemo 8.4, low-price 32-bit SuperMemo 98 and the newest SuperMemo 99
  • Feb 15, 2000 - first customer report arrives in reference to problems with upgrading SuperMemo 7 files to SuperMemo 98. It does not look like a millennium bug at all
  • Feb 25, 2000 - second millennium bug is discovered in all versions of SuperMemo 8 and later. The bug was hidden in procedures that upgraded SuperMemo 7 files. It would wrongly interpret dates of repetitions made in the year 2000 or later. Ironically, the erroneous procedure was written to perform the exactly same function as the analogous procedure that was earlier found to cause problems with Import : Learning process. These two procedures were written independently and included the exactly same error! 
  • Feb 28, 2000 - new releases of SuperMemo 8, SuperMemo 98 and SuperMemo 99 are made available. These fix the problem documented on Feb 25, 2000. Both Import : Learning process and Import : From SuperMemo 7 use the same date conversion procedure now (earlier it was redundantly duplicated in these two different program modules)
  • Mar 22, 2000 - y2k bug has also been confirmed to exists in a component of the ancient SuperMemo 6 toolkit: transfer.exe. The nature of this bug is the same as in all cases described above. We do not plan to release an update to transfer.exe. If you still use SuperMemo in DOS and have downloaded SuperMemo Toolkit, it is recommended that you delete transfer.exe  

All registered users of SuperMemo can receive a relevant free update! If your SuperMemo is dated before Feb 28, 2000, you can receive update instructions by writing to SuperMemoMail (please quote your registration number, order number or user password -- if you remember neither, quote your full name and country)

Users of SuperMemo 8 and SuperMemo 98 can simply download the update and replace sm8.exe or sm98.exe file. To download click here:

Important! Learning process is Y2K compliant in all versions of SuperMemo! You do not need to update if you meet these conditions:

  • you do not need to import learning process backup from a text file
  • you do not transfer your repetitions between different collections via a text file (including Transfer node)
  • you do not plan to import SuperMemo 7 databases or those databases do not include repetitions made in the year 2000 or later

We apologize for the inconvenience related to upgrading your SuperMemo! Your time is very precious to us and we highly regret that the notorious y2k problem had to creep in SuperMemo


Frequently Asked Questions


(Tomasz Szynalski, Poland, Sep 7, 1998)
Question:
I have been using SuperMemo 6 Public Domain [for DOS] for years (this version seems enough!). However, I have recently noticed that it suffers from the millennium bug! If I buy
SuperMemo 99, can I be sure that my learning process will be safe?
Answer:
Indeed there is a Y2K problem in SuperMemo 6. However, it probably touches only handling dates in the monthly calendar of repetitions. This should not affect the learning process per se! As for SuperMemo 99, there were some glitches and we had removed them all within three days since the moment they were documented (see above)


(Przemyslaw Bak, Poland, Nov 2, 1999)
Question:
I use SuperMemo 6 as this is the only version that would run under Linux. I heard of Y2K bug in SuperMemo 6. Will I have to give up SuperMemo in 2000?
Answer:
You will be able to continue after Dec 31, 1999:

  1. There is only a problem with displaying dates in Monthly Burden in SuperMemo 6. This should not affect your learning process
  2. We consider digging out the old SuperMemo 6 code and fixing the problem in question if we get more user complaints
  3. The only component that may cause problems is transfer.exe from SuperMemo Toolkit. It is recommended that you delete this file
  4. Inprise announced Delphi support for Linux in the year 2000, and if it only becomes feasible, we will attempt to port SuperMemo 99 to Linux

1.2.24