-
Notifications
You must be signed in to change notification settings - Fork 573
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
Merge website, doxygen pages, and wiki? #4111
Comments
The downside of moving content out of doxygen is that the local docs in a package or local build would then lose that content. However, I do not know that the typical user looks at the local docs in any case. It may be better to have nicer online docs. |
@AssadHashmi , @johnfxgalea -- looking for some more opinions. Also, now that the website is editable by others in the dynamorio.github.io repository, it can be improved by the community: e.g., #4112, or other style changes. |
Another downside of moving the tool docs is that they would no longer live next to their code: e.g., instead of |
An upside is that we could add a search box over all the docs, versus the current search box in the doxygen-generated html which searches only the code tokens and does not search the prose at all. |
I'm leaning toward:
|
Integrates the doxygen-generated documentation into the top-level web site. Switches the web site to use the same javascript-powered navigation menu system that doxygen uses. Rather than re-generating the "skip list" index file system for locating menu items, inlines all the menu arrays using jekyll into a single array and then does a depth-first search to find the current page. Changes the color of the navigation panel to light blue-green with a right border. Adds the most recent doxygen output snapshot into the docs/ directory, with some modifications for integration. Moves the synch toggle down below the menu. Future work will automate updating the site with the latest doxygen output. Issue: DynamoRIO/dynamorio#4111
Integrates the doxygen-generated documentation into the top-level web site. Switches the web site to use the same javascript-powered navigation menu system that doxygen uses. Rather than re-generating the "skip list" index file system for locating menu items, inlines all the menu arrays using jekyll into a single array and then does a depth-first search to find the current page. Changes the color of the navigation panel to light blue-green with a right border. Adds the most recent doxygen output snapshot into the docs/ directory, with some modifications for integration. Moves the synch toggle down below the menu. Future work will automate updating the site with the latest doxygen output. Issue: DynamoRIO/dynamorio#4111
My new plan is to duplicate:
I put some work into integration of doxygen and put it up on dynamorio.org. I have a menu system using doxygen's own javascript modified to be extendable (had to scrap their "skip list" indexing and inline all the submenus). I added a whole-site search using lunr which searches the prose docs and the other pages. However it is not perfect for API searches: #4740. Still to do beyond improving search which as mentioned is #4740:
|
Another option might be to move the wiki & website to Docusaurus, which supports document search powered by Algolia DocSearch (or perhaps use this directly). However, I'm not sure if it works on HTML produced by doxygen, and might be an overkill anyways given our current setup. |
Updates to a doxygen snapshot from forthcoming automation. Includes prefixes on the type search keywords. Issue: DynamoRIO/dynamorio#4111
Updates to a doxygen snapshot from forthcoming automation. Includes prefixes on the type search keywords. Issue: DynamoRIO/dynamorio#4111
Creates a second version of the doxygen html output suitable for embedding in our jekyll-based web site. This version turns off the doxygen treeview, but then borrows the javascript menu files from the treeview version. We then edit the html to remove the headers, and edit the menu files for inlining into our web site's single array. Furthermore, we generate keyword search term data so that searches using lunr for functions or types result in direct links to their anchors within their pages. It generates keyword tokens for each component of an underscore-separated multi-word type, along with tokens for each prefix (e.g., so that "dr_mutex" will find "dr_mutex_*"). Adds installation into a "docs_embed" directory. Adds deployment logic to package.cmake to copy the embedded html to a top level "html_embed", along with new steps in the ci-package GA workflow to take the embedded html files and push them to the dynamorio.github.io repository. Issue: #4111
Creates a second version of the doxygen html output suitable for embedding in our jekyll-based web site. This version turns off the doxygen treeview, but then borrows the javascript menu files from the treeview version. We then edit the html to remove the headers, and edit the menu files for inlining into our web site's single array. Furthermore, we generate keyword search term data so that searches using lunr for functions or types result in direct links to their anchors within their pages. It generates keyword tokens for each component of an underscore-separated multi-word type, along with tokens for each prefix (e.g., so that "dr_mutex" will find "dr_mutex_*"). Adds installation into a "docs_embed" directory. Adds deployment logic to package.cmake to copy the embedded html to a top level "html_embed", along with new steps in the ci-package GA workflow to take the embedded html files and push them to the dynamorio.github.io repository. Issue: #4111, #4740
The doxygen docs are now nicely integrated. But I'm looking for help deciding what to do with the wiki. I added Debugging to the live web site with menu entries for all sections in There are a couple of goals here:
I was hoping we could just make a copy of the wiki markup files and they would work as-is for jekyll. But there are complications:
So we need a script for all that. Github Pages disallows jekyll plugins, so we have to do it ahead of time. So either we build a script to generate JS menus, insert header + toc, and convert mediawiki and run at package deploy time, or we move the wiki content instead of having a copy. Pros of deleting the wiki and moving its content into the web pages:
Cons of moving:
An alternative is to move the wiki into the doxygen pages to get auto-menu-generation, better content integration (e.g., Debugging should be with the rest of the user docs). But, the doxygen prose pages are not quite as nice to edit as the jekyll markdown. We could also move some existing web content into doxygen: e.g., Tutorials and the API Usage Tutorial should perhaps be combined. Any opinions? |
Although I abandoned menu generation with Liquid when it had to generate all the expansion and highlighting, maybe we can use Liquid to auto-generate the JavaScript arrays for the wiki pages. If that works out, I would lean toward deleting the wiki and moving its content into dynamorio.github.io. |
@derekbruening What are the cons of moving everything to Doxygen? Seems to be the easiest option to integrate everything, no? |
Yes, it may well be the best option. Given that we will always have some doxygen output for our function and data structure interfaces, we'll always have to deal with integrating it somehow. I also ended up using doxygen's javascript-based menu system for the web site, because it has the most pages and a ready-made system. The only cons IMHO are:
|
Looks like doxygen 1.8.0+ has new support for markdown that looks more like the wiki or jekyll kramdown .md: https://www.doxygen.nl/manual/markdown.html GA CI is using 1.8.11 so we could switch to this (instead of raw html |
I played with moving some wiki pages into doxygen with the new markdown and it worked pretty well. I plan to go ahead and do that for all the wiki pages. |
New integrated website looks really good! |
The daily docs cronbuilds are steadily increasing the size of the repo, due to timestamps in every single file changing every time. Given that we rarely make docs changes that we want to make live immediately, we reduce the cronbuild to coincide with the package build, and rely on manually-triggered docs builds for anything else. Issue: #4111
The daily docs cronbuilds are steadily increasing the size of the repo, due to timestamps in every single file changing every time. Given that we rarely make docs changes that we want to make live immediately, we reduce the cronbuild to coincide with the package build, and rely on manually-triggered docs builds for anything else. Issue: #4111
The dynamorio_docs repository has been deleted and we now only deploy embedded docs to the dynamorio.github.io repository. Issue: #4111
The dynamorio_docs repository has been deleted and we now only deploy embedded docs to the dynamorio.github.io repository. Issue: #4111
Adds more redirects for all the generated API reference type pages. Issue: DynamoRIO/dynamorio#4111
Adds more redirects for all the generated API reference type pages. Issue: DynamoRIO/dynamorio#4111
Updates the menu entries for directory pages, replacing the hashed names from the treeview generation with the hashed names for the embedded generation. Issue: #4111
Updates the menu entries for directory pages, replacing the hashed names from the treeview generation with the hashed names for the embedded generation. Issue: #4111
The dynamorio_docs repository has been deleted and we now only deploy embedded docs to the dynamorio.github.io repository. Issue: #4111
Updates the menu entries for directory pages, replacing the hashed names from the treeview generation with the hashed names for the embedded generation. Issue: #4111
Adds doxygen comments to the instrlist_t typedef so we can add links to the docs, although it is an opaque type. Renames the underlying struct to better match the final name. Also converts the regular comment on DRWRAP_CALLCONV_MASK to a doxygen comment. Issue: #4111
Adds doxygen comments to the instrlist_t typedef so we can add links to the docs, although it is an opaque type. Renames the underlying struct to better match the final name. Also converts the regular comment on DRWRAP_CALLCONV_MASK to a doxygen comment. Issue: #4111
Moves the License page to a top-level entry and renames the sections for shorter menu entries. Fixes other misc layout issues: + Removes the bt.dox samples TOC entry since that is now on another page + Adds missing start/stop API entries + Removes a duplicate Disassembly Tool list entry Issue: #4111
Moves the License page to a top-level entry and renames the sections for shorter menu entries. Fixes other misc layout issues: + Removes the bt.dox samples TOC entry since that is now on another page + Adds missing start/stop API entries + Removes a duplicate Disassembly Tool list entry Issue: #4111
Adds search entries for section headers which target the anchor links directly. Issue: #4111
Adds search entries for section headers which target the anchor links directly. Issue: #4111
Adds a direct link to the rseq limitations list from the rseq design doc, which we can easily do now that everything is merged in one place. Issue: #4111
Adds a direct link to the rseq limitations list from the rseq design doc, which we can easily do now that everything is merged in one place. Issue: #4111
The Arm Instruction Emulator home page on developer.arm.com has moved. Link to it at https://dynamorio.org/index.html updated. Issue: #4111
The Arm Instruction Emulator home page on developer.arm.com has moved. Link to it at https://dynamorio.org/index.html updated. Issue: #4111
Split from #3194
Most of our user-facing content is prose inside the doxygen pages, leaving just a few pages on the main website. And the two have completely different styles and layout. We could consider merging in one direction or another: we could remove all the non-API content from doxygen control and move it to the Pages and embed the API content in an iframe (maybe remove the navbar, etc. there); or we could go the other way and try to put all the top-level pages inside doxygen auto-generation.
We could also consider removing the wiki and moving its content into the website, to have everything integrated in one place.
The text was updated successfully, but these errors were encountered: