Minutes from the 4th meeting of the 4.6 Release Team

These minutes are also posted to the typo3.projects.v4 mailing list. If you want to comment on specific topics, feel free to reply on the list. Thanks for your participation!

April 4th, 2011

The 4.6 release team meets weekly for a Skype discussion round on the current activities. If you find this report interesting or have some comment or question about a particular topic, don't hesitate to follow-up on the thread in the v4 mailing list.

On Monday, April 4th 2011 we hold our 4th meeting with the following participants:

  • Xavier Perseguers (4.6 Release Manager)
  • Oliver Hader (Core Team Leader)
  • Benjamin Mack (4.4 Release Manager)
  • Steffen Kamper (4.5 Technical Leader)
  • Ben van't Ende (Community Manager)

Projects

Backend User Interface

Concerning reorganizing elements in the backend user interface, Xavier and Jens had a Skype Meeting (see accordant issue) with these results:
  • backend users shall have an accordant widget in the topbar that allows to enable/disable features like the localization view, RTE, etc. - for admin users this is extended by the accordant possibilities (see screenshot in the issue)
  • the left part of the topbar shall be used to display informations, the right part to provide (module) actions
  • it is planned to visualize warnings, errors and notices by displaying an icon in the topbar - by clicking the icon details are shown

Code Cleanup

The cleanup is in a good progress (see accordant issue) and shall be finished until TYPO3 4.6 alpha1.
Xavier provided a start for changing the visibility of class member variables - he does not have time to finish this for all classes in the Core, however it's a good start one can continue with (see Gerrit review)

XLIFF vs. locallang.xml

A new project to integrate the XLIFF standard into TYPO3 v4 was created. XLIFF, which is also used by other OSS projects and TYPO3 Phoenix/5.0, will replace the current locallang.xml solution.

TYPO3 4.6 Progress

There are a lot of issues assigned and targeted for TYPO3 4.6 alpha1. Since the first alpha will be released in one month on May 10th 2011, it's required to put some pressure on those tasks, at least it would be great to have at least 80% finished. So, this is a reminder to all assignees to take over the responsibility to really have those tasks finished within the next few weeks.
Our 4.6 Release Manager Xavier will be at the Swiss Military Service between April 12th 2011 and May 6th 2011 - thus he will be offline most of the time and only available at the weekend. Benni and Olly will jump in and take care of the prioritized projects to be ready for 4.6 alpha1.

General issues

TYPO3 4.5 Performance

Steffen and Olly had a Skype meeting on the performance of the TYPO3 backend and here are the results:

  • AJAX requests in general (ExtDirect)
    • Different ExtDirect requests are already combined to one single request if they are triggered in an accordant time frame.
    • Each AJAX request will do the whole backend bootstrapping (init.php) which is not required in all cases (see init.php part).
    • The goal is to determine, combine and thus lower the AJAX requests and the load produced by doing the bootstrap again and again.
  • PageTree issues
    • It turned out that showing the PageTree takes seconds(!) on sites with many pages.
    • Each page node creates a separate request that will be processed and creates another request if there are subpages of that node.
      • This behavior can be modified by setting $GLOBALS['TYPO3_CONF_VARS']['BE']['pageTree']['preloadLimit'] to a higher value e.g. 500 (default is 50)
      • The mentioned property was used in a wrong way ($GLOBALS['BE']['pageTree']['preloadLimit'], "TYPO3_CONF_VARS" was missing), resulting in having a default value of "0" - this will be fixed with TYPO3 4.5.3 (see accordant issue)
      • Steffen came up with the idea to automatically calculate this value which will depend on the number of pages of a site and can be influenced only by defining a factor to multiply the value
      • Using a higher value than zero (e.g. 50 or 100) here already reduced the number of AJAX requests a lot.
      • The state of a node in the pagetree is now always stored once the node was expanded or collapsed and contains additional information on the rootline of the node. In TYPO3 4.4 only the expanded nodes with the accordant uid were stored. Since the information is persisted in the BE_USER->uc, it might exceed the available space of that field in the database.
  • BE_USER->uc storage
    • Since nearly all modules store temporary states to the backend user, it's worth to think about a different solution here.
    • t3lib_registry/sys_registry provides a way to persist information in the database that is accessible by a unique namespace.
    • However, this information is related to a particular backend user and there is no way to introduce the uid of the backend user with t3lib_registry (it can be part of the namespace of course, however on flushing this by uid, all elements must be iterated).
  • Bootstrap / init.php
    • init.php contains a lot of stuff and checks that are not required on each request - e.g. checking whether the install tool shall be loaded seems to be superfluous in 99% of all requests.
    • Some results are already ready since there was a workshop to rewrite and clean-up during the T3DD10 in Elmshorn.
    • Maybe it's also worth to provide a way to only initialize a basic environment and load other parts on demand (similar to the eID approach in the frontend).
  • ExtJS usage in the backend
    • ExtJS is already loaded in backend.php and available there
    • However, modules that are based on ExtJS still load their set of ExtJS in the content area and thus double include ExtJS.
    • Steffen evaluated whether it's possible to reference and use the ExtJS from top (backend.php), but this seems to be problematic if requests are triggered since the URI being used is different. Besides that it will be difficult to extend the TYPO3 JavaScript that holds information on settings and used language labels.
  • Concatenation of JavaScript files
    • Currently only CSS files are merged to one file (if defined on loading the file).
    • To lower the number of requests to load JavaScript files this shall also be done in this case.
    • It might lead to difficulties if relative URIs are used (since the concatenated file will be loaded from /typo3temp/).
    • Steffen already created an accordant patch some months ago (see accordant issue)
  • Optimize database queries
    • There are a lot of superfluous database queries used in the backend (e.g. for checking the rootline and access to a page) that can be reduced and optimized.
    • In general queries shall be examined by using the EXPLAIN statement to determine whether additional indexes can be used for a query.
  • Disable loading mask in the backend
    • One thing seems to be annoying to some users is the loading mask (spinning wheel) shown on every click in the backend.
    • We agreed on having a possibility to disable this in the backend user settings for advanced users that know where they can click when a module is still loading (see accordant issue)
  • Disable tooltips being shown in the backend
    • Since tooltips also might be annoying sometime and besides that are fetching the information by using an AJAX request, we agreed to have a possibility to disable them as well (see accordant issue)
  • Common testing environment
    • Since we need a way to ensure whether performance gets better or worse, we need a common reference server.
    • This server then holds some automatic test cases that allows to put a change to accordant numbers (e.g. "loading improved from 3500ms to 500ms")
    • Olly will take care of asking Ernesto concerning a reference server (since he also provided a system for the skinning team) and ask some selenium experts concerning Selenium tests and how to implement automatic measurements here.

Xavier mentioned that prepared queries are only simulated at the moment and make most sense in TYPO3 if DBAL is enabled, thus for non-MySQL databases. However, as MySQL supports real prepared queries, this would really be worth the effort to use it natively for MySQL if we manage to have them used more widely within TYPO3.

Improve GMENU

GMENU in the frontend creates a lot of files for accordant states. Since this is bad concerning performance as well and also has a negative impact on loading a website, it's considerable to integrate a solution that will use sprites here, like ggspritedgmenu. There are still some problems with transparency, however the solution already seems to be almost ready.

Backend Sprite API

Steffen asked whether it's possible to use bigger icons (more than 16x16 pixels) with the sprites being used in the backend. Benni mentioned that it's possible to override this by using custom CSS.
However, it turned out that proper documentation and examples are missing in this area. The idea is to have e.g. a skinning_tutorial extension that shows how the new features can be used. Xavier wants to ask two of the Steffens (Ritter and Gebert) since they have been very active in this topic.

Backend API

Steffen raised the topic of a general backend API that can be used to determine e.g. the current page a user selected and the current module being used. Currently it seems that this is too tricky and needs some improvement. However, we did not come up with a proper solution but wanted to share this with the community and hopefully get a discussion out of that.

TYPO3.org Relaunch Week

The TYPO3.org Relaunch Week will he held from April 16th to 23rd 2011 in Essen/Germany. The goal is to finish the tasks that were already defined and have a new shiny TYPO3.org website after that week. After that week the discussions, issue trackers and mailing lists shall be shared with the public - this is also the time when custom issues can be handed in.

Git/Gerrit

It seems that some people are still not used to the new Git/Gerrit infrastructure - in general the amount of new patches and reviews could be a bit more. It's not quite sure whether people are having technical difficulties or just did not try out the new tools. Anyways, if it's required we can arrange some support sessions on IRC to help community members to get started with Git and Gerrit.
Steffen came up with the idea to have a Git sandbox which can just be used to try out the behavior of Git without the possibility to break something or start superfluous discussions. Since the Core mailing list is not used anymore to discuss patches, it might be worth to send a mail to the list if a new patch is ready to be reviewed. Xavier came up with the idea of automatizing this within Gerrit as we are already able to subscribe and be informed of such activity.

ExtJS 4

Since Steffen is currently very active to elaborate the new features of the next ExtJS version 4, he shared a video with us that demonstrates the new possibilities. We were discussing how to automatically test and do quality assurance for ExtJS applications and user interfaces in general - using Selenium is one aspect here, however this video shows how the ExtJS developers from Sencha are doing it.

Dates

  • TYPO3 4.6 alpha1 on May 10th 2011
  • Feature Freeze and TYPO3 4.6 beta1 on August 2nd 2011
    no new features and no exceptions after the feature freeze date
  • Final Release of TYPO3 4.6.0 on October 25th 2011

Next steps

If you feel interested in a particular project or task, please reply on the list or directly get in contact with Xavier Perseguers as Release Manager of TYPO3 4.6.