- 1 Introduction
- 2 Release plan
- 3 Specifications
- 4 Implementation
- 5 History
- 6 Additional information
The Bug Submission Assistant helps the libreoffice user to report a problem with one of the libreoffice components (Writer, Presentation etc.). One step at a time, it asks the information that will help the developer to understand the problem. It is a substitute to the bugzilla form which is better suited for experts. As can be seen in the screenshots below, the Bug Submission Assistant is a subset of the bugzilla form where only the required information is shown. They are presented to the user one by one to emphasize that they are necessary to properly fill a bug report. The Bug Submission Assistant needs to be continuously improved. A list of small tasks is available to the contributors, as well as detailed implementation notes to help her/him figure out how it is structured. Patches can be sent to Libreoffice Q&A mailing list. If provided with associated tests and screenshots demonstrating cross browser compatibility, they can be commited and published with a minimal effort.
A simple placeholder, so that a "Report a bug" link added to LibO Help menu will not lead to Nirvana, but to an existing Web page with a forward-link to he LibO bug submit page, eliminating some problems: The Submission page for all Projects is https://bugs.freedesktop.org/enter_bug.cgi Projekt LibO there has a link to https://bugs.freedesktop.org/enter_bug.cgi?product=LibreOffice That's not good, Initial status should be UNCONFIRMED, and user should select a LibO version, not report with random Version from Bugzilla. That will be reached with https://bugs.freedesktop.org/enter_bug.cgi?product=LibreOffice;bug_status=UNCONFIRMED;version=?. I simply added ";bug_status=UNCONFIRMED" to define Initial Status and ";version=?" to delete any Versions selection from picker.
The only thing the bug reporter / user will see of that all is "if forward will not work please click here".
For that we need some Webspace on the LibO servers(?), the rest can be done easily. For later milestone some administrative questions will have to be kept in mind, for example admin permissions for Porgrammer, ... .
- Release date: never. There has been some discussions about it but no URL was ever published. Milestone 0.2 was completed before Milestone 0.1.
Minimum Version, Automated proceeding of BugReport_Details:Selection of correct Component and Subcomponent, user can only submit if he checked for DUPlicates before. The Assistent should have "LibO Website look"
- Planned release date: September 23rd, 2011
Adding features as shown in first example with influence to Severity / Priority pickers and and and (additional search in OOo, ...)
- Planned release date: none
- Michael Meeks : http://lists.freedesktop.org/archives/libreoffice-qa/attachments/20110906/9cc0ddfe/attachment-0001.odt
- Rainer Bielefeld : http://wiki.documentfoundation.org/Bug_Submission_Assistant_-_ToDo#Define_steps_and_sort_order_for_items_of_Assistant and http://wiki.documentfoundation.org/Bug_Submission_Assistant_-_ToDo#Everything_else
- Christoph Noack : http://lists.freedesktop.org/archives/libreoffice/2011-March/009440.html
The following should contain all the information a developer need to know to work on the implementation of the Bug Submission Assistant. It covers all that cannot be easily deduced from reading the code or the associated tests. The general idea is to create a web application that fits in a single HTML page. This page ( https://bugassistant.libreoffice.org/libreoffice/bug/bug.html ) is added to the regular bugzilla web site ( https://bugs.freedesktop.org/ ). However, because it would make no sense to insert such a specialized page to bugs.freedesktop.org, it is done using a [#SystemAdministration|reverse proxy] assembling the two together. This server side setup allows the web application to query bugzilla without violating the origin policy and does not require any server code.
- It uses JQuery
- Each line of code must be tested
- The core is in bug.js
- The behavior of each step is encapsulated in a sate_XXXX function that is called by the previous step and is responsible for invoquing the state_YYYY function of the next step when it is finished.
- A state function is not given any argument and must not provide any argument to the next state function. For instance, the state_subcomponent will retrieve the name of the component from the DOM and not from its arguments.
- The general idea is to be able to develop within the context of a state function without knowing the behavior of the previous state functions nor trying to figure out an API between state functions.
- The error model is to throw after displaying a message in the .error element
- The $.bug.ajax function is a wrapper for $.ajax function that throw on error and display a message in the .error element
- The $.bug.lookup_result function analyzes a page returned by bugzilla, looking for an error pattern. If one is found, it display a message in the .error element and throws. Otherwise it returns the string found by the first capturing parenthesis of the success pattern.
- The code does not contain or generate any markup.
- The ajax calls must use the ajax().pipe() form for consistency. It is not a cosmetic point, it has impact on the code structure.
- The compatibility function is designed for code that needs to be run once, when the page is loaded, to help with cross browser compatibility
- The dropdown selections ( version, component etc. ) are implemented in select.js
- The tests are implemented in test.js.
- There is at least one test function per function found in the bug.js file.
- The test.html file partially copies the markup from bug.xhtml. It is intentional and no attempt must be made to run the tests using the exact same markup.
- The test.html file must include the same CSS as bug.xhtml because it will have consequences on the position and visibility of the elements and such consequences must be tested.
- If the browser version is known to fail, a link to bugzilla is shown
- For each supported browsers, the tests are run, each ?skin=XXX URL is checked, a fake bug is reported and then deleted from bugzilla. A permanent item is set in the TODO list as this work must be done on a regular basis.
- Each state of the Bug Submission Assistant is shown as a static page built from the skin.js file. It is designed to allow integration without requiring multiple steps to reach a given state, nor the bugzilla backend.
Installation and maintainance
- Updating https://bugassistant.libreoffice.org/
- ssh firstname.lastname@example.org
- cd /var/www/sites/bugassistant.libreoffice.org/website/pull
- git pull
<iframe src="https://bugassistant.libreoffice.org/libreoffice/bug/bug.html" width="850" height="800" frameborder="0"> </iframe>
Note that the space before the </iframe> is required to prevent silverstripe from editing the inner HTML.
The bugassistant.libreoffice.org host name is defined as a reverse proxy to https://bugs.freedesktop.org on kermit
<VirtualHost *:443> ServerName bugassistant.libreoffice.org DocumentRoot /var/www/sites/bugassistant.libreoffice.org ProxyPass /libreoffice ! ProxyPass / https://bugs.freedesktop.org/ retry=1 ProxyPreserveHost On SSLProxyEngine On
SSLCertificateFile /etc/ssl/certs/libreoffice.org.crt SSLCertificateKeyFile /etc/ssl/private/libreoffice.org.key SSLCertificateChainFile /etc/ssl/certs/libreoffice.org.chain
CustomLog /var/log/apache2/bugassistant.libreoffice.org.log vhost_combined
- irc.freenode.net#sophi proposed to relay the need for translation, both on *.libreoffice.org and the wiki.
- When the http://libreoffice.org/get-help/bug/ page content is modified, it must be copied over to the *.libreoffice.org sites which are separate silversite instances. The URL in the iframe must be copied over and the bug-XX.html changed to the matching locale in the wiki. For instance,
<iframe src="https://bugassistant.libreoffice.org/libreoffice/bug/bug-en.html" width="850" height="800" frameborder="0"> </iframe>
must be replaced by
<iframe src="https://bugassistant.libreoffice.org/libreoffice/bug/bug-fr.html" width="850" height="800" frameborder="0"> </iframe>
- The wiki page http://wiki.documentfoundation.org/BugReport_Details contains all the english text used to create the https://bugassistant.libreoffice.org/libreoffice/bug/bug-en.html page. The http://wiki.documentfoundation.org/BugReport_Details/xx contains all the english text used to create the https://bugassistant.libreoffice.org/libreoffice/bug/bug-xx.html page. The software used to create bug-en.html from BugReport_Details relies on elements such as
<div class="component"> ... </div>
that can be found in the source of the page. These elements must be preserved and not translated so that the software can identify which texts must be used.
- https://bugs.freedesktop.org/query.cgi?product=LibreOffice&query_format=advanced : list of versions.
- http://wiki.documentfoundation.org/BugReport_Details extracted using a dedicated microformat:
- In September 2011 The first implementation of the Bug Submission Assistant is completed, matching the Milestone 2.0 and is published.