Roadmap to 3.8

This page show a "roadmap" for Koha 3.8. It is splitted in 3 parts 
#timing
#functionnal roadmap 
#technical roadmap
for each part, the roadmap is divided in: 
#what will be in version 3.8: all what is in this paragraph will for sure be in 3.8, as it has already been submitted/validated and pushed 
#what should be in version 3.8: all what is in this paragraph should be in 3.8. Patch(es) have been submitted, and are being validated.
#what could be in version 3.8: all what is in this paragraph has been announced by a developer. But nothing has been submitted, so it may or may not be in the 3.8 Only major announcements are in this list.
This roadmap will not contain small bugfixes or small improvements.
= Timing =
The release of Koha 3.8 is expected for April, 23th The key dates before the release are: 
=== March, 26th (1 month before the release) = feature freeze. ===
*No major enhancements will be included after this date for this release. By "major" I mean an enhancement that has many string change(s) and/or database change and/or introduce major changes in the core of Koha, with an important risk of side-effect.
*other enhancements can still make their way into 3.8 
*bugfixes can still make their way into 3.8
As of March 26th, I've reviewed all the patches that are in "need signoff" or "signed off" status, and could find only 2 that fit the definition of "major ENH"
* - multiple holds per title
* - support DOM mode for Zebra indexing of bibliographic records
Those bugs 1-are large 2-are related to the core of Koha 3- could have side effect
So they will wait for 3.10.
All other patches can still continue their way for Koha 3.8
For the following bugs i'll be double checking, because there is a risk of side effect that is not negligible, and I hesitated to put them in the previous list:
* - Add max fines to circulation matrix
* - Add ability to suspend reserves
* - Edifact QUOTE and ORDER functionality (the side effect of this one is negligible, but the patch is huge !)
But if they have a strong signoff (or, better, 2) before the "strong feature freeze", I'll push them.
Comment on some other bugs:
* - Use Koha-Contrib-Tamil to update Zebra data in background => would be an alternative, not a replacement, so could push it.
=== April, 6th = strong feature freeze, string freeze ===
*no enhancements will be included in the version after this date for this release, except tiny one without strings.
*bugfixes that are blockers/critical or don't change any string can still make their way into 3.8 
*translator can start their work
=== April 20th = starting release process, everything frozen ===
Proposal for 3.8 Release Notes
=== April 23th = release of Koha 3.8.0 ===
= what will be in 3.8 =
All what is in Koha 3.8 is stored in a bugzilla query:
http://bugs.koha-community.org/bugzilla3/buglist.cgi?cmdtype=dorem&remaction=run&namedcmd=3.8%20ENH&sharer_id=21
== Highlighted bugs ==
* errors = trap errors (mySQL) and return error message (instead of nothing those days) (http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=7184)
= What should be =
All what has been submitted and could be in Koha 3.8 is stored in a bugzilla query:
http://bugs.koha-community.org/bugzilla3/buglist.cgi?cmdtype=dorem&remaction=run&namedcmd=pending%20ENH%203.8&sharer_id=21
= what could be =
== Functionnal roadmap ==
* Acquisitions: improvements made by BibLibre and presented at Kohacon11. See https://depot.biblibre.com/ppoulain/KohaCon11/kohacon2011_newfeatures_F.Charbonnier_BibLibre.odp and https://depot.biblibre.com/ppoulain/KohaCon11/Kohacon2011_newfeatures_F.Charbonnier_BibLibre.odt for more details. Those enhancements are described in an "omnibus" bugzilla entry : http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=7163
* Serials: improvements made by BibLibre and presented at Kohacon11. See https://depot.biblibre.com/ppoulain/KohaCon11/kohacon2011_newfeatures_F.Charbonnier_BibLibre.odp and https://depot.biblibre.com/ppoulain/KohaCon11/Kohacon2011_newfeatures_F.Charbonnier_BibLibre.odt for more details. Those enhancements are described in an "omnibus" bugzilla entry : http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=7163
* Hourly loans: Koha 3.2's circulation loans are currently measured only in units of days.
However, because some libraries, especially academic libraries, perform loans
that are measured in minutes or hours, particularly for course reserves and
short loans, it is necessary to modify Koha to perform all circulation and
related transactions in units of minutes (see http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=5549)
* PDF printing: there are at least 2 methods used to generate PDF (one in acq, with a PDF model filled with informations) and one in overdue notices (print HTML, then generate PDF with xhtml2pdf)
* Search engine: update search engine to have a more modular search (Solr as a goal)
* Reserves rewrite: the reserve module is really dirty: many functions are nested, it will be worth a big cleaning !
* notification rewrite: there is more than one method to notify ppl (for overdues, before/after due date, for example)
* Add webservices for every action (ie: manage suggestion, manage biblios, manage patrons, ...) On the long term, it means a library could use Koha for some modules, and other tools for others
== Technical roadmap ==
The main goal of this technical roadmap is to improve Koha from a technical point of view to achieve the 4 following topics:
* Performance
* Maintainability
* Modularity
* Testability
Those improvements are grouped in a "performance omnibus" bugzilla entry: http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=7119
 
=== Performance axis ===
* "plackify" Koha to have data & code persistency (http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=7172)
* use Modern::Perl (http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=7171 and http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=6679)
* profile with NYT::Prof to find bottlenecks & possible improvements (a few page are frequently loaded : biblio detail, circulation & return. We could start by this) (http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=6875 and http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=6193)
* remove use of XML::Simple, that is very slow (http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=7170)
* Auth.pm does too many things, it must be splitted in smaller parts (http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=7174)
 - authentifying
 - checking & setting permissions
 - setting a lot of syspref available on each template (many of them being unused in most templates)
 - retrieving template
* Split Context into smaller parts: C4::Context::Preferences.pm, C4::Context::DBI.pm, C4::Context::Config.pm (using Config::Any), ...
* add nginx as possible webserver
To have an exact information about performance enhancements, the benchmarking script has been improved. The benchmark_for_3.8 page show the progress
=== Ergonomy axis ===
* remove YUI in favor of jquery (decision already discussed, but yet not applied) (http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=5481)
* remove old calendar (there are many for jquery) (http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=5778)
* css rewrite : the css is very long, not semantic, quite unusable for newbies
* datatable in every tables (http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=6836)
* rewrite HTML structure
** have "object" that can be displayed (it's awful to have biblio summary sometimes displayed on 1 line just title/author, sometimes displayed on 2 lines, with publisher & publication year)
** go for a more modular include system (doc-head-open/close/... can be improved)
* template indentation (seems there is no solution to automatically fix the template indentation, so this one may remain a hope...)
=== Code writing axis ===
* improve test suite coverage (http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=5327)
* logs = have a module dedicated to logging
* function naming = enforce coding guidelines
* function parameters = define coding guidelines
* any script that is longer than 300 lines must be investigated (300 being given randomly. The idea is to check all "long" scripts)
* investigate for dead code (is there a tool for that ?)
 
=== Modules (C4) axis ===
* Investigate all C4 scripts, find almost duplicated subs, subs that are wrongly named, 
* separate business logic from data access (have modules for BL & modules for DAO ?)
* rewrite Authentification layer (use Plack authentification ?)
* introduce DBIx::Class
=== Database axis ===
* check all foreign keys to find missing ones
* updatedatabase: improve it to remove the XXX trick for submitted code & have a non-linear updater (http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=7167)
Category:3.8