Michal Čihař - Archive for 3/2016

Weekly phpMyAdmin contributions 2016-W12

Last week we've finally released phpMyAdmin 4.6.0. That also means that 4.5.5 is out of maintenance now (however 4.4.15 and 4.0.10 are still supported if you're stuck with older PHP or MySQL versions for some reason).

The biggest focus was spent on handling incoming issues and checking if they are still present in 4.6.0 what in most cases proven not to be true.

Handled issues:

stardicter 0.9

For quite some time I maintain set of scripts to convert some freely available dictionaries to StarDict format. I think it's time to make it easily available to others as well, so it has seen first release on PyPI after the code is almost 10 years old.

The project originally started for English - Czech dictionary, but over the time support for more sources have been introduced and you can generate StarDict dictionaries from many other sources. So we now have German - Czech dictionary as well. There is also support for dicts.info which provides many bilingual dictionaries, unfortunately it's license doesn't allow to distribute them.

Weekly phpMyAdmin contributions 2016-W11

Last week was a bit less working for me as I had few days off. The 4.6.0 is about to be released in the time as this blog post will be published, so the focus was obviously on fixing bugs.

Most of annoying issues I've fixed were caused by our SQL Parser which we need to generate some export statements and which didn't properly understand some more complex syntax. Most of the export issues are now fixed, but there are still situations where it doesn't parse the query right, usually this is true for nested SELECT statements or some more complex constructs (CASE). Anyway it's being improved and works better with every release.

Handled issues:

Weekly phpMyAdmin contributions 2016-W10

Last week was quite equally split between refactoring and bug fixing. As we're getting closer to 4.6.0 release more people give feedback on it and some corner case issues are being discovered.

However the biggest challenge was strange bug that was reported long time ago - it affected only Italian translation on Windows server. After lot of debugging, I've realized that trying to encode Cardinalità</td> to json (using json_encode) causes this problem. Obviously there have to be more conditions met as this string only doesn't cause it, however removing it or placing x between à and < fixes the problem. In the end I've workarounded it in our code and hopefully I will get to create proper bugreport for php so that it can be fixed upstream as well.

The refactoring was mostly focused on encoding conversion part which is now all embedded in the Encoding class. It was quite simplified and should also speed up pages a bit as it does the initialization only when needed not on every phpMyAdmin's page.

Handled issues:

Weblate 2.5

After almost six months of development Weblate 2.5 has been released. It brings lot of improvements and it's quite hard to point few ones. The most important ones include support for Python 3, reports generators, placeables highlighting, extended keyboard shortcuts, configurable dashboard or group based ACLs.

Full list of changes for 2.5:

  • Fixed automatic translation for project owners.
  • Improved performance of commit and push operations.
  • New management command to add suggestions from command line.
  • Added support for merging comments on file upload.
  • Added support for some GNU extensions to C printf format.
  • Documentation improvements.
  • Added support for generating translator credits.
  • Added support for generating contributor stats.
  • Site wide search can search only in one language.
  • Improve quality checks for Armenian.
  • Support for starting translation components without existing translations.
  • Support for adding new transations in Qt TS.
  • Improved support for translating PHP files.
  • Performance improvements for quality checks.
  • Fixed sitewide search for failing checks.
  • Added option to specify source language.
  • Improved support for XLIFF files.
  • Extended list of options for import_project.
  • Improved targeting for whiteboard messages.
  • Support for automatic translation across projects.
  • Optimized fulltext search index.
  • Added management command for auto translation.
  • Added placeables highlighting.
  • Added keyboard shortcuts for placeables, checks and machine translations.
  • Improved translation locking.
  • Added quality check for AngularJS interpolation.
  • Added extensive group based ACLs.
  • Clarified terminology on strings needing review (formerly fuzzy).
  • Clarified terminology on strings needing action and not translated strings.
  • Support for Python 3.
  • Dropped support for Django 1.7.
  • Dropped dependency on msginit for creating new Gettext po files.
  • Added configurable dashboard views.
  • Improved notifications on parse erorrs.
  • Added option to import components with duplicate name to import_project.
  • Improved support for translating PHP files
  • Added XLIFF export for dictionary.
  • Added XLIFF and Gettext PO export for all translations.
  • Documentation improvements.
  • Added support for configurable automatic group assignments.
  • Improved adding of new translations.

If you are upgrading from older version, please follow our upgrading instructions.

You can find more information about Weblate on https://weblate.org, the code is hosted on Github. If you are curious how it looks, you can try it out on demo server. You can login there with demo account using demo password or register your own user. Weblate is also being used https://hosted.weblate.org/ as official translating service for phpMyAdmin, OsmAnd, Aptoide, FreedomBox, Weblate itself and many other projects.

Should you be looking for hosting of translations for your project, I'm happy to host them for you or help with setting it up on your infrastructure.

Further development of Weblate would not be possible without people providing donations, thanks to everybody who have helped so far! The roadmap for next release is just being prepared, you can influence this by expressing support for individual issues either by comments or by providing bounty for them.

Nostalgy

Sometimes you don't realize how does the time go until something reminds it to you. For me it when I've received some stuff from Marc, long term admin of the phpMyAdmin project. He had decided to leave some time ago and yesterday I've just received stuff he had collected at home including several awards.

phpMyAdmin awards

Looking at the awards is sometimes funny. For example in 2008 we got "Most Likely to Be the Next $1B Acquisition" :-).

Anyway this all reminded me that I've been around phpMyAdmin for almost 15 years now (my first contribution seems to be from 14th May 2001) and that's quite some time.

Weekly phpMyAdmin contributions 2016-W09

The last week was mostly spent on bugfixing and cleanup after security releases. Hopefully the amount of security reports will go down now.

Most of the bug fixes were in the SQL parser which influences quite a lot of parts of phpMyAdmin. It is responsible for splitting queries on import, generating queries for export or linting the queries as users type them.

Additionally Debian packages were also updated, for both unstable and testing and for Ubuntu PPA.

Handled issues:

Weekly phpMyAdmin contributions 2016-W08

As you could see tonight, last week was again full of security work. Mostly again XSS issues, but nothing really easily exploitable.

On the refactoring side, the most time was spent on bringing php-gettext to better shape. In the it ended up as being separate library which can be used by others as well - motranslator.

Another major task was to identify some easier tasks for prospective GSoC students and help them with implementing the changes. This worked quite well, but we will most likely loose those students as we were not selected this year to participate.

List of handled issues: