LorenaGdL / opencv

Open Source Computer Vision Library
opencv.org
Other
0 stars 0 forks source link

DISCUSSION - 3.x Doxygen docs improvements #1

Open LorenaGdL opened 8 years ago

LorenaGdL commented 8 years ago

This is the main discussion area for suggestions/improvements regarding OpenCV 3.x Doxygen documentation. Published documentation with Doxygen system remains counter-intuitive and lacks important features. This git repo (branch docs-doxygen) aims to combine opinions and efforts of OpenCV users in order to give docs a revamp. Once we have stable major updates, we will transfer everything to official repo through a PR.

How to contribute

This is a first reference list based on this forum thread and some personal opinions. It will be updated with completed tasks and new tasks based on the discussion

07/20/2016 - Discussion opened 07/20/2016 - Navigation left-sidebar, new tab structure (cleaner, "hidden" advanced tabs), easy-access to tutorials (@LorenaGdL)

Related stuff

LorenaGdL commented 8 years ago

I've already done a bunch of modifications, by tweaking the different Doxygen configuration files

Left-side navigation bar

One of the most wanted features to improve usability. Bar width is set to a configurable default value, but it can be resized by the user. Top navigation bar is kept anyway (it could be removed)

General re-structure of tabs/lists, to get a cleaner/easier interface

The best way to test all these features if to fork the branch, generate the docs and navigate. But some screenshots showing new feel: docs1 docs2 docs3 docs4 docs5

Opinions, suggestions and further improvements welcomed! :smile:

StevenPuttemans commented 8 years ago

@LorenaGdL omg this is great! How about getting some of the core devs involved and see where this can take us!

@mshabunin and @alalek what do you guys think. Would devs consider using these updated doc packages to improve usability?

alalek commented 8 years ago

/cc @vpisarev

PkLab commented 8 years ago

You get started a really great work ! here some (randomly) points:

Finally, a big dream, it would interesting to investigate feasibility to use Doxygen as XML generator, to develop an XML parser to DB than a Django app to manage the docs as we like... maybe to integrate into AskBot :)

mshabunin commented 8 years ago

I have one comment related to left-side navigation bar. When it is enabled, returning back in browser history works incorrectly, that is why I disabled it initially. My scenario is as following:

With nav-tree: return to the top of previous page Without nav-tree: return to the same place of the previous page

I'm not sure whether it can be fixed in doxygen or via some css/html addons on our side, but it is really annoying.

Also, TODO list, Deprecated list and Bibliography pages can be found on the Related Pages tab.

I definitely like ideas with gathering all pages from doc folders and Tutorials quick link.

LorenaGdL commented 8 years ago

@mshabunin

1) I can reproduce back button issue on Chrome, but not on Firefox (which is my default browser, and that's why I didn't notice this before). It seems Chrome has some general issues with this regard, related to navigation with JS mainly. I'll see if I can find a workaround...

2) About TODO list, Deprecated list and Bibliography: small misunderstanding here. Yes, official OpenCV docs include such pages in the Related Pages section. I was just pointing out that in my current modified (and temporal) version they are not included there, but they could (or they could have another spots within docs depending on our needs/opinions).

PkLab commented 8 years ago

1) I can reproduce the back button issue on Firefox too

2) I'm trying to work on overall organization/hierarchy. A kick off question (Should I start from "module/code" or "argument/overview" ? ). A fake question but it makes me clear that

  1. We are talking about a deep reorganization of the doc.
  2. This work would require multiple iterations On the other side doc still very counter intuitive and some effort is needed

I think that the OpenCV members should be actively involved to avoid wrong way or unwanted/useless effort. For example, it might be useful

mshabunin commented 8 years ago

First of all, let's not spend too much effort on this task at this moment. We have at least one GSoC project with possible major documentation update. I suggest deciding what does counter intuitive mean in this case and how should intuitive documentation look like. Anyone can give examples of "nice" documentations from thier point of view (preferably from C/C++ libraries). After that we can choose general layout and useful features to be implemented and integrate them through several pull requests.

From my point of view we should separate each module docs into documentation articles, tutorials and reference. So most text from current reference should be moved to several well-written pages:

In this scenario main challenge will be in text writing and organic themes composing and main problem will be in keeping text consistent with actual API (but it will probably be easier than in Sphinx docs).

StevenPuttemans commented 8 years ago

Hi guys, nice to see the discussion going, but lets not forget that there was already a topic with tons of input ideas here: https://github.com/opencv-infrastructure/answers.opencv.org/issues/21

Lets not forget to try and integrate features discussed there too if possible :)

@mshabunin In my opinion, the old sphynx layout was more readable as to code, except for the missing declarations (overloads for example) and the terrible search function. I guess doxygen is too clean (no better word to describe yet ...) for the moment?

PkLab commented 8 years ago

A small news from doxygen: My PR to display shorter names has been merged. Here is a screenshot with new doxygen

doxygen-new-header

StevenPuttemans commented 8 years ago

:+1: Great work @PkLab!

PkLab commented 8 years ago

Looking at @mshabunin's schema, the General descriptions and Functionalities should be done with \pages while code reference with \defgroup. This would requires

This looks a really big effort and would requires a lot of new .markdown files and will changes all <module>.hpp files

Because most of the useful docs and theory are in the tutorials. I think we should wait for the GSoC project before to work on overall documentation.

We could start with small modifications

  1. We could select a single module as test base to implement the new schema. HighGUI ?
  2. I think that the nav-tree is really useful despite of the back button issue
  3. I've changed DoxygenLayout.xml so to have the following order
    • Detailed Description
    • Sub Modules
    • Classes , Functions, ...

@mshabunin

it is possible to preview generated docs for each pull request on buildbot

Is buildbot available also for this fork ? or we have to submit a PR to opencv directly to share a preview

mshabunin commented 8 years ago

@PkLab , no, buildbot does not check forked repositories, the PR to central repository should be created or some other hosting used for generated documentation preview.

highgui probably is not the best candidate for preview as it does not contain algorithms, probably. I think ml could be transformed with less effort:

StevenPuttemans commented 8 years ago

Maybe, if you are looking at making stuff more universal, I could pitch in if you want stuff to get translated to tutorials or such :) not really into the documentation coding buisiness, but writing documentation is achievable!

mshabunin commented 7 years ago

I've created a documentation improvement plan, I hope the described steps will make the documentation more intuitive. Looks like this discussion is the most appropriate place for review, so please take a look and provide your comments.

StevenPuttemans commented 7 years ago

Guys, might be nice to see that there is an application for GSoC for documentation improvement right here: https://groups.google.com/forum/#!topic/opencv-gsoc-2017/6X5h5YbT470

It would be nice to get this guy in on the discussion and convince him to implement some of the suggestions we have.

karandeepdps commented 7 years ago

Now I understood what you are asking for.It would be good to improve using these methods.I have already included this in my GSoCa application.If you want any additional changes let me now.I am so desperate to contribute. I have successfully made a pull request for tiny-dnn tutorial. https://groups.google.com/forum/#!topic/opencv-gsoc-2017/WLErLv8bVng

karandeepdps commented 7 years ago

Following changes need to be implemented/Improved. Quick search which can be done using https://www.stack.nl/~dimitri/doxygen/manual/extsearch.html No PDF documentation and cheatsheet: This can be made easily not an issue. Code samples (samples/cpp) are not documented or represented other way:We can add comments to existing cpp codes to explain functions.

karandeepdps commented 7 years ago

We can also use Graphviz to draw diagrams or flowcharts.

StevenPuttemans commented 7 years ago

Okay so @karandeepdps

We can also use Graphviz to draw diagrams or flowcharts.

Thats indeed a possibility, however that is again a new dependency for OpenCV. This might be a no-go for OpenCV devs, but to be sure, you will have to await your feedback from OpenCV adminds/core devs.

Again, the goal now is to have your application as good as possible so that your chances of getting accepted are as high as possible.

PkLab commented 7 years ago

Request for a better doc is still alive

I think this is an effort that should be done by the community and the OpenCV team.

I seeing 2 points point about doc:

  1. General organization, java and python version tutorial, examples ecc...
  2. Number of functions and classes coming with poor doc or undocumented at all.

About Point 1, this discussion is working well but is stale ?!

Point 2 is quite relevant... Just to give a number... Dogygen generates about 16K warnings like ...is not documented Sure not all 16K are relevant but my impression this number is increasing since OpenCV3

Hint: Doc for the committed code must be provided at commit time under a well defined doc organization ;)

StevenPuttemans commented 7 years ago

Hint: Doc for the committed code must be provided at commit time under a well defined doc organization ;)

Actually that is a hard dependency. New functionality is NOT accepted when added to the library without documentation. So not really seeing an issue there. There is just soooo much code which is not documented yet :dagger:

About general organization of the tutorials and examples, let's await the GSoC of carthucho and work on top of his basis.

PkLab commented 7 years ago

I know it's a hard dependecy but if there is so much UNdocumented code it means that is not so hard.

For example

StevenPuttemans commented 7 years ago

I have to agree on the newly added functions. It seems getting them in was more important that maintaining conditions like documentation, tests, ... The softfloat is some kind of side thing, because I am unsure how you would document a new data type :D

@mshabunin is there a reason why we do not enforce documentation anymore on pull requests.

@dkurt and @arrybn is it possible to add documentation whenever you are adding new stuff into dnn module and layers? It seems you guys are mainly focussing that module right now.

PkLab commented 7 years ago

It seems getting them in was more important that maintaining conditions like documentation, tests

It's my feeling too

The softfloat is some kind of side thing, because I am unsure how you would document a new data type

they found a lot to say about softfloat http://www.jhauser.us/arithmetic/SoftFloat-3/doc/SoftFloat.html :wink:

mshabunin commented 7 years ago

@StevenPuttemans , to start automated checking of documentation we have to fix all existing issues (missing docs) first. Currently only basic validation is done: wrong links, parameters, etc.

PkLab commented 7 years ago

@mshabunin But automation can only check presence/absence.

I think that, before to accept the PR, an overall evaluation of doc related to the receiving code should be done by human. In special case of behavioural changes or modification.

To start with automation I suggest to enable warning in doxygen...

EXTRACT_ALL = NO  ; # Note: YES will also disable the warnings
EXTRACT_PRIVATE = YES
EXTRACT_STATIC = YES
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = YES

...and check for any msg related to the commit. Maybe this check be done automatically

alalek commented 7 years ago

Basic softfloat documentation is upcoming here: opencv/opencv#9329

PkLab commented 7 years ago

@alalek nice to see.

Using this PR as example I would underline that not all members have doc. Following @mshabunin

we have to fix all existing issues (missing docs) first

I think that commits should not produce any new missing doc. Where doc is useless we might write something like \brief named