Hello devs,

On Thu, Nov 6, 2014 at 8:09 AM, Carsten Haitzler <ras...@rasterman.com> wrote:
> i thought i'd start this here for a wide audience.
>
> documentation for efl. it's rather horrible. and yesterday it dawned on me...
> it has license problems too.
>
> 1. license problems:
>
> the documentation in many parts is lgpl - and that means copying any code from
> code snippets or examples in the docs makes the app you copy it into lgpl. 
> that
> is BAD. enforcing the license even though with lgpl we intend the library
> boundary to be the library itself. we can add exceptions, but splitting docs
> out might actually be best. reality is that no one is ever going to sue over
> this and it's safe as it's not intended to be a problem, but strictly/legally
> it is. if someone has a legal department that really dots their i's and 
> crosses
> their t's... they would spot this.
>
> 2. our docs are a mess. a lot are not linked to and undiscoverable. they have
> typos, missing docs - often are sparse and with little or nothing in the way 
> of
> binding things together. they are at best a very slim reference set for apis
> with little besides that. some references are good, but most are also very
> thin. keeping docs totally in the hands of core devs (always in the source
> tree - src commit access needed) simply is *NOT WORKING*. devs work on code. 
> we
> just are not doing docs. we should do them, but reality is we are not and have
> little incentive to do it. core devs are busy enough as-is.
>
> 3. eo brings the added problem of needing docs to cover multiple languages
> from a single source. C, C++, Lua, JS, Python... it's a unique problem that
> using doxygen is never going to solve. we need a solution. i haven't found
> another solution and to be honest ours will be custom due to eo/eolian anwyay.

I never used it myself but I heard some positive feedbacks about Dexy
: http://dexy.it
I also know it includes a markdown parser (have I read markdown
somewhere in that thread?)

Have a look we never know. I'te been used on mongrel2 which is made in
C and also makes use of pyhon for handlers, so both languages are
supported.

>
> 4. people ask questions on efl all the time and we answer in email, irc etc. 
> ..
> and this information is not captured. it's lost. that's because there is no
> "forum" for asking such q's. we should closely tie such forums and q&a to
> documentation. this would massively improve the value of docs.
>
> 5. the theory of keeping docs with the code is just not working. it doesn't
> encourage them to be good. it just isn't working - plain and simple. it's time
> to re-evaluate that.
>
> ...
>
> we need a solution. we need to expand the set of peole who can contribute to
> documentation. we need to handle multiple languages with a single source. we
> need to collect q&a together with the docs that are relevant. we need to
> encourage our docs not to fragment.
>
> what i propose is we take a long hard look at how we document and present docs
> to the world. i'm opening this up to people to contribute to the discussion 
> and
> propose solutions and share their knowledge/experience. let me start:
>
> 1. we set up a wiki that is easy to drive from a back-end in terms of 
> inserting
> content. jpeg has spent a fair bit of time looking at gollum. gollum looks 
> good:
> https://github.com/gollum/gollum - it is a wiki that is all plain text files
> (hooray! no danged db) in a directory tree... with everything in git. that 
> means
> you can edit the wiki with your fave text editor and git commit/push your
> changes. web interface is not needed - but is there for those without back-end
> git access. we can automate inserting content with scripts too and so life 
> gets
> easy for automated infra. that is good.
>
> 2. we need to solve discussions. being able to have a thread on any wiki page
> would really help. like reddit or any of these places, we would have a live
> community of people discussing things. they can discuss on the page that is
> relevant. it'd be nice if someone proposes a way to do this with gollum or has
> a solution that already does this that is as nice as gollum is?
>
> 3. we write scripts (maybe lua? since we already have lualian using eolian 
> libs
> from lua) that use eolian and parse eo files and GENERATE the template
> documentation markdown pages from our eo classes. they only generate EMPTY
> templates with func prototypes, enums, structs etc. only generate them when a
> new class or method/property/event is added. these pages then are filled in 
> via
> the documentation git repo/wiki etc. and can be edited over time and improved.
>
> 4. this documentation now has a more acceptable license - maybe creative 
> commons
> or bsd-2-clause? be explicit on it.
>
> 5. we just re-run the generation scripts every efl release so new things we
> added get templates. maybe when we begin release freeze/stabilization to make
> this period a documentation effort too. the scripts can even generate pages
> that give status on how much is or is not documented yet, giving a quality
> measure so we can strive to get that to 100%. dont overwrite pages already
> there as they may have changes in them. by generating current status, it's a
> score that "gameifies" documentation. you want 100% of pages that are auto
> generated that should then be filled to have at least 1 commit after the 
> intial
> insert into the repo. that gets your % coverage. then you get bonus points for
> how much extra documentation there is (size of these files lets say in bytes 
> as
> a quick and dirty measure of doc points).
>
> 6. as it's git - we can revert any doc changes we see are inappropriate -
> easily. git revert. yay. we also get emails on commits so we know what's going
> on.
>
> 7. when we generate, we generate docs in sections. you generate the "core" 
> docs
> (gollum supports markdown that lets you "#include" other markdown pages) per
> language we support, and then specific markdown is generic (include that into
> the master page for that class, method, event generated for that language),
> with the rest of that page being language specific. thus every class and 
> method,
> event generates a skeleton per language, as well as a generic "core" markdown
> that is included into the skeleton. this should support multiple languages
> nicely. the generation also ensures that symbols are linked to the right
> markdown pages automatically. so you end up with something like:
>
> timer/
> timer/C_class.md -> "#include class.md + #include class_inherits.md ..."
> timer/LUA_class.md -> "#include class.md + ..."
> timer/CPP_class.md -> "#include class.md + ..."
> timer/JS_class.md -> "#include class.md + ..."
> timer/PY_class.md -> "#include class.md + ..."
> timer/class.md
> timer/class_inherits.md
> timer/class_contents.md
> ...
> timer/funcs/C_method1.md
> timer/funcs/LUA_method1.md
> timer/funcs/CPP_method1.md
> ...
> timer/funcs/method1.md
> ...
> timer/events/C_callback1.md
> timer/events/LUA_callback1.md
> ...
> timer/events/callback1.md
>
> you get the idea (ok have some more auto generated files that are included too
> most likely - like classes that are inherited for this class the actual list
> of funcs, properties and callbacks (including overridden ones that are marked
> as such)).
>
> same per func/method/property/event - generate the lan specific prototypes and
> "#include" the core docs, then you can put lang specifics per generated file 
> if
> need be (or just edit class.md)
>
> 8. gollum uses pygments for code highlighting. it can #include c/h/js/py files
> etc. and color highlight them via pygments. we'd have to teach pygments
> about .eo syntax i think - maybe edc. we can cheat and use C highlights for
> now. but what does need doing is ensuring pygments can generate LINKS to the
> right markdown pages in the docs. the doc generator will need to generate some
> kind of index of symbol -> markdown page address so pygments can create the
> correct link when generating the colorized output when it sees a matching
> symbol. someone willing to do the python work here would be needed. but the
> nice thing is we can "#include" the c src for docs .. keeping the original src
> in separate files .. thus keeping them compileable! :)
>
> this is a start - what do people have to add/say?
>
> do you have something ... better? can you improve the above?
>
> --
> ------------- Codito, ergo sum - "I code, therefore I am" --------------
> The Rasterman (Carsten Haitzler)    ras...@rasterman.com
>
>
> ------------------------------------------------------------------------------
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Cheers,
Lionel

------------------------------------------------------------------------------
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to