Morten
Uncategorized
Documentation
Posted by Morten
 in Uncategorized, Documentation
 on Monday, November 02, 2009 @ 10:05

The response on my first blog post about the documentation facelift was so huge that for a moment I was wondering of what I had gotten myself into.:) A response like this would for sure set the level of expectations sky high and be giving our team a lot of work to be able to meet our users’ wishes. Yet again, that is what design is all about – meeting the needs and demands of the people using the product. Moreover, getting a response and engagement like this is more than a designer could ever wish for. It shows that our users care about the documentation, and that is very inspiring.

Now, with this in mind we continued the work by creating a user test that we ran at Qt Developer Days in Munich a few weeks back. If the response on the blog post was huge, the amount of people doing the test was even larger. Close to 15 % of the Developer Days attendees did the survey, and we got lots and lots of good feedback. I want to take this opportunity to thank all those who participated. All together you spent close to twelve hours giving us valuable information for our design process. That is amazing! :)

We now have good numbers on which solutions you want, and even better numbers on what you do not want. In addition to the poles, we got many constructive comments, which have been very useful in the process so far. To a large degree, the feedback from the test reflects the results from the feedback on the first blog post. Therefore, without dragging things out further I will tell you about the results from the test.

Design profile
In the test the users were told to choose from a set of different design concepts. The first three concepts were quite similar to the current design, displaying a set of categorized link menus. The design that got the most votes was the one using colors, icons and visual structures like borders and bullet points. This was not really a surprise since the blog feedback gave us the same indications. What did surprise me though, was that you didn’t want search results from the Google custom search engine embedded in the documentation pages. That is a clear indication of the value of user testing. :)

Full front page design

However, to sum it up, the design and feature profile you want us to use is:

  • A front page similar to the current one, only using more colors and some discrete icons for recognition.
  • A search box, preferably with automatic suggestions for keywords as you type. Ajax search design example
  • A line of bread crumb links in the top area of the page, visualizing the page hierarchy and enabling the user to “jump” to pages several levels up. Bread crumbs design example
  • A left-side menu on sub-level pages (like the class pages), ordered in a hierarchical way. Menu design example
  • A way to hide and show detailed information. Show/hide design example
  • A history box displaying resent searches.

You have also said that you learn best from reading and testing examples and how-tos’. We have a great collection of examples already, but we could also create more of them.

Your list of wishes
As we now draw nearer to Christmas, the concept of wish lists should be familiar to most of us. We send of our list to Santa Claus – or tell our beloved ones what we wish for – and then hope for the best. Sometimes we get what we wish for, and sometimes not. My point is this; the list of wishes will be our guide on the way to what I hope will be a good design, but it will not be a guarantee to make your every wish come true.

Our goal is still to create a design meeting the needs of both the experienced and new Qt users. We need better navigation, better ways to categorize overviews and to improve searches. In other words, we have a lot of work in the months to come. We need to further analyze the design and find out how we best could implement the new solutions. There will be some short-term goals and some long-term goals. I will blog more about them as soon as they are implemented. I still urge you to keep the feedback coming in. It is useful for us and very inspiring.

Morten
Documentation
Posted by Morten
 in Documentation
 on Monday, September 28, 2009 @ 11:45

Writing good documentation is not all about the quality of what we write, but also about how we present the information. A large base of knowledge is of no use to you if there is not a good way of accessing the information you are looking for. The documentation must be accessible and easy to use, as well as accurate and informative.

Design philosophy
Lately, we have been looking for better ways to present the Qt documentation on the web. Our current documentation consists of static pages linked together in the good old fashion way of Web 1.0. Yes it works, but the potential of Web 2.0 is worth investigating and could increase the usability of the site. Ever since Qt version 2.3 (at least), the Qt documentation have had a uniform look and structure. During the time since those days, Qt has evolved, gained a lot of new features, and now covers a lot of more ground than its predecessors. This evolution has also effected the documentation, making the base of information larger and more complex. Despite the growing amount of information the documentation has kept its simple but effective design because it works for our users. That is something we need to preserve when adding new features to it.

If you have peaked at the documentation in the Qt 4.6 snapshot, you have probably noticed the search box added in the top corner of the index page. This is a custom Google search engine, scanning our documentation for results matching your query. Now, there is nothing revolutionary about this feature, but this is one way we can improve the documentation usability. Adding such a feature has no remarkable impact on the rest of the documentation. However, adding new features to the site should not be done without research. If we are going to do changes we need an idea or a philosophy on what we want to accomplish.

We want the documentation to be as user friendly as possible. That means that it should be easy to find detailed information on a subject if you are an expert and knows what you are looking for. The same should apply if you are a beginner looking for good tutorials and overviews. We also want to provide a structure that requires a minimum of searches and mouse clicks. Today, a search for detailed information on a subject can require browsing as much as seven or eight levels down using links from the index page. This makes navigation hard and tiresome, if it is not combined with queries to a search engine. Dynamic menus and a flat structure could help us on our way accomplish this. By creating a good cognitive design, we want to make your journey from question to answer as short as possible so you can focus on creating good applications.

So with these goals in mind we are trying to find a structure and a set of new features that will improve the future Qt documentation. Finding such a structure requires recognizing how the different elements in the documentation relate to one another. Questions like how they should be categorized regarding technologies, types of features or platforms, comes to mind and needs to be sorted out. Also we need to sort out which categories are more relevant and needs to appear at the front line to keep the structure flat. To keep a flat structure, the real trick will be to find out how to present as much information as possible on the least amount of space, and without making it chaotic.

Design reserach
That said, there are probably as many opinions about how the documentation should be organized as there are Qt users, and it is exactly these opinions that we are interested in. That is also why we will talk to our users about this issue during Devdays in Munich this year. We want to do some research on how developers use the Qt documentation, and how they would like the documentation to evolve.

As part of our research, we have created a set of different sample pages, showing a range of concepts from the super-social-inspired pages, to minimalistic and clean overviews. Our goal is to visualize different concepts and get feedback on what our users think of them. This user test will mainly take place face to face with developers during Devdays in Munich. The results of this user test will be brought back to the team in Oslo and used as input for the design process.

With a few weeks left until Devdays, we would like to show you a few of the features included in these sketches and say a few words about them. This will enable you as a user to give us your opinion even if you are not going to Devdays, and it is giving us a chance to adapt our approach to the problem. However, I must underline that these samples only show the wide specter of choices we have when looking for new features. Our purpose with this preview is to get feedback from our blog readers regarding what they like and don’t like about the features. In the list below you can have a look at our ideas, and add your comments.

Different concepts
Suggestion 1.
This is the current design, displaying menus of links in different categories. The number of links has been set to a minimum, but still covering the essential parts of the documentation.
Suggestion 1

Suggestion 2.
This sample uses icons and colors with the link lists, adding cognitive effects to the design. It also makes the page more pleasant to look at. It contains a search box for queries in addition to a line of top-level links at the page top.
Suggestion 2

Suggestion 3.
This sample is stripped of all eye-candy and cognitive image use. This makes the listed links more visible as long as they are categorized logically and the number of links is limited. The page contains a line of top-level links and search box at the top of the page.
Suggestion 3

Suggestion 4.
This sample shows a very minimalistic page containing only a few links and large images. This limits the navigation from the index page, but makes it easier to locate the relevant category to browse through. This page also contains a line of top-level links and search box at the top of the page.
Suggestion 4

Suggestion 5.
This sample has a more “social” concept. In addition to a menu with a hierarchical structure to the left, it has three menus showing content based on what the user previously has browsed in the docs, as well as menus based on ranks and top searches. As before the page contains a line of top-level links and search box at the top of the page.
Suggestion 5

Suggestion 6.
This sample is based on a “social” concept. These elements include menus containing top searches, history, blog entries etc. This can be an effective way of notifying the user about new features and popular subjects.
Suggestion 6

Search features
Suggestion 1 - Search features
This sample is based on the current design, but also provides a search box using AJAX requests to create a list of suggestions when typing.
Suggestion 1 - Search features

Suggestion 2 - Search features
This sample demonstrates how Google search results can be integrated onto the documentation page. The user avoids leaving the doc pages and can navigate the docs without having to go back from the Google result page. Please note the keywords on the right hand side making it easier to further narrow down the search.
Suggestion 2 - Search features

Navigation features
Suggestion - Navigation features
This sample is based on the concept in “Suggestion 5″, displaying a long page, containing menus and the search box. In addition the header of the page is floating, so the links and search box will always be visible. Also note that the bread crumb-links display a drop down menu to other relevant documents on the same level. Finally, the descriptions of functions etc., is hidden in a collapsible paragraph to make the content less chaotic.
Suggestion - Navigation features

Feedback
We want to create a good and usable design for the documentation. That is why we want your feedback, and there are two ways to contribute. You can add your comments to this blog entry. However, if you are going to Devdays in Munich, please stop by us and participate in the user-testing. It won’t take long, I promise. :)

You may also add your own ideas in your comment. It just might happen that you thought of something we didn’t, which could be the next genius idea for online documentation.

Sebastian Pipping
Documentation
doxygen2qthelp
 in Documentation, doxygen2qthelp
 on Thursday, January 15, 2009 @ 13:37

In June 2008, I wrote about doxygen2qthelp and how to create Assistant-viewable content, i.e., Qt Compressed Help .qch files, from Doxygen. In this post, I would like to further elaborate on showing Doxygen generated documentation in Qt Assistant.

Later, I collaborated with Doxygen’s head developer, Dimitri van Heesch. As a result, Doxygen 1.5.7.1 introduced direct support for .qhp and indirect support for .qch (through qhelpgenerator). However, this did not work perfectly, but the Subversion repository contained a fix soon after.

The recently released Qt Quarterly 28 has an article that explains how to make Doxygen generate .qch and .qhp files for you, out of the box. This article is
titled “HTML Files and Help Projects” and is freely available online.

Doxygen 1.5.8 has now been released and it contains this fix. I’m aware that a few days have passed since December 27th, but I believe this news is still new for some.

So, to sum up:

That’s it, have a nice day.

Sebastian Pipping
Uncategorized
Labs
Documentation
doxygen2qthelp
 in Uncategorized, Labs, Documentation, doxygen2qthelp
 on Friday, June 20, 2008 @ 17:20

Intro

Hello! I have something to show you. I’ve been working on a tool that teams up with Doxygen to produce .qch files (Qt Compressed Help) for use with Qt Assistant from your code documentation - a feature that has been asked for repeatedly since 2003 ([1][2][3]..). In this post I will introduce doxygen2qthelp, the answer to your request.

Download

You can grab the current code from our Subversion repository like this:

$ svn co svn://labs.trolltech.com/svn/documentation/doxygen2qthelp

Building

I should mention doxygen2qthelp requires a Qt version later than 4.4.0, which at the moment means a snapshot of 2008-04-24 or later. If you start building now be sure to configure with -assistant-webkit. More about this later.

Background

Doxygen has been able to produce .chm files (Compressed HTML) from properly documented code. To be precise Doxygen does not create the .chm files itself: instead it produces a bunch of files that are used to instruct the Microsoft® HTML Help Compiler (hhc.exe). These three files contain the table of contens (file index.hhc), the list of keywords appearing in the index (file index.hhk), and a project description (file index.hhp). The former two of these are written in some form of "perverted HTML". What doxygen2qthelp does: take these files, parse through the soup, and create a ready-to-go .qch file for viewing in Qt Assistant. Alternatively, a fine-control .qhp file (Qt Help Project) can be produced.

Usage

Let’s say you were the author of the QWT library and you felt like shipping .qch files of your documentation. What would you do? Let’s first look at a manual approach, and see what we can automate after.

  1. Enable Microsoft® HTML Help output
    First you need to tell Doxygen to generate HTML Help output. To do that you enable GENERATE_HTMLHELP

    GENERATE_HTMLHELP = YES

    in the Doxyfile. Without HHC_LOCATION being set Doxygen will just produced the index.hh* files and not try to call the Help Compiler from Microsoft®. That’s just how we like it, especially on our Linux Machine.

  2. Run Doxygen
    If everything went smoothly we should have both HTML documentation and the index.hh* in doc/html/ .
  3. Run doxygen2qthelp
    Now doxygen2qthelp comes into play. Invoke it from the QWT source folder like this:

    $ doxygen2qthelp --namespace=net.sourceforge.qwt --folder=qwt-5.0.2 doc/html/index.hhp qwt-5.0.2-doc.qch

    Alternatively you could also write this calls information into an .ini file and invoke it like this:

    $ doxygen2qthelp --config qwt.ini

    -- qwt.ini --
    Namespace = net.sourceforge.qwt
    VirtualFolder = qwt-5.0.2
    InputFilename = doc/html/index.hhp
    OutputFilename = qwt-5.0.2-doc.qch

  4. Enjoy
    Open the documentation in Qt Assistant, preferrably a version from Qt 4.4.0 or later configured to use Webkit in Assistant (./configure -assistant-webkit). Without Webkit parts of the Doxygen HTML will look quite messy.

Automation

Wouldn’t it be cool if we could teach Doxygen to call doxygen2qthelp for us? Good news: I wrote a patch against Doxygen 1.5.6 for you (see doxygen_patch folder). Dimitri van Heesch and I planned to integrate that patch upstream for one of the next Doxygen releases.

  1. Apply the patch and rebuild Doxygen
  2. Add a few lines to the Doxyfile:
    ## Paths Relative to the 'html' folder!
    GENERATE_HTMLHELP = YES
    DOXYGEN2QTHELP_LOCATION = doxygen2qthelp
    QTHELP_CONFIG = ../qwt.ini
    QTHELP_FILE = ../qwt-5.0.2-doc.qch
  3. Run Doxygen

That’s it - a single call to Doxygen can now produce .qch files.

Final words

Please report any bugs you might find through the Trolltech Bug tracker. Feedback is also welcome. Thank you!



© 2008 Nokia Corporation and/or its subsidiaries. Nokia, Qt and their respective logos are trademarks of Nokia Corporation in Finland and/or other countries worldwide.
All other trademarks are property of their respective owners.