Monday, August 11, 2014

Reviewing, and timeline guessing

Today I reviewed worddata.py and pagedata.py, the data models for the vocabulary and pages tables. Didn't find any bugs; made some minor edits to commentary and message texts as usual, and updated the internal doc of methods.

Remaining to review:

  • imageview.py
  • mainwindow.py
  • book.py
  • noteview.py
  • editdata.py
  • editview.py

I expect to finish these this week. editview will take the longest because I also plan significant code changes. In this module, the UI for editing was created using the Qt Designer, and the incorporation of its glob of UI setup makes for awkward code, and is either causing an odd interaction with noteview, or is at least getting in the way of diagnosing it. So I'm going to tear out the generated UI setup and do a manual one.

What happens next? Next is to write the very important, complex, and performance-critical findview module. That will take at least a week. Starting there the sequence is:

  • find; 1 week
  • wordview, the Vocabulary panel; another week, as I need to work out how to handle the UI to support drag-and-drop moving of words between the vocabulary list and the good-words list.
  • chardata and charview, the Character panel, and
  • pageview, the Page table panel; about a week to do both.
  • fnotedata and fnoteview, the Footnotes panel, a week.
  • loupeview, integration with bookloupe: two weeks here because there are many unknowns about how to integrate this hunk of somebody else's C code into Python and to display its output in a useful way.
  • translate, the code to parse a DP-formatted book and use it to drive the extremely clever API that I have devised for writing format-translation modules. A week to code and test.
  • the etext translator and the HTML translator, example clients for that API, two more weeks. (I may sneak a Markdown translator in at the same time.)

So that's a commitment for (quickly counts on fingers) nine weeks of work, or say to late October. At this point I would have a pretty functional product and would make it available for early adopters who can run from a clone off github, i.e., who have Python 3 and Qt 5.3 (or 5.4, by that time) installed.

Also at this point I would want to download a PP book and actually process it using the new code. Something with footnotes and sidenotes, so probably a month's worth of work to finish. Let's say that takes through November into mid-December.

Then, or possibly before completing a test PP job, I need to spend some days learning and experimenting with pyqtdeploy, which I expect to use to bundle the app (in place of pyinstaller). If I get through this in December, I can put up a Beta version, bundled for OSX 10.9, Ubuntu 14.04, and Windows 8 (the only supported platforms for this version), sometime in January.

Beyond that there will some functional catchup: doing the documentation (2 weeks); doing a new "suggested workflow" doc (another week); actually implementing dragging a panel out of the app to be an independent window (couple weeks probably to get it right); and to bring along the cute little Greek palette from version 1.

Wow. This whole thing could actually get finished in maybe 7 or 8 months. What will I do with all the free time I'll have next spring?

No comments: