On Mon, 2013-11-04 at 12:00 +0000, evolution-hackers-requ...@gnome.org
wrote:
> Send evolution-hackers mailing list submissions to
>       evolution-hackers@gnome.org
> 
> To subscribe or unsubscribe via the World Wide Web, visit
>       https://mail.gnome.org/mailman/listinfo/evolution-hackers
> or, via email, send a message with subject or body 'help' to
>       evolution-hackers-requ...@gnome.org
> 
> You can reach the person managing the list at
>       evolution-hackers-ow...@gnome.org
> 
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of evolution-hackers digest..."
> 
> 
> Today's Topics:
> 
>    1.  EDS Documentation Effort (Tristan Van Berkom)
> 
> 
> ----------------------------------------------------------------------
> 
> Message: 1
> Date: Mon, 04 Nov 2013 15:18:44 +0900
> From: Tristan Van Berkom <trista...@openismus.com>
> To: evolution-hackers <evolution-hackers@gnome.org>
> Subject: [Evolution-hackers] EDS Documentation Effort
> Message-ID: <1383545924.2016.16.camel@tristan-N53SV>
> Content-Type: text/plain; charset="UTF-8"
> 
> Hi all,
> 
>   I'm starting a little documentation effort this month
> for the user facing apis in evolution data server. The scope
> of this project will touch on the libedataserver, libebook,
> libebook-contacts and libecal APIs (afforded the time I
> might be able to dig a little deeper into the server side
> libedata-book / libedata-cal APIs but strictly speaking
> we want to focus on user facing APIs).
> 
> The goal is to transform the gtk-doc generated html
> pages into something that actually looks like a
> reference manual.
> 
> Before starting on this long and tedious task of going
> through the symbols one by one and checking them off a huge
> list, I'd like to share my plans with the list. Hopefully
> with some of your feedback I can maximize the value of
> this work.
> 
> Below is a list (in two categories) of the things I had
> planned so far.
> 
> Any comments or suggestions on additional considerations
> which should be taken would be great.
> 
> Cheers,
>     -Tristan
> 
> 
> Abstact / Toplevel category
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~
> This is basically a list of the highlevel things I would like
> to get done:
> 
>   o Every source file should receive a short and long description
>     in the source code.
> 
>     This is kind of a no brainer, of course it would be nice
>     to have some description sections in the docs as they
>     are mostly missing now.
> 
>   o I intend to add more code example snippets throughout
>     the docs.
> 
>   o I also intend to add more compilable example programs,
>     perhaps not as elaborate as the cursor example, but it
>     would be nice to have some working code which can be
>     inlined into the documentation.
> 
>     Perhaps the cursor-example will move to a subdirectory
>     of a root 'examples' directory or such.
> 
>   o It probably makes sense here to evaluate also if and
>     where there are multiple methods of achieving the
>     same effect in the EDS user facing APIs (some of
>     the e-data-server-utils.c parts might suffer this).
> 
>     In the case there are multiple code paths to the
>     same result, we should take care to deprecate one
>     of them.
> 
>   o One thing I'd like to propose is a unified book for
>     EDS.
> 
>     With a unified documentation package for the whole EDS
>     API (perhaps excluding camel), a much more useful and
>     comprehensive table of contents can be built.
> 
>     Also, EDS documentation can be browsed on a web page
>     easily and all the links in the documentation will actually
>     work (currently they only work in DevHelp, or on
>     developer.gnome.org where some custom task runs to fix
>     the links in published docs).
> 
>     There could very well be a technical detail as to
>     why we don't / can't do this already (however my
>     assumption is that it's done this way just because
>     'everyone does it this way' so far).
> 
>     Doing this would of course require that downstream
>     packagers be notified of the change, in my experience
>     that isn't too difficult.
> 
>     FWIW, I normally build documentation for multiple
>     shared libraries from the same package into a single
>     book for any project I start (I don't have any example
>     that I can rightfully share though, unfortunately).
> 
> Low level / Per symbol category
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> This is a list of things I intend to consider and resolve
> before checking a symbol off my list of symbols to document.
> 
> The task can be considered complete once I have checked
> all symbols in the scope of this effort.
> 
>   o Consistent language
> 
>     Since we're going over the whole API, it's worth trying
>     to make the documentation consistent in what terms are
>     to be used to describe concepts which repeat themselves
>     throughout the documentation.
> 
>     This will probably not be an exact science, but I can
>     build a text file with a list of terms used as I go
>     along and ensure that the same terms are used throughout
>     the docs.
> 
>   o Documentation / Functionality ambiguities
> 
>     Any symbol for which the implementation is found
>     to not behave as described in the documentation,
>     I will open a bug in bugzilla where we can discuss
>     whether the source code should be updated or whether
>     the docs should be changed.
> 
>   o Documentation should be more explicit about which
>     guarantees are made or not.
> 
>     A specific case where the docs are unclear is regarding
>     threading.
> 
>     Now that EDS uses a lot of threaded functionality from GIO,
>     and now that more and more apps/daemons etc are threaded
>     and using GIO, it's more important to document the specific
>     threading guarantees the EClient based APIs might
>     (or might not) provide.
> 
>   o Preconditions and side effects should be documented.
> 
>     Some functions have preconditions which must be met
>     before calling those functions, otherwise they may
>     return errors or produce undefined behavior.
> 
>     For instance, before using EBookClient APIs, the client
>     must have been successfully opened with e_client_open()
>     (this is no longer the case with e_book_client_connect()
>     just an example).
> 
>     Similarly, functions also have side effects which might
>     not be completely clear, or seemingly orthogonal to the
>     purpose of the function call.
> 
>     One example: Calling e_book_client_view_start()
>     "Tells @view to start processing events"
> 
>     Actually, it also means that notification signals
>     will start to be fired after start() and before stop().
> 
>     More confusing though, is that calling e_book_client_view_start()
>     will cause those notifications to be delivered in the GMainContext
>     which was the thread-default at e_book_client_view_start()
>     time. NOT the GMainContext which was thread default at
>     the time that the EBookClientView was created with
>     e_book_client_get_view() as one would naturally expect
>     (actually whatever one expects, the point is that
>     one cannot be certain as it's undocumented).
> 
>     Wherever preconditions and side effects exist, we should
>     ensure that they are always documented.
> 
> 
> 
> 
> 
This would be a great help to those that would like to use the code but
are trying to work out how to use the various API etc for EDS. An
example is worth a thousand words and any prequestises that are needed 
like when using the call to a Esourceregistry that it must be called in
a Glib main loop etc. This info is hard to find especially for those 
that are beginners.

_______________________________________________
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
https://mail.gnome.org/mailman/listinfo/evolution-hackers

Reply via email to