Hi,

I tried to address each point raised here. Don't hesitate to criticize or questions my answers and even propose something else. I try to find the best solutions but it doesn't mean my solutions are actually the best.

Le 01/08/2016 à 19:50, Friedrich W. H. Kossebau a écrit :
Hi, Olivier and all,

picking up from the short chat on #plasma today:

so given kapidox is overcoming the old API dox generating scripts with more
proper semantic info...
where the old scripts allowed to use random Mainpage.dox at random places in
the directories to structure the created documentation (e.g. to group QML
"classes" away from C++ classes), kapidox now would need extension of its
spec, with semantics needed to talk about QML types and C++ classes to allow
proper generation of nicely separated pages.

This actually touches a broader problem with the current generated
documentation, which right now is centric to the C++ interfaces. Though
existing KDE library products have at least interfaces in
* C++
* QML
* CMake macros [1]
and perhaps one day bindings in Python and other languages would be also
provided directly with the products and thus it would be great to have their
documentation covered as well easily.
Again I would like to remember you that KApidox is just creating a frame around our libs, and says "Doxygen, run here, and use theses tags, then put the result in this template". So basically, everything that was possible before, will also be with KApidox. The frameworks currently use a README.md as an entry page (to be more interfaced with Github?) and most other libraries use a Mainpage.dox instead. With the latter it's quite easy to do what Friedrich is proposing (cf the Okular example)

In my opinion, what is needed is just that the front page has links to the QML/C++/Python/... documentation. Too many layers might make the browsing too complex (too many clicks to get to the info).

I'm afraid that looking for the perfect solution is counter productive, as nothing would happen until then. However what you raise makes sense: I don't have any specifications about which direction to go, so I set myself 1 task: generating the whole documentation (qch/man files and searching process) with kapidox and only that, in order to cleanup the api server. Every other feature is done while discussing with projects coming in.

The system was designed for the Frameworks so it works well for it. Phonon had no special needs, and Okular neither. Kirigami is there since today as well, and I changed some details to fit their needs. Next will be Marble and Okteta.

Each library might have different expectations, and documentation ways... I'm afraid we build again an unmanageable piece of program if we don't decide how everyone should work (which was the case before it seems).

[1] E.g. KCoreAddon installs a few cmake macros, like
kcoreaddons_desktop_to_json, which have nice API dox inside, but there is
nothing generated from that on api.kde.org currently, both bad for
discoverability or pointing people to things with urls.
For this specific issue, I think the problem is that the frameworks miss, at their whole, high level documentation, as the survey I made showed. If we had a more high level doc, that would highlight concepts and redirect to the documentation, we wouldn't have to worry about discoverability. But again, yes, I think we have some progresses to do in our documentation, to allow more people to use our libraries.

For a solution:
Perhaps at the generation side there could be another level right below the
library, for the interface (C++, QML, CMake, ...).
So "Product" > "Library" > "Interface",

By the example of Plasma Components 
(https://api.kde.org/frameworks/plasma-framework) there would then be in the 
header
     KDE API Reference > The KDE Frameworks > Plasma > QML
     KDE API Reference > The KDE Frameworks > Plasma > C++
and in the left sidebar there would be another section "Language" (or better
term) which would allow to switch to the docs for the other interfaces
supported (C++, QML, CMake, ...).
To be honest, at the time of writing, I don't find it very good, because you don't look for CMake or QML libs. You look for a way to do something. In my opinion, the entry page should say "if you need to do this, use our CMake macro described here". "If you want to draw this type of interaction, our QML library described there is what you need' and so on.

Maybe I oversee some use cases because I never really contributed to a framework or really use KF5 out of a porting.

What I would propose is that we maybe have a discussion about that during Akademy? I hope I'll have cleanup the code base and implemented the indexing/search feature so that we can also dig in the code and imagine how to make it better.

We really need to define some use cases first, before getting in the technical solution.
On the metainfo.yaml spec side, no idea yet.

Cheers
Friedrich
Cheers,
Olivier

Reply via email to