On Thu, 6 Nov 2014 19:18:39 +1000 David Seikel <onef...@gmail.com> said:
> On Thu, 6 Nov 2014 17:20:33 +0900 Carsten Haitzler (The Rasterman) > <ras...@rasterman.com> wrote: > > > On Thu, 6 Nov 2014 17:52:05 +1000 David Seikel <onef...@gmail.com> > > said: > > > > > On Thu, 6 Nov 2014 16:09:26 +0900 Carsten Haitzler (The Rasterman) > > > <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. > > > > > > The project has my permission to change the license of what ever > > > documentation bits I wrote to BDS or CCC, or something similar. I > > > was generally assuming BSD for the docs, since that covers most of > > > EFL. > > > > > > > 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 trmanhem, 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. > > > > > > > > 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? > > > > > > > > > > So basically you want a wiki with discussion, and where the content > > > can be managed via git. Gollum seems to be missing any sort of > > > discussion feature from a quick look. Is there a plugin? > > > > correct - it doesn't have discussion stuff. i don't know of a plugin. > > haven't looked. > > > > > Somehow we would need to convert the current doxygen to what ever > > > this wiki system uses. At a quick look I can't see any formats > > > doxygen and gollum share. > > > > actually we'd generate direct from .eo files. we generate .h files > > with docs FROM .eo files for a large amount of our current docs/apis. > > this would generate them for us form eo files ultimately with no docs > > in the eo files themselves. at least initially i would expect it to > > copy over the doxy stuff "verbatim" and then we strip out the doxy > > stuff from eo files. from other .h files - we'd have to move things > > to be eo classes first i think for a lot except eina... (and eo > > itself). these would go over manually or someone make a script to do > > it... ? > > > > > As you mentioned, we would need a Python coder, and maybe Ruby ones > > > as well. Do we have any? Personally I have an unreasonable hatred > > > of any programming language beginning with the letter "P", and Ruby > > > is an honorary member of that group. I have coded in Python a > > > little bit though. > > > > we have no shortage of pythoners. :) > > Phew, I dodged that bullet. B-) > > > > Drupal is how I would normally go about setting up such things. > > > Dunno if there's any drupal module for driving content via git, but > > > I suspect there is. I've created wiki's with discussion threads > > > using Drupal, that's what I use for my own stuff. Yes, it's PHP, > > > yes I've written Drupal modules in PHP, yes PHP still sucks. > > > Doxygen can output HTML, which could be fed to Drupal via filters. > > > > but the back-end of drupal is... a bunch of sql - right? that makes > > it horrible already from the get go. > > Most of this sort of software is backed by an SQL database, though some > even work with NoSQL databases. Though not everything is stored in a > database. There's a certain amount of flexibility as well, content > can be from outside the database. Do you object to any sort of database > at all, and why? the core content .. 99.9% of it will be markdown wiki pages. if this "content outside of database" is outside of the wiki (cant edit from wiki web ui - only stuff thats within the db can be edited), then it makes it a non-starter as we cant do simple maintenance of the whole doc tree. -- ------------- 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