[[PageOutline]] = Contributing to the Qt Port of WebKit = == Reporting Bugs == Bug reports, feature requests, and patches for the Qt-port of WebKit should all be submitted to the [http://webkit.org/new-qtwebkit-bug WebKit Bugzilla]. Please follow the standard WebKit [http://webkit.org/quality/reporting.html bug reporting guidelines] and [http://webkit.org/quality/bugwriting.html steps for writing good bug reports], but take note of the following QtWebKit specifics. === Component === The [https://bugs.webkit.org/describecomponents.cgi?product=WebKit component] is used to signify the rough are that the bug relates to. If you don't know which one to choose leave the component at 'New Bug'. It's better to leave it at 'New Bug' than to choose one at random. '''Note:''' the 'QtWebKit' component should be used for bugs/features in the QtWebKit ''API'' layer, '''not''' to signify that the bug is a Qt-bug in general (see below). === Version === Leave at 'nightly build'. You should always test a bug against a nightly build of QtWebKit to make sure that it's still valid before reporting. === Severity === The [https://bugs.webkit.org/page.cgi?id=fields.html#bug_severity severity] is a signifier of what ''kind'' of bug we're talking about/how serious it is, and should not be confused with [https://bugs.webkit.org/page.cgi?id=fields.html priority], ie, when it will/should be be fixed (see below). Use the following rules of thumb when deciding on a severity: * Use 'Blocker' for compilation errors/build breaks * Use 'Critical' for crashes, loss of data, severe memory leak * Use 'Enhancement' for feature-requests/enhancements The severities 'Minor, Normal, Major' should then be used for "normal" bugs which don't fall into either of these categories, ranging from minor loss of function, or other problem where easy workaround is present, to major loss of function. === Platform and OS === Choose the settings most relevant to where you found the bug, or 'All' if you've confirmed that the bug exists on more than one platform. '''Note''': These two fields should not be used to signal which ''port'' of WebKit we're dealing with, but the underlying platform and OS. === Priority === This field is set by developers when scheduling and triaging tasks, please leave this at the default priority. === Keywords === We need a way to track bugs that are specific for the Qt port of WebKit. The right way to do this is using the 'Qt' [https://bugs.webkit.org/describekeywords.cgi keyword] (you may not see the keywords entry field until after creating the bug. If so, please add the keyword after creating the bug). * '''All bugs related to the Qt port of WebKit should have the keyword 'Qt'''' * Add the keyword 'Performance' if the bug is performance-related '''Note:''' Do not use the 'QtWebKit' ''component'' to signal that it's a Qt bug. The QtWebKit component is used for bugs/features in the QtWebKit ''API'' layer, '''not''' to signify that the bug is a Qt-bug in general. == Useful filters for existing Qt bugs == [https://bugs.webkit.org/buglist.cgi?short_desc_type=allwordssubstr&short_desc=&product=WebKit&long_desc_type=allwordssubstr&long_desc=&bug_status=UNCONFIRMED&bug_status=NEW&keywords_type=allwords&keywords=Qt&order=Importance Bugs (unconfirmed or new)] [https://bugs.webkit.org/buglist.cgi?short_desc_type=allwordssubstr&short_desc=&product=WebKit&component=Accessibility&component=CSS&component=Evangelism&component=Forms&component=Frames&component=History&component=HTML+DOM&component=HTML+Editing&component=Images&component=Java&component=JavaScriptCore&component=JavaScriptGlue&component=Layout+and+Rendering&component=Page+Loading&component=PDF&component=Platform&component=Plug-ins&component=Printing&component=SVG&component=Tables&component=Text&component=Tools+%2F+Tests&component=Web+Inspector&component=Web+Template+Framework&component=WebCore+JavaScript&component=WebCore+Misc.&component=WebKit+API&component=WebKit+Gtk&component=WebKit+Misc.&component=WebKit+Qt&component=WebKit+Website&component=WebKit+wx&component=XML&component=XML+DOM&long_desc_type=allwordssubstr&long_desc=&bug_status=ASSIGNED&bug_status=REOPENED&keywords_type=allwords&keywords=Qt&order=Importance Bugs (assigned)] [https://bugs.webkit.org/buglist.cgi?short_desc_type=allwordssubstr&short_desc=&product=WebKit&component=WebKit+Qt&long_desc_type=allwordssubstr&long_desc=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&keywords_type=allwords&keywords=Qt&order=Importance API] [https://bugs.webkit.org/buglist.cgi?short_desc_type=allwordssubstr&short_desc=&product=WebKit&long_desc_type=allwordssubstr&long_desc=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_severity=Blocker&keywords_type=allwords&keywords=Qt&order=Importance Compilation] [https://bugs.webkit.org/buglist.cgi?short_desc_type=allwordssubstr&short_desc=&product=WebKit&long_desc_type=allwordssubstr&long_desc=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_severity=Critical&keywords_type=allwords&keywords=Qt&order=Importance Crashes] [https://bugs.webkit.org/buglist.cgi?short_desc_type=allwordssubstr&short_desc=&product=WebKit&long_desc_type=allwordssubstr&long_desc=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_severity=Enhancement&keywords_type=allwords&keywords=Qt&order=Importance Enhancements] [https://bugs.webkit.org/buglist.cgi?short_desc_type=allwordssubstr&short_desc=&product=WebKit&component=Layout+and+Rendering&long_desc_type=allwordssubstr&long_desc=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&keywords_type=allwords&keywords=Qt&order=Importance Rendering and Layout] [https://bugs.webkit.org/buglist.cgi?short_desc_type=allwordssubstr&short_desc=&product=WebKit&long_desc_type=allwordssubstr&long_desc=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&keywords_type=allwords&keywords=Qt+Performance&order=Importance Performance] [https://bugs.webkit.org/buglist.cgi?short_desc_type=allwordssubstr&short_desc=&product=WebKit&component=Plug-ins&long_desc_type=allwordssubstr&long_desc=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&keywords_type=allwords&keywords=Qt&order=Importance Plugins] [https://bugs.webkit.org/buglist.cgi?short_desc_type=allwordssubstr&short_desc=&product=WebKit&component=Tools+%2F+Tests&long_desc_type=allwordssubstr&long_desc=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&keywords_type=allwords&keywords=Qt&order=Importance Tools and Tests] [https://bugs.webkit.org/showdependencytree.cgi?id=31552 QtWebKit 4.7 Pending API] == Checking out the sources == Developers who wish to contribute to the port can check out the sources like so: [http://gitorious.org/qtwebkit Gitorious.org] is hosting a [http://gitorious.org/qtwebkit public git repository] of the QtWebKit port. {{{ git clone git://gitorious.org/webkit/webkit.git }}} This is a git mirror of the WebKit SVN repository. If you also want to track the staging branches for QtWebKit releases, do: {{{ git remote add qtwebkit git://gitorious.org/+qtwebkit-developers/webkit/qtwebkit.git }}} This repository has the QtWebKit staging branches and other branches specific to the QtWebKit port. == Hacking on QtWebKit == Effective immediately all commits to QtWebKit should use the [http://webkit.org/coding/coding-style.html WebKit coding style] for '''all files''' in the project. That includes qwebview(.h|cpp), qwebpage(.h|.cpp) and all others. Repeat: the Qt style should not be used. Thank you. * [wiki:"QtWebKitHacking" QtWebKit overview] * [wiki:"QtWebKitAPI" Process of contribution to QtWebKit's API] === Running the tests === ==== Dependencies ==== You will need to install the following packages to run the layout tests: * Curl * Ruby 1.8 or greater * Apache 2 * libapache2-mod-php5 (i.e. the PHP 5 Apache 2 module) ==== Installing dependencies on Ubuntu ==== To install the required dependencies on Ubuntu, do {{{ sudo aptitude install curl ruby apache2 libapache2-mod-php5 }}} ==== Installing the layout test fonts/Using run-webkit-tests ==== To run the tests the normal WebKit layout test infrastructure is used. In addition you need a fixed set of fonts for testing. You can download them using Git from Gitorious: {{{ git clone git://gitorious.org/qtwebkit/testfonts.git }}} Then you have to set the WEBKIT_TESTFONTS variable to point to the newly checked-out testfonts directory. As the last step you can just run {{{ run-webkit-tests }}} from the WebKitTools/Scripts directory. Individual tests can be run just directly using for example {{{ run-webkit-tests LayoutTests/fast/forms/plaintext-mode-1.html }}} For debugging at test it may also be useful to run it directly in DumpRenderTree (with gdb): {{{ WebKitBuild/Debug/bin/DumpRenderTree -v LayoutTests/fast/forms/plaintext-mode-1.html }}} The expected output can usually be found in the file with the same name as the test itself but with the .expected extension. === Building API Docs === Before you can build the API docs you need make sure to have Qt build from sources and run {{{make docs}}} in your Qt build directory once. This will ensure that the Qt API documentation is built and can be referenced from the QtWebKit docs and it will also ensure that qdoc (the tool that generates the API docs) is built. To build the QtWebKit API docs simply run {{{make docs}}} in your build directory, i.e. {{{WebKitBuild/Release}}}. The output will be generated in HTML in the {{{doc/html}}} subdirectory. == Information on Git for QtWebKit developers == * [wiki:"QtWebKitGitInstructions" QtWebKit Git Instructions] * [wiki:"UsingGitWithWebKit" Using Git with WebKit] * [http://ktown.kde.org/~zrusin/git/git-cheat-sheet-medium.png A Git cheat sheet] * [http://eagain.net/articles/git-for-computer-scientists/ An excellent article on Git for computer scientists] == Communication == We use the regular webkit-dev mailing list to coordinate. You can also find us in the #webkit channel on irc.freenode.net. We have one mailing lists specific to the QtWebKit port * [http://lists.webkit.org/mailman/listinfo.cgi/webkit-qt webkit-qt Mailing List] == Obtaining Check-In Privileges == Contributors with a proven track record of good patch submissions and that have demonstrated an ability to work well with the community can obtain check-in privileges to the QtWebKit git repository. The various branches of the git repository mirror the branches in the [http://webkit.org/building/checkout.html upstream public webkit svn repository]. Patches that land on a branch in the git repository are not automatically pushed to the svn repository. Patches intended for the svn repository must first be reviewed and then committed by developers with [http://webkit.org/coding/contributing.html sufficient privileges]. Patches that are not specific to the QtWebKit port of the webkit project should not be submitted to the git repository rather they should be contributed directly to the upstream public webkit svn repository. To obtain check in privileges to the git repository the contributor should inquire from one of the Administrator(s) of the [http://gitorious.org/+qtwebkit-developers qtwebkit-developers team.] == Attic == * [wiki:"QtWebKitTodo" TODO List] * [wiki:"QtWebKitJournal" Stabilization Journal]