Thursday, December 13, 2018

And here we go for our next version of Lino! The new lino.modlib.summaries.Summarized mixin didn’t yet update its fields during checkdata.

And I had no pangs of conscience to completely review the API at that occasion: Summarizable becomes Summarized, Summary becomes MonthlySlaveSummary, a new attribute delete_them_all to make sure the developer knows what it means. I updated the specs for lino.modlib.summaries, but am aware that it is still far from being complete.

I released 2018-12-13 on PyPI which also requires two changes in XL, so also this requires a version bump to 18.12.3. 2018-12-13 also has a little change lino.utils.jsgen.py2js(), this is Tonis’ work.

OMG! It seems that we really need separate release notes for Lino and XL.

Actually even separate release notes won’t be of practical use, here is an example:

The API optimizations in lino.modlib.summaries also cause a change in the database structure for the lino_xl.lib.userstats plugin: until now the userstats.Summary model had a pointer to system.SiteConfig which was completely useless. This field now goes away. This plugin is not used in any production site, so there is no need to write a release note about it.

Changes in the database structure should usually be mentioned in the release notes, at least if they are not handled automatically. Until now I handle such changes in a very simple way: when the production site wants a new version, I simply restore a snapshot of the production site into a new version and look at the error messages. I often do this on the fly some evening when they are not working. While this approach is very economic on administrative costs, it has the disadvantage that Hamza or Tonis would have difficulties to do it without me (the guy who wrote the changes).

All this took me a whole day. And I am sure that none of our customers would agree to pay for this work. OTOH if I were a customer, I would refuse to use a framework where such changes are not being done. And of course as a programmer I refuse to maintain applications on an unmaintained framework.

I realized that lino_welfare.modlib was missing in the API. And the API was hidden in the Contributor’s Guide, not it is at the top-level index of the Lino book.