Internationalization

  • Unicode for all data
  • Space for translated data
    • ERM fields
    • CJDB data (subjects, anything else?)
    • CUFTS resource/title data?
  • Interfaces
    • CJDB
    • CRDB
    • MaintTool?
      • Support for localized dates, costs, etc. as well as translations
    • Resolver?
    • Public tools?

Refactoring

  • Moosify where it makes sense? Resolver/Resources mostly
  • ORM / database / models
    • Move more data logic into PostgreSQL
    • Referential integrity, cascade deletes/updates
    • Make more use of views
    • Materialized views for overlaid data?
  • Finish switch to DBIx::Class from Class::DBI
  • Move more business logic into models where applicable
  • Unit testing for models and business logic
  • Add language layer for data as per i18n section above
  • Is a versioned layer for data practical? It would allow for "undo", history, etc.
  • Does it make sense to look at a different DB type for some data - CJDB journals comes to mind. Something like CouchDB with a good fulltext index may work well. Goes with smarter (non-destructive updates) of the CJDB, possibly.

  • Create REST API for data where possible

  • Create a job queuing system for actions that are not "instant" such as data loads, activating sets of journals, etc. (use TheSchwartz?) This may also allow for distributing the load to other machines, though we may be database bound already.

  • MaintTool
    • Rewrite to use new REST API for most data editing, probably in a more Javascript-centric interface using ExtJS or something similar that gives flexible grids, forms, and tips.
    • Pull out public tools into a completely separate application
    • move to Chained Catalyst dispatch

  • Public tools
    • bug fixing, need a bug list and wishlist
    • Compare tool should use job queue to avoid tying up HTTP processes that may time out anyway.

  • CJDB
    • template cleanup
      • simplify and compartmentalize
      • more layout safe for dropping into other layouts (with sidebars, for example), maybe using YUI CSS Grids or something similar?
      • more tools, examples, documentation for implementors to use
    • move to Chained Catalyst dispatch
    • better caching, handling of static resources, logged in/out status
    • look at the CJDB data and see if there's a way to avoid or minimize the large, possibly non-destructive data rebuilds. May tie in with different database.

  • CRDB
    • template cleanup
      • simplify and compartmentalize
      • more layout safe for dropping into other layouts (with sidebars, for example), maybe using YUI CSS Grids?
      • more tools, examples, documentation for implementors to use
    • better caching, handling of static resources, logged in/out status

  • Resolver and Resource Modules
    • Split loader and resolver logic into two sets of modules
    • Add "transaction id" to title list updates so that sites loading from the exports can skip updates they already have
    • Better OO usage, could cut a fair amount of boilerplate from resource modules. Goes with Moose?
      • Unit test data load code