JLDrill TODO List
Table of Contents
- 1 Process
- 2 The Upcoming Release is Version 0.6.0
- 3 Version 0.5.2
- 3.1 Velocity Table
- 3.2 Current Items
- 3.2.1 Display statistics for forgotten items [2/2]
- 3.2.2 Only show the examples when the answer is shown
- 3.2.3 Show appropriate examples when the question is shown
- 3.2.4 Move to Ruby 1.9
- 3.2.5 Chinese Mode for Kanji Popup
- 3.2.6 Ability to load CC-CEDICT dictionary in Chinese mode
- 3.2.7 Add Load Path for dictionaries [2/2]
- 3.2.8 Show busy cursor when initially loading file
- 3.2.9 Add ~/.jldrill to the load path
- 3.2.10 Replace Tanaka corpus with Tatoeba example sentences
- 3.2.11 Read Chinese collocations from Tatoeba example sentence
- 3.2.12 Search dictionary for tratitional equivalent of simplified kanji
- 4 Finished – Version 5.1
- 5 Backlog
- 5.1 Items
- 5.1.1 Ability to switch between Japanese and Chinese mode
- 5.1.2 Allow users to update their drills
- 5.1.3 Personalized Directories
- 5.1.4 Automatically update Dictionary
- 5.1.5 Automatically update Collocations
- 5.1.6 Need a mechanism for publishing warnings and errors.
- 5.1.7 Give feedback to the user when we refuse to edit or add an item.
- 5.1.8 When save fails, indicate it to the user
- 5.1.9 Start new drills in Preview mode
- 5.1.10 New Drill Splash Screen
- 5.1.11 Simply loading a drill shouldn't modify it
- 5.1.12 Indicate when the item has been promoted.
- 5.1.13 Windows Packaging [0/5]
- 5.1.14 Allow Learn/Unlearn for any arbitrary item
- 5.1.15 Define the structure of the data in the drill.
- 5.1.16 Define a structure for grammar.
- 5.1.17 Display parts of speech tags next to what they modify
- 5.1.18 Allow the user to choose what tags to display.
- 5.1.19 Associate data items with the dictionary they belong to.
- 5.1.20 彼処 かしこ finds あそこ
- 5.1.21 Allow undo
- 5.1.22 Insert Popup Before Item
- 5.1.23 Aggressive Search
- 5.1.24 Create a recent used menu for loading drills that you've used recently.
- 5.1.25 One of the items in the working set had a potential schedule of 72 days
- 5.1.26 Time to learn after the first item is waaay too big (10798.7s) [1/2]
- 5.1.27 Full test coverage for all the model objects
- 5.1.28 Full test coverage for all the contexts
- 5.1.29 Don't steal focus when putting up windows that take no input.
- 5.1.30 Allow user to set the formatting for each type of data.
- 5.1.31 Rename the methods that take Vocabulary
- 5.1.32 Create a keyboard only mode.
- 5.1.33 Create a dictionary back end to allow it to use online dictionaries,
- 5.1.34 Create Redhat packaging.
- 5.1.35 Create OSX packaging.
- 5.1.36 Allow user to modify the global backoff.
- 5.1 Items
1 Process
This file contains the development plan for JLDrill. The first section discusses the purpose of the next stable release. Following that is the current development release. The number of JellyBeans chosen for the development release should be enough so that it can be released in one or two weeks.
Following the current development release is the next development release. New stories can be moved into the current release as long as there is still time in the iteration to do them. However, an equal number of JellyBeans must be moved to the next development release.
When the release is complete, delete the stories and start again.
2 The Upcoming Release is Version 0.6.0
The upcoming stable release will be version 0.6.0. As usual, it will be made up of the development releases (from 0.5.1 up).
The rest of 0.6.0 will be devoted to drill functionality. The idea is to get the multi-drill types done and to nail down the file format. Additionally, some must-have UI (error messages and the like) will be implemented.
The development versions of 0.5.x will be undergoing a different process. Instead of long development releases, the releases will be done in 1-2 weeks each. Hopefully this will keep interest levels up.
3 Version 0.5.2
0.5.2 originally meant to focus on UI imporovements, but I got sidetracked with other issues. The main improvements are statistics for forgotten items, better display of examples, Ruby 1.9.1 compatibility, and ability to study Mandarin Chinese with traditional characters using CC-EDICT.
3.1 Velocity Table
The velocity table shows an overview of the current development. The ITEM column shows which iteration we are doing. Total shows the total number of "Jelly Beans" that are scheduled for the release. A Jelly Bean is an arbitrary unit of effort. Done shows how many Jelly Beans have been finished to date. Percent shows what percentage of the iteration is finished.
The last two columns show the velocity for the program. Current shows the number of Jelly Beans that have been finished per day. Needed shows the number of Jelly Beans per day that must be finished for the iteration to finish as scheduled.
ITEM | Total | Done | Percent | Current | Needed |
---|---|---|---|---|---|
Version 0.5.2 | 17 | 17 | 100.0 | 0.09 | 0.08 |
Note: To update the current velocity you must set the CurrentDate in the PROPERTIES section of the section. When setting TODO tasks to DONE, you must set the number of JellyBeans done in the PROPERTIES of the task.
3.2 Current Items
3.2.1 DONE Display statistics for forgotten items [2/2]
In the statistics window, display the statistics for the forgotten set as well as the review set. To be honest, I don't really know how I want this to work, so this will probably end up being a spike.
- [X] Create a tabbed interface for the statistics window
- [X] Make one tab show the statistics for the review set and one for the forgotten set
3.2.2 DONE Only show the examples when the answer is shown
Right now the colocations are shown when the new problem is made. Instead, show the colocations when the answer is shown for the problem. Before that a blank screen.
3.2.3 DONE Show appropriate examples when the question is shown
When the question is shown, show the English side of the examples when it is a meaning question, Japanese side of the example when it is a Kanji question or reading question. Fill in the rest of the details when the answer is shown.
3.2.4 DONE Move to Ruby 1.9
Currently using Ruby 1.8.7 Move to Ruby 1.9. This needs to be done before Debian moves over to Ruby 1.9 as its standard.
3.2.5 DONE Chinese Mode for Kanji Popup
Create an option to go to Chinese mode that presents the chinese readings rather than the Japanese readings for the chinese characters. Note that this only works for traditional (not simplified) characters.
3.2.6 DONE Ability to load CC-CEDICT dictionary in Chinese mode
If the Chinese mode option is set, use a Chinese dictionary parser to read CC-CEDICT dictionaries. In this mode, you can hover over traditional (not simplified) characters to look up chinese words using the dictionary popup. You can also search for and add entries in Add Vocab and Edit Vocab windows.
3.2.7 DONE Add Load Path for dictionaries [2/2]
Create a load path for the dictionaries that prioritizes directories where the dictionaries might be. Add /usr/share/edict to the end of the load path and remove the special configuration for Debian. This will allow Debian users to install their own edict dictionary if they don't want to use the old one in Debian. This feature is necessary so that we don't have to jump through hoops to find the cedictionary in Debian.
- [X] Make sure to use File.join rather than "/" in all paths
- [X] Refactor Icon into it's own class to abstract load paths
3.2.8 DONE Show busy cursor when initially loading file
There's a brief pause when the file load mechanism loads the file before it is parsed. Switch the mouse cursor to the busy cursor and switch it back again when the file is finished loading. Calling this one finished even though the grab handle on the vpane for the ProblemDisplay doesn't show the correct cursor. The entry areas in the ModifyVocabulary windows also don't work, but fixing it would mean rewriting the whole class, which is something I want to do at a later date.
3.2.9 DONE Add ~/.jldrill to the load path
Add the .jldrill in the home directory (if it is set) to the beginning of the load path. This will allow the user to manually override the dictionaries if they want.
3.2.10 DONE Replace Tanaka corpus with Tatoeba example sentences
Tatoeba is the replacesment for the Tanaka corpus upstream. There are 3 CSV files now – One for collocations, one for sentence type and one for the old Tanaka B line information. Read in the Japanese collocations and Tanaka B line information in Japanese mode.
3.2.11 DONE Read Chinese collocations from Tatoeba example sentence
In Chinese mode, read and select the Chinese collocations.
3.2.12 DONE Search dictionary for tratitional equivalent of simplified kanji
When using the kanji popup, if you put the cursor over a simplified charater, no information is brought to the front. Search the dictionary for words with the simplified character, if one is found, use the traditional kanji stored in the word as the kanji to search.
4 Finished – Version 5.1
This is a packaging release. However, I have added a single feature because I needed it for my own study.
Unlike previous releases, 0.5.1 will be released as a stable release. For all platforms, installing ruby (with rubygems) and typing "gem install jldrill" will install jldrill and all its dependencies. On On Linux, there will be a debian package. Both gems and debian packages will be submitted to the appropriate people so that it is easy to install. Unfortunately, unless I can get a Mac, there will be no Mac installation.
4.1 DONE Forget items that are too old
Sometimes when you haven't used the app for a long time items get very old. Their reviewRate becomes large. This is not a problem in itself, but when you start to review items they will have a short duration. If the reviewRate is something like 10x, then it might take 50 days until we rereview a new item. Therefore make a new set of items called Forgetten. Review Items that have a reviewRate higher than some threshold (4???) are moved to the Forgetten set. Forgetten set items work just like the Review set items except that are introduced like New set items. So this means the user gets Review set items until they get 90% right. Then they get Forgetten set items. Once an expired set item is reviewed, it goes back into the Review set. After all the Forgetten set items are finished, then we go back to showing New set items. This gives priority to actively reviewed items without losing the valuable sorting of old items. There is an option for setting the threshold. If the threshold is 0 (default) then no items are forgotten.
4.2 DONE Reorganize Options UI
The UI is ugly and disorganized for the Options window. Organize the options so that they have a grouping that makes sense and try to visually improve the look.
4.3 DONE Put Gem in official repository [5/5]
- [X] Make dependencies for gtk2
- [X] Push to official repositories
- [X] Test on Linux and Windows to make sure it installs properly
- [X] Update documentation for Windows install
- [X] Document potential problems with debian and gem coexistance.
4.4 DONE Update Dictionaries
Update the EDict and Tanaka corpus dictionaries to the latest version.
4.5 DONE Switch between kanji and vocab popups
Make it so that you can switch between the kanji and vocab popups without having to move the mouse in between.
4.6 DONE Improve Debian build
The Debian build system was not being done the "Debian way". Modify it so that it it lintian clean and build a source package.
5 Backlog
These items are ideas that may or may not make it into an upcoming development version. They are organized loosely by how important I think they are (the most important is first). Simply being on this list is no guarantee that I will implement it. However, items near the top are very likely to appear in the next release or two. If you have feedback on this list, or its order, please email me.
5.1 Items
5.1.1 TODO Ability to switch between Japanese and Chinese mode
When when one of the dictionaries is loaded and you load a file that uses the other language, the previous dictionary remains. It should not use it in the other language. If the new language dictionary is set to autoload, it should autoload, replacing the previous dictionary in memory. However, if a new language dictionary is not loaded, the previous dictionary should not be removed.
5.1.2 TODO Allow users to update their drills
A user can update a drill by appending the new version to their drill. But if the vocabulary has changed in the new/old drill (because the dictionary was updated for instance), the new vocabulary will be added as a new item rather than updating the old item. Put a unique ID on each item. When merging, if the IDs are the same overwrite the old one. For old drills, if there is no ID, assume the items are the same if the position, reading and kanji are the same. (Not sure about the position).
5.1.3 TODO Personalized Directories
Create a configuration directory that contains the users configuration for JLDrill.
5.1.4 TODO Automatically update Dictionary
Allow the user to select a download site for a dictionary and automatically updated it when it changes.
5.1.5 TODO Automatically update Collocations
Allow the user to select a download site for a collocation dictionary and automatically updated it when it changes.
5.1.6 TODO Need a mechanism for publishing warnings and errors.
Warnings and errors must be displayed to the user in a consisten way. To be honest I need to think more about what that way is. Currently errors are printed to the console which is no good.
5.1.7 TODO Give feedback to the user when we refuse to edit or add an item.
Probably use the aforementioned warning and error mechanism.
5.1.8 TODO When save fails, indicate it to the user
before bringing up the save as dialog.
5.1.9 TODO Start new drills in Preview mode
When a drill has been loaded for the first time (or after a reset), show the first item in preview mode. This allows the user to update the options, or to save the quiz before selecting the first problem.
5.1.10 TODO New Drill Splash Screen
Create a splash screen explaining that this is a new drill and the system is in Preview mode. Press N to start
5.1.11 TODO Simply loading a drill shouldn't modify it
Currently the "must save" flag is set when a drill is loaded. This should only be set after the first item has been answered. Of course if the drill was imported from an EDICT file then the "must save" flag should be set immediately.
5.1.12 TODO Indicate when the item has been promoted.
When an item has been moved to the review set, print some kind of congratulatory message. Possibly show some kind of stats like Anki does.
5.1.13 TODO Windows Packaging [0/5]
Determine the feasibility of creating a windows packaging. Place to start:
- [ ] Create a self extranting archive that downloads and installs ruby, and then run gem install jldrill
- [ ] Create an uninstall script.
- [ ] Create a jldrill upgrade script.
- [ ] Create an executable with an icon for jldrill
- [ ] Install icon on the desktop and in the menu. Add uninstall and upgrade scripts in the menu
- [ ] Create an installer for the custom fonts
5.1.14 TODO Allow Learn/Unlearn for any arbitrary item
5.1.15 TODO Define the structure of the data in the drill.
In other words, create a dynamic data type that defines the structure of the data item that is to be drilled. Save it in the drill itself. Create a structure for edict vocabulary.
5.1.16 TODO Define a structure for grammar.
5.1.17 TODO Display parts of speech tags next to what they modify
(i.e. each definition, or sentence)
5.1.18 TODO Allow the user to choose what tags to display.
Save this in the drill.
5.1.19 TODO Associate data items with the dictionary they belong to.
Only load the dictionary if it's in the drill. (Question: Should it unload the dictionary on next drill? Probably yes…)
5.1.20 TODO 彼処 かしこ finds あそこ
When searching the tanaka corpus the reading should be taken into account if given. Thus examples with the same kanji but different readings should not be shown.
5.1.21 TODO Allow undo
5.1.22 TODO Insert Popup Before Item
If the user presses a key (TBD) while a popup is up, an item contiaining the information in the popup is added to the quiz immediately before the current item.
5.1.23 TODO Aggressive Search
If a reading can't be found in the dictionary, seach again taking off one character at a time from the end of the reading.
5.1.24 TODO Create a recent used menu for loading drills that you've used recently.
5.1.25 TODO One of the items in the working set had a potential schedule of 72 days
5.1.26 TODO Time to learn after the first item is waaay too big (10798.7s) [1/2]
- [X] Refactor tests
- [ ] Test to see if this is a real problem
5.1.27 TODO Full test coverage for all the model objects
5.1.28 TODO Full test coverage for all the contexts
5.1.29 TODO Don't steal focus when putting up windows that take no input.
Deferred from 0.3.3. I tried to do it, but it never worked. I suspect a race condition in GTK and it's not important enough to kill myself over.
5.1.30 TODO Allow user to set the formatting for each type of data.
Store the formatting in the drill.
5.1.31 TODO Rename the methods that take Vocabulary
(like Quiz#add()) to indicate that it's for Vocabulary (i.e., Quiz#addVocab())
5.1.32 TODO Create a keyboard only mode.
Advanced users can probably just use the keyboard. In this mode, Remove any UI that is surpulfluous.
5.1.33 TODO Create a dictionary back end to allow it to use online dictionaries,
or dictionary servers (fantasdic? stardict?)
5.1.34 TODO Create Redhat packaging.
5.1.35 TODO Create OSX packaging.
5.1.36 TODO Allow user to modify the global backoff.
Allow the user to modify the global backoff from the options. This must be saved with the drill. When the backoff is changed, all the items that are currently scheduled will have to be scaled accordingly. For example, if the backoff changes from 2.0 to 1.5, if there was an item with a duration of 10, then the duration becomes 7.5. If the item had been waiting for 5 days (50% of the duration), then reset it so that it has been waiting for 3.75 days (50% of 7.5). Then resort all the items.
Date: 2012-01-24 14:49:47 JST
HTML generated by org-mode 6.33x in emacs 23