For something as ambitious like IFC to be the "HTML / CSS / JS" that describes our building industry, the documentation leaves a lot to be desired :) In fact, in the past it was maintained using a tool called IfcDoc which only worked on Windows. Today I'd like to share some of the amazing developments that have been happening with IFC4.3.
For IFC4.3, buildingSMART is revising their processes so that the IFC specification is described using UML instead of EXPRESS, so in theory you can use any free software to edit UML and modify the IFC shema. All docs are now also in Markdown and tracked with Git, which makes it a much more inclusive experience. Similarly, there is now a public process to allow everyone to get involved with suggesting improvements to the specification.
First, before we see what's new, here's a flash from the past of how things used to be:
-
IFC2X3 (my goodness) https://standards.buildingsmart.org/IFC/RELEASE/IFC2x3/TC1/HTML/
-
IFC4 https://standards.buildingsmart.org/IFC/RELEASE/IFC4/ADD2_TC1/HTML/
Here's the new IFC docs (live generated, changing every day until the ISO submission on March 6): http://ifc43-docs.standards.buildingsmart.org/
Some of the improvements you'd enjoy:
-
Allows the IFC documentation to be generated without the need for proprietary software, and work cross platform on Windows, Mac, and Linux.
-
The written documentation is now fully captured in plain text using Markdown, making it easy for anyone to edit the documentation without special training.
-
A built-in search feature. How did we live without it :)
-
All written documentation changes are tracked using Git, allowing anyone to edit and see edit histories.
-
Using Github, anybody can make quick online "Wiki" style edits without bespoke software installation.
-
Documentation layout is easily customised using HTML templates and CSS styles
-
Schema changelogs are auto generated instead of relying on manual logs
-
Schema diagrams such as entity inheritance trees and concept diagrams are automatically generated with automatic layouting, with SVG support and clickable links to ensure they are searchable and always current
-
Users can generate their own interactive diagrams that can be maintained and checked without the need for image editing software
-
Beautifully rendered LaTeX math equations
-
All schema entity references are automatically linked and referenced
-
All figures are automatically captioned and numbered
-
All headers and figures are anchored for sharing portions of the specification with anchor links
-
Using markdown and standardised templates helps ensure consistency in layout, typography, tables, links, notes, and references.
-
Built-in quality checking procedures during documentation generation.
-
Hovering over entities shows a quick popup preview of common attributes and data types for convenience
-
Shows inherited concept usages on all entities
-
Quick section jumping to browse long or complex pages
-
Navigation breadcrumb easily communicates the domain scope of the current entity you are browsing
-
Automatic syntax highlighting and line numbering for EXPRESS, STEP, XML, and JSON code snippets and examples
-
Examples are shown with thumbnails and automatically referenced by entities
-
API for quick documentation lookup
-
Mobile friendly (well, we plan on it, I would hope)
The docs are published under CC BY-NC-ND 4.0. I've asked what the code is under (Update: it will be MIT licensed!). You can see an explanation of how the code fits together here: https://github.com/buildingSMART/IFC4.3.x-development/blob/master/code/README.md
You can see a list of issues (very fast paced right now considering an upcoming hard ISO deadline on March 06 unfortunately) here https://github.com/buildingSMART/IFC4.3.x-development/issues (yes, I've been methodically combing the forums and various channels for every single comment the public has given over the years) as well as a rough draft of how to allow public changes and engagement and ensuring that domain experts still review / QA for ISO requirements here https://github.com/buildingSMART/IFC4.3.x-development/wiki/IFC-4.3.x-Change-Process