Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

doc: Update and provide high-level doc for all the important modules #4072

Closed
2 of 68 tasks
miri64 opened this issue Oct 9, 2015 · 40 comments
Closed
2 of 68 tasks

doc: Update and provide high-level doc for all the important modules #4072

miri64 opened this issue Oct 9, 2015 · 40 comments
Assignees
Labels
Area: doc Area: Documentation

Comments

@miri64
Copy link
Member

miri64 commented Oct 9, 2015

As discussed in the meeting from 2015-10-07, we want to update and enhance the current state of the documentation for several of our most important modules. This encompasses high-level documentation of their internals and How-Tos for their internals (as a well documented example). The modules in questions are:

  • low-level device drivers (periph) => @thomaseichinger
    • periph/doc.txt (general documentation) => @PeterKietzmann
      • high-level doc
      • How-To
    • periph/adc.h
      • high-level doc
      • How-To
    • periph/cpuid.h
      • high-level doc
      • How-To
    • periph/dac.h
      • high-level doc
      • How-To
    • periph/gpio.h
      • high-level doc
      • How-To
    • periph/i2c.h
      • high-level doc
      • How-To
    • periph/pwm.h
      • high-level doc
      • How-To
    • periph/random.h
      • high-level doc
      • How-To
    • periph/rtc.h
      • high-level doc
      • How-To
    • periph/rtt.h
      • high-level doc
      • How-To
    • periph/spi.h
      • high-level doc
      • How-To
    • periph/timer.h
      • high-level doc
      • How-To
    • periph/uart.h
      • high-level doc
      • How-To
  • network device API (netdev2) => @kaspar030
    • high-level doc
    • How-To
  • generic network stack (gnrc) => @cgundogan
    • net/gnrc.h (general documentation)
      • high-level doc
      • How-To
    • net/gnrc/ipv6.h etc.
      • high-level doc
      • How-To
    • net/gnrc/netapi.h
      • high-level doc
      • How-To
    • net/gnrc/netdev.h
      • high-level doc
      • How-To
    • net/gnrc/netif.h
      • high-level doc
      • How-To
    • net/gnrc/netreg.h
      • high-level doc
      • How-To
    • net/gnrc/nettype.h
      • high-level doc
      • How-To
    • net/gnrc/pktbuf.h
      • high-level doc
      • How-To
    • net/gnrc/pkt.h
      • high-level doc
      • How-To
    • net/gnrc/sixlowpan.h etc.
      • high-level doc
      • How-To
    • net/gnrc/udp.h
      • high-level doc
      • How-To
  • connection API (conn) => @authmillenon
    • net/conn.h (general documentation)
      • high-level doc
      • How-To
    • net/conn/ip.h
      • high-level doc
      • How-To
    • net/conn/tcp.h
      • high-level doc
      • How-To
    • net/conn/udp.h
      • high-level doc
      • How-To
    • ... things to come
  • RIOT's module system => @OlegHahm
    • high-level doc
    • How-To
  • RIOT's package system => @Kijewski or @LudwigKnuepfer
    • high-level doc
    • How-To
  • RIOT's auto-initialization => @OlegHahm
    • high-level doc
    • How-To
  • xtimer => @kaspar030
    • high-level doc
    • How-To
  • generic sensor interface saul => @haukepetersen
    • high-level doc
    • How-To

The assignments to the modules are people that to my opinion would be best suited to write the documentation. If you don't agree, either change it or let's discuss it. An assignment could also be interpreted that you can sub-delegate the tasks to other people.

@miri64 miri64 added the Area: doc Area: Documentation label Oct 9, 2015
@miri64 miri64 added this to the Release 2015.09 milestone Oct 9, 2015
@emmanuelsearch
Copy link
Member

Looks good, but I think there is something missing which is key: a point of entry for the high-level documentation, which brings all these elements in the same picture (with coarser granularity if needed). I'm talking about some text and/or graphical elements that would play the role of Section 4 and Figure 1 in http://arxiv.org/pdf/1502.01968v1.pdf for instance.

@miri64
Copy link
Member Author

miri64 commented Oct 9, 2015

@cgundogan
Copy link
Member

What kind of medium should we use for high-level doc? While How-Tos are most probably wiki pages, are high-level docs a combination of doxygen entries, pictures and wiki pages?

@miri64
Copy link
Member Author

miri64 commented Oct 9, 2015

In the meeting we pretty much decided, that the end result should be, that the high-level docs are in the doxygen documentation (you can add images to doxygen) and the how-tos are well-documented example applications in the examples/. How we come to that point was a little bit unclear, but it is imaginable, that we start either as a wiki page that than will mature to a doxygen document/example application. The problem with just a wiki page is, that we had the feeling that not so many people use the Wiki as the first point to solve a problem and that it is (by nature) not very structured. That reminds me: I wanted to add an issue for that.

@emmanuelsearch
Copy link
Member

In the meeting (see minutes) we agreed to start with wiki pages, and then in a second phase think about migrating to doxygen.

@miri64
Copy link
Member Author

miri64 commented Oct 9, 2015

see #4074 for Wiki.

@miri64
Copy link
Member Author

miri64 commented Oct 9, 2015

@emmanuelsearch we did not really agree to that. @kaspar030 was strongly opposed to this.

@emmanuelsearch
Copy link
Member

We can structure the wiki pages the way we want, "by nature" ;)
See for instance the home page which proposes a nice natural point of entry
https://github.com/RIOT-OS/RIOT/wiki
I think the high level documentation we are talking about should ramify from there.

@emmanuelsearch
Copy link
Member

oops. I did not notice that @kaspar030 was opposing wiki to bootstrap the first phase, but maybe I missed something. Anyways, I am convinced that for the point of entry (the big picture bringing "everything together") we should start with a wiki entry, and link it visible in the wiki home https://github.com/RIOT-OS/RIOT/wiki

@emmanuelsearch
Copy link
Member

rest of the documentation could live elsewhere indeed. No strong opinion about this.

@miri64
Copy link
Member Author

miri64 commented Oct 9, 2015

I think we should also have a clear understanding (and "rules") about what goes to the wiki, what goes to the doxygen and what goes to README files, so that we (as in people who work with RIOT and people who are new to RIOT) don't have to search around for a specific bit of information. Here's what I am thinking about:

  • Basic introductory tutorials (how to build an application, how to start a module etc.) to the Wiki (and maybe to the root-README?)
  • How to use an example: to the examples README
  • Internals and API doc of a module: the module's doxygen documentation
  • Board and CPU documentation: Wiki (and doxygen documentation for API documentation)

@miri64
Copy link
Member Author

miri64 commented Oct 9, 2015

Packages are currently documented ad different places afaik: some in the Wiki, some in their respective READMEs. Also: some CPUs, as well as some boards, have READMEs in their directory structure, and some don't. What's up with those?

@OlegHahm
Copy link
Member

OlegHahm commented Oct 9, 2015

I think the more goes into Doxygen, the better. How-tos, tutorials, and link collections are great for the Wiki, examples should have a Readme, the rest should go into Doxygen.

@miri64
Copy link
Member Author

miri64 commented Oct 9, 2015

I think the more goes into Doxygen, the better. How-tos, tutorials, and link collections are great for the Wiki, examples should have a Readme, the rest should go into Doxygen.

Then where do you draw the line between how-to, tutorial and example?

@OlegHahm
Copy link
Member

OlegHahm commented Oct 9, 2015

An example has code in the repository, how-tos and tutorials do not.

@miri64
Copy link
Member Author

miri64 commented Oct 9, 2015

Didn't we establish in the meeting, that every how-to should be - or at least be accompanied by - an example?

@OlegHahm
Copy link
Member

OlegHahm commented Oct 9, 2015

I don't remember that, but if we did, so what? An example application in the RIOT repository has a README, telling the user what the example does and how to use it. Additional how-tos go to the Wiki.

@miri64
Copy link
Member Author

miri64 commented Oct 12, 2015

@emmanuelsearch

Looks good, but I think there is something missing which is key: a point of entry for the high-level documentation, which brings all these elements in the same picture (with coarser granularity if needed). I'm talking about some text and/or graphical elements that would play the role of Section 4 and Figure 1 in http://arxiv.org/pdf/1502.01968v1.pdf for instance.

@cgundogan and I discussed this over the last few hours, and we basically came to the conclusion, that text-wise an updated version of the text in the doxygen/the RIOT introduction in the wiki (who are basically two versions of the same text) would suffice. For an introductory graphic we came up that would in the end be pretty similar to http://riot-os.org/images/RIOT_network_architecture_dark_preview.png, just more to the point and focusing on the parts that really need more explanation. This is a first preliminary version of that:

2015-10-12 15 54 36

@emmanuelsearch
Copy link
Member

that's indeed the sort of thing I was talking about. Looks good to me. Two comments concerning the pic:

  • I would probably add 6lowpan to the gnrc zoom so that it does give the "wrong" impression about what this stack is about
  • I suppose that we are going to rename netdev2 (to become netdev) once "netdev1" is phased out, right?

@miri64
Copy link
Member Author

miri64 commented Oct 12, 2015

  • I would probably add 6lowpan to the gnrc zoom so that it does give the "wrong" impression about what this stack is about

Yes of course, after we were pretty detailed on the left 2/3 of the stack we lost focus and sketched out the rest. The one on the right will in the end be pretty similar to one of the GNRC graphics floating around.

I suppose that we are going to rename netdev2 (to become netdev) once "netdev1" is phased out, right?

I hope to strip the picture down to a more or less editable SVG we can just include into the doxygen's HTML.

@miri64
Copy link
Member Author

miri64 commented Oct 13, 2015

Hier a first step example of how it might look like. I'm about to clean up the SVG to get it in a more readable format (that I will then include into the doxygen).

riot2015-overview

@jnohlgard
Copy link
Member

@authmillenon nice! 👍

@emmanuelsearch
Copy link
Member

looks good!

@miri64
Copy link
Member Author

miri64 commented Oct 13, 2015

See #4090 for the addition to doc/

@miri64
Copy link
Member Author

miri64 commented Oct 13, 2015

For the text stuff I started a pad: https://padlite.spline.inf.fu-berlin.de/p/mjtL88j5np

@miri64
Copy link
Member Author

miri64 commented Oct 14, 2015

See #4091 how to integrate this.

@OlegHahm OlegHahm modified the milestones: Release 2015.09, Release NEXT MAJOR Oct 22, 2015
@OlegHahm OlegHahm added the DocTF label Nov 19, 2015
@PeterKietzmann
Copy link
Member

Hi all! I wanted to support in enhancing the drivers section (adc, pwm, ...) but I got stuck as I don't really know which informations are missing for "externals". So if you already know what you are missing, give me some quick keywords ;-)

@miri64
Copy link
Member Author

miri64 commented Dec 15, 2015

This issue can be viewed as more or less deprecated. See #4309 for better overview.

@miri64 miri64 closed this as completed Dec 15, 2015
@PeterKietzmann
Copy link
Member

good to know...

@miri64
Copy link
Member Author

miri64 commented Dec 15, 2015

#4309 was the one linked by @OlegHahm in the maintainer mail, so I'm not sure how you got here ;-)

@OlegHahm
Copy link
Member

OlegHahm commented Feb 3, 2016

Did the above graphic make it into the docs somewhere? I wasn't able to find it.

@miri64
Copy link
Member Author

miri64 commented Feb 3, 2016

@miri64
Copy link
Member Author

miri64 commented Feb 3, 2016

Since the middle part isn't fact in the code base yet we decided against including it.

@OlegHahm
Copy link
Member

OlegHahm commented Feb 3, 2016

Ok, thx for explanation. Btw. isn't the MAC layer missing in the GNRC graphic?

@miri64
Copy link
Member Author

miri64 commented Feb 4, 2016

The MAC layer can be handled by gnrc_netdev2 ;)

@miri64
Copy link
Member Author

miri64 commented Feb 4, 2016

(or better said: an extension of it. The current gnrc_netdev2 is the MAC layer for netdev2.

@OlegHahm
Copy link
Member

OlegHahm commented Feb 4, 2016

gnrc_netdev2 doesn't require nomac? But TSCH for example, would still go on top of gnrc_netdev2 IIRC.

@miri64
Copy link
Member Author

miri64 commented Feb 4, 2016

No, gnrc_netdev2 (currently) IS gnrc_nomac for netdev2. Putting a MAC layer on top of it would defy the reason why we made netdev2 in the first place (no delay due to IPC calls). It should rather go below or instead of gnrc_netdev2. I could imagine you can easily overload its send and receive routines to use for a MAC layer.

@OlegHahm
Copy link
Member

OlegHahm commented Feb 4, 2016

I think I still haven't understand how the lower layers are supposed to work in GNRC.

@miri64
Copy link
Member Author

miri64 commented Feb 4, 2016

It changed a little with gnrc_netdev2, but just have a look at that module (it's rather slim), then I think you will understand :-).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: doc Area: Documentation
Projects
None yet
Development

No branches or pull requests

6 participants