Anki Stream
version 0.1 (beta release)
source code distribution
2008.08.25

www.ankistream.com

This is the source code distribution package for Anki Stream, a Java applicaton for long term flash card review.

Anki Stream is a free and open source Java project, distributed under the terms of the MIT license, a copy of which should exist in this top level directory.

For XML parsing it depends on the NanoXML parser by Marc De Scheemaecker (thank you Marc!)  According to its website (http://nanoxml.cyberelf.be/download.html) NanoXML is distributed under the zlib/libpng license.

Source code for both the ankistream and net.n3.nanoxml Java packages should be included in this distribution under the respectively titled directories, and you should be able to compile the application from the root directory using javac (I think... haven't tried this) or by creating a new project in Eclipse and including both packages (this is what I do).

Anki Stream is currently in beta, and I don't really want to take new features for the "official" releases I will be linking on ankistream.com until I have the current features working well in version 1.0 and can move on to version 1.1, but bug fixes are welcome.  And of course you can add as many new features for your own versions as you want.

I am developing Anki Stream mostly on Hardy Heron Ubuntu 8.04 with Eclipse 3.2.


Code Notes:

Anki Stream is a branch of an earlier flash card program I wrote but never really published called "Anki Box" which was based on a "Memory Box" idea that James Heisig describes in Remembering the Kana.  I was using Anki Box for a while for my personal Japanese study and I thought the idea was pretty cool and worked pretty well until I found out about spaced repetition and SuperMemo.

When I branched to create Anki Stream I decided I would try to keep the XML files and new program compatible with the "boxes" that were used in Anki Box, so that is why you will see all kinds of strange code having to do with Boxes in the Anki Stream source.

It turns out that keeping compatibility with boxes was too much of a chore and I kind of gave up on it halfway through anyway, so boxes don't work in Anki Stream.  And I think now that it was a bad idea to try to include boxes in the first place (feature bloat) and I will probably try to remove all the old Box code for version 1.1.  But I thought I would mention it here since anyone who looks at the code will definitely wonder about it.



My current Known Issues / Todo list for getting to version 1.0:

- finish tutorial on website

- don't lock Anki Stream default files to home directory - use jar directory or at least working directory

- does fonts button actually do anything?

- duplicate id and other data integrity checks (all metacards have corresponding stream card?)

- completely recouple cardset and cardcontainer files (remove code that exists now enabling card sets and streams to be saved in separate xml files - which is unnecessary)

- figure out why base files won't load out of standalone executable jar (working directory problem probably)

- remove boxes

- todos in code

- polish menu items and ui, heavy testing inc. test plan especially test loading/saving, switching between box and stream

- polish code: move duplicate loading/panel layout code out of streamframe constructor into subfunctions, remove instanceofs as much as possible

- save after xx cards persists between streams bug

- occassional save exception bug

- last card sometimes not updating...???? pretty hard to tell...

