== QtWebKit code camp 08-10.12.2009 == More than [wiki:QtWebKit/CodeCamp200912Teams 30 developers gathered together] for QtWebKit code camp in Wiesbaden, Germany. === Intro & general presentations === In the beginning there were three presentations: * Henri Haverinen: QtWebKit roadmapping & using [http://bugreports.qt.nokia.com/secure/Dashboard.jspa Qt Jira] * Kenneth Christiansen: How Web and [http://gitorious.org/+qt-kinetic-developers/qt/kinetic QML] fit together * Akos Kiss: WebKit related activities at the [attachment:akiss-uszintro.pdf University of Szeged] After that people were split into five work stream: Performance & Architecture, User Interface, JavaScriptCore, QA and Relasing & Roadmapping === Performance & Architecture === 1st Day * Anti talking about tile based rendering. Working prototype using QImage exists, need to get support from Qt to draw to QPixmap from a thread, Discussion if tiling should be supported for everyone or just mobile/QGraphicsView * Presentation on how to support JavaScript programmers to see what is going on. Currently something like mozAfterPaint is implemented. This way a JS programmer can record which areas got painted. In the future having a heap profile would be good as well. * BenjaminP talking about plans for Qt4.7 to regularily run benchmarks, automate and store results during the development. * Talking about OOM handling, checking each allocation vs. just getting killed by the OS vs. getting signals from the OS and then stop loading... * Zoltan talks about a valgrind skin called [http://webkit.sed.hu/node/29 freya] to instrument memory usage including showing how much and who was allocating the memory, common call frames can be removed from the trace. 2nd Day * Holger talks about the QtWebKitPerformanceWork and QtWebKitPerformanceUtilities and how the can be used to measure Qt performance. Comments included limiting the bandwidth used for the fake http server. * Shortly discussed the RGB16 approach to save some memory by using color converting RGB32 images to RGB16, specially on symbian a 16bit backingstore exists and painting can be done in 16 bit. [https://bugs.webkit.org/show_bug.cgi?id=29279 #29279] * Shortly discussed using WebCore/platform/image-decoders. The downsampling is a feature one would like to use, also the performance appears to be better. We should explore using them [https://bugs.webkit.org/show_bug.cgi?id=32410 #32410]. 3rd Day * Holger is MIA in the morning... claimed to be sick * BenjaminP and Noam look into QtWebKit's CSS Animation speed and see we have a clip region with 800 rects... A quick test shows a nice improvement. * Holger talks with Zoltan of Szeged about performance tuning. Both find out that current focus is more on performance and that both parties more or less see the same in profile reports. CSS and JS parsing is dominating our page loading. Szeged's idea is to try a hand written parser for comparison. Some more coordination is needed, for the next few months there is no overlap in work though. === User Interface === 1st Day * Discussed interfacing of touch events with WebKit. 2nd Day Form controls issues: * Multiple selection list box has too small items in order to be selectable on a touch device. Different platforms and devices have specialized controls that allow comfortable user interaction. Currently WebKit does not allow usage of such controls. Multiple selection list box shall instantiate the appropriate QtControl upon focus. (Carol Szabo, cszabo1) * Determine the appropriate control. * There are websites that show simulated popup menus upon hovering over a link, but clicking on the link takes the user to a new page. The desired user experience for a touch device is that generally touching focusable controls results in an emulated mouse click, but for links as described above the first touch should result only in hovering, only the second touch should result in a click. * Support hover without click on touch (Misha Tyutyunik). * WAP CSS can specify restrictions to acceptable characters in an edit box. This could be useful in assigning actions to keypresses on devices with limited keyboards. I.e. if an edit control only accepts numeric keyboard should act as a numeric only keyboard, versus having the first key press result in letters being generated. (Carol Szabo, cszabo1) * Find closest focusable node to point (Joe Ligman) * List focusable nodes that intersect a given rectangle. (Joe Ligman) * Ability to select items from a simulated dropdown list while an edit box has the focus. (Misha Tyutyunik) * Solution 1: Change the way the editbox is exited to not exit on down if the JavaScript handles the down key and makes changes to the document. * Solution 2: Change the editbox to exit only on long page down if there is a handler for the key in JavaScript or another solution for releaving the down key from the exit edit box action if needed. * Adding the ability to scroll WebElements (Joe Ligman) * Having the virtual keyboard send key events to WebCore. (Joe Ligman) * Adding recursive scrolling to QWebFrame. (Joe Ligman) * Styling of Form Controls (Carol Szabo, cszabo1) 3rd Day * No activity for this group. === Java Script Core === 1st Day * Presentations * Loadable Abstract Syntax Tree (for JavaScript source code) * JIT in nutshell * About QtScript * Improving Garbage Collector (when we close a widget, we should regain memory) * Regular Expression Engine 2nd day * very long discussion about how JavaScriptCore works (all the steps from parsing to JIT-ing) * Share our knowledge with each other * QtScript internals (and examples) 3rd day * Debugging and profiling in WebKit * Discussions how we can improve WebKit's performance === QA === Informal presentation with discussion: * Andras Becsi (bbandix): Problems with the current Qt DRT, + a tool to monitor and query historic test results ([attachment:bbandix_drt_tools.pdf pdf]) * Gabor Rapcsanyi (rgabor): Current buildbot setup and the future upgrade possibilities ([attachment:rgabor_buildbot.pdf pdf]) * Csaba Osztrogonac (ossy): Qt build infrastructure and problems with incremental builds * Tor Arne Vestbø (torarne): Cross platform layout-test results using SVG-fonts and automation of interpreting results The discussion spawned off a few action points: * Use automated tools to parse test results and give us more information about where we are * Split of Qt buildbot into build and tests stages (makes it easier to detect Qt build breaks) * Fix the Qt incremental build to detect dependencies in generated sources correctly * Try to use SVG fonts to get the same results on mac,win,linux (++) === Roadmap & Releasing ===