Skip to content

Instantly share code, notes, and snippets.

@mojavelinux
Last active January 3, 2016 10:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mojavelinux/8451713 to your computer and use it in GitHub Desktop.
Save mojavelinux/8451713 to your computer and use it in GitHub Desktop.
Notes and agenda for the Asciidoctor meeting on 2014-01-17 @ 07:15 CET

Asciidoctor Agenda for January Meeting

The focus of this meeting will be to gather requirements for a frontend tool whose purpose is to manage and build a documentation project based on software and design assets primarily from the Asciidoctor ecosystem.

Ultimately, these requirements should address these two outstanding questions:

  1. "How are the various parts of the Asciidoctor project distributed?"

  2. "How are the various parts of the Asciidoctor project integrated?"

We want to set out on a course to mindfully create a specialized build tool (or tools) for the Asciidoctor ecosystem that allows teams to productively and efficiently write, collaborate on and publish their documentation. In other words, we need start the process of gathering and shaping the requirements (probably on the wiki).

Down below are some open questions. We don’t need to answer them all in one day. We do, however, want to make sure we are asking the right questions.

Preconditions

  • Asciidoctor (core) needs to parse and render extremely FAST

    • Most lines of code in Asciidoctor are hand optimized for speed and efficiency

    • Every change to core is benchmarked before being included

  • Asciidoctor needs to be lightweight

    • Asciidoctor doesn’t like dependencies, can run without any additional libraries

    • The tools, however, should leverage well-established infrastructure (e.g., Bower)

  • Asciidoctor needs to provide functional parity with the asciidoc command

    • For this reason, Asciidoctor must have a basic CLI for single-file processing

    • Parity is an essential factor to becoming the leading AsciiDoc implementation

  • Haml, Slim and ERB template versions are maintained for each built-in backend as reference

    • Custom backends (e.g., deck.js) only need to be written for one template engine

    • Slim is the preferred template engine for SGML / XML output formats

  • Asciidoctor must cross-compile to JavaScript using Opal to generate Asciidoctor.js

  • Users (as opposed to developers) should not be required to clone git repositories to use the software

Open Questions

  1. What are the list of assets that need to be:

    1. Managed?

    2. Integrated?

  2. How should the assets in the Asciidoctor ecosystem (custom backends, themes, etc) be:

    1. Structured / organized?

    2. Packaged / distributed?

    3. Maintained?

  3. What backends should be supported in Asciidoctor (core) out of the box?

  4. What should be the role and/or functionality of:

    1. the Asciidoctor (core) CLI?

    2. Hyla (or similar)?

  5. What are the user’s expectations for a frontend documentation build tool?

  6. Where do gaps exist in the tooling today?

  7. What is the lifecycle of a new Asciidoctor user?

  8. What is our policy on dependencies in the Asciidoctor projects?

  9. Which template engines should be used for the external backends?

List of assets

  • Themes (i.e., CSS stylesheets and related design assets such as fonts and images)

  • Backend templates (for use with the built-in template renderer)

  • Renderers (e.g., Asciidoctor PDF)

  • Third-party web components (e.g., deck.js)

  • Browser plugins (e.g., LiveReload, Asciidoctor.js Browser plugins)

  • Project templates and content samples

  • Asciidoctor extensions, especially syntax extensions (i.e., macros, processors, etc.)

  • Build tool integrations (e.g., Maven, Gradle, Ant, SBT, etc)

  • Incremental builders / file watchers (i.e., Guard plugin)

  • …​

How to manage assets

  • Bower for retrieving web components such as deck.js. Font Awesome, etc. ?

    • QUESTION: Will this present a problem for the AsciidoctorJ integration? Perhaps webjars?

User needs

  • A single interface (command) for managing a documentation project

  • Automatic download of third-party web components like deck.js and Font Awesome

  • Copy documentation assets (stylesheets, images, videos, etc) to output directory

  • Watch for changes and regenerate output

  • Apply custom themes from theme repository

  • Setup new projects from scaffolding

  • Add new files to project sources copied from prototypes

  • …​

References

  • Foundation 5 (specifically the foundation command) - web frontend (CSS/JS) framework

  • Bower - package manager for web components

  • Sphinx - documentation build tool for reStructuredText content

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment