<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.yoctoproject.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nicolas+Dechesne</id>
	<title>Yocto Project - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.yoctoproject.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nicolas+Dechesne"/>
	<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/Special:Contributions/Nicolas_Dechesne"/>
	<updated>2026-04-23T11:45:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Security&amp;diff=85007</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Security&amp;diff=85007"/>
		<updated>2021-11-12T15:41:20Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Yocto Security Team */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since the Yocto Project is intended to be flexible and meet the needs of many applications, we leave policy-making decisions around security to our end users. Our goal instead is to ship each release with metadata that follows best practices in that we try our best not to release recipe versions which are known to have significant security vulnerabilities. Generally this is done by upgrading recipes to newer versions that are no longer vulnerable to these issues. &lt;br /&gt;
&lt;br /&gt;
Upgrading recipes to the newer versions in the maintenance branches is not always easy, this is why we provide a patch for the existing version instead if we detect a vulnerability in a package. The patches are added to the recipes, see example below:&lt;br /&gt;
&lt;br /&gt;
  poky/recipes-connectivity/bind/bind_9.9.5.bb&lt;br /&gt;
  &lt;br /&gt;
  SRC_URI = &amp;quot;ftp://ftp.isc.org/isc/bind9/${PV}/${BPN}-${PV}.tar.gz \&lt;br /&gt;
           file://conf.patch \&lt;br /&gt;
           ...&lt;br /&gt;
           file://bind9_9_5-CVE-2014-8500.patch \&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We provide a tool [https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/classes/cve-check.bbclass cve-check.bbclass] to help report possible security vulnerabilities in the Yocto Project against the [http://nvd.nist.gov/home.cfm National Vulnerability Database]. Unpatched CVEs can be detected using the cve-checker which compares bitbake recipes, their versions and applied CVE patches to reported CVEs for that SW component name and version in the NVD database.&lt;br /&gt;
&lt;br /&gt;
Another good source to track reported CVEs is via the oss-security mailing list (Open Source Software Security) http://www.openwall.com/lists/oss-security/&lt;br /&gt;
&lt;br /&gt;
== Yocto Security Team ==&lt;br /&gt;
 &lt;br /&gt;
Currently the Yocto Project does not have a Security team.  We have two methods of communicating to the project. &lt;br /&gt;
&lt;br /&gt;
*  See the Yocto Project TSC Future Directions [https://wiki.yoctoproject.org/wiki/Future_Directions#Security security]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to Contact the Yocto Project regarding Securely&#039;&#039;&#039;&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
We have set up two security-related mailing lists:&lt;br /&gt;
*  &#039;&#039;&#039;Public List&#039;&#039;&#039;&lt;br /&gt;
: yocto [dash] security [at] yoctoproject[dot] org&lt;br /&gt;
: This is a public mailing list for anyone to subscribe to. This list is an open list to discuss public security issues/patches. For more information including subscription information please see the [https://lists.yoctoproject.org/g/yocto-security yocto-security mailing list info page].&lt;br /&gt;
&lt;br /&gt;
*  &#039;&#039;&#039;Private List&#039;&#039;&#039;&lt;br /&gt;
: security [at] yoctoproject [dot] org (Forwards to the following addresses)&lt;br /&gt;
 &lt;br /&gt;
: : - &#039;&#039;&#039;mhalstead [at] linuxfoundation [dot] org&#039;&#039;&#039; &lt;br /&gt;
: For secure communications, please send your messages encrypted to both using the following GPG keys. &lt;br /&gt;
: Remember message headers are not encrypted so do not include sensitive information in the subject line.&lt;br /&gt;
&lt;br /&gt;
: Download public keys: [https://pgp.mit.edu/pks/lookup?op=vindex&amp;amp;search=0x3373170601861969 Michael Halstead]&lt;br /&gt;
&lt;br /&gt;
Anyone can contribute with security patches as before, but those volunteering to this security team will sync/organize security related activities and take more responsibility.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What you should do if you find a security vulnerability&#039;&#039;&#039;&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
If you find a security flaw; a crash, an information leakage, or anything that can have a security impact if exploited in any Open Source packages used by the Yocto Project, please report this to the Yocto Security Team. If you prefer to contact the upstream project directly, please send a copy to the security team at Yocto as well.&lt;br /&gt;
If you believe this is sensitive information, please report the vulnerability in a secure way, i.e. encrypt the email and send it to the private list. This ensures that the exploit is not leaked and exploited before a response/fix has been generated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What Yocto Security Team does when it receives a security vulnerability&#039;&#039;&#039;&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
The team performs a quick analysis and reports the flaw to the upstream project. Normally the upstream projects analyzes the problem. If they deem that it is a real security problem in their software, the project will  email the linux-distros mailing list and notify all the big Linux distributions/vendors about the existence of this vulnerability/flaw. These mailing lists are normally non-public. The project and people on the linux-distros can then agree on a release date when the flaw should be made public.&lt;br /&gt;
There is also sometimes some coordination for handling patches or backporting of patches etc, or just understanding the problem or what caused it.&lt;br /&gt;
&lt;br /&gt;
When the security issue is finally to be made public, normally upstream project is responsible to contact Mitre (cve.mitre.org) to get a CVE number assigned to it and copy the information to other Opens Source Security mailing lists to inform the whole world of the vulnerability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If an upstream project does not respond quickly&#039;&#039;&#039;&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
If an upstream project does not fix the problem the Yocto&#039;s Security Team will contact linux-distros and community and together try to solve the vulnerability as quickly as possible. &lt;br /&gt;
Normally big Linux vendors fix the problem if the problem affects their products.&lt;br /&gt;
Chances are that everyone from the enterprise distros to the commercial Yocto vendors will get fixes done first, but it is nice to have safety net for issues that really are specific to OE and embedded.&lt;br /&gt;
&lt;br /&gt;
== Branches maintained with security fixes  ==&lt;br /&gt;
See [https://wiki.yoctoproject.org/wiki/Stable_branch_maintenance Stable branches maintenance]for detailed info regarding the policies and maintenance of Stable branch.&lt;br /&gt;
&lt;br /&gt;
Versions in grey are no longer actively maintained with security patches, but well-tested patches may still be accepted for them.)&lt;br /&gt;
&lt;br /&gt;
== Policy for updating package versions for the stable branches ==&lt;br /&gt;
The Yocto project purposely limits updating of packages on oe-stable releases to items that address security problems (e.g. CVEs). For packages like QEMU we avoid updating between from one &amp;quot;dot.dot&amp;quot; to another related &amp;quot;dot.dot&amp;quot; version since it has been seen in the past that even with &amp;quot;simple&amp;quot; updates, things can go wrong and a lot more testing is required to verify compatibility. Better to only add CVE patches to fix specific point problems.&lt;br /&gt;
&lt;br /&gt;
== Kernel security patches ==&lt;br /&gt;
&lt;br /&gt;
Kernel security patches are backported to Linux-yocto kernels regularly from https://www.kernel.org/&lt;br /&gt;
=== Linux-yocto ===&lt;br /&gt;
linux-yocto_3 (maintainer: Bruce Ashfield)&lt;br /&gt;
&lt;br /&gt;
=== Vendor kernels ===&lt;br /&gt;
Kernel security patches are also backported to Linux-vendor kernels from https://www.kernel.org/&lt;br /&gt;
 &lt;br /&gt;
* meta-intel (meta-intel uses Linux-yocto)&lt;br /&gt;
* meta-xilinx (meta-xilinx@lists.yoctoproject.org)&lt;br /&gt;
* meta-ti (meta-ti@yoctoproject.org)&lt;br /&gt;
* etc&lt;br /&gt;
&lt;br /&gt;
== How to test ==&lt;br /&gt;
 &lt;br /&gt;
If there is any test case for the vulnerability by the upstream project or community&lt;br /&gt;
 - Run the test to reproduce the problem and verify the correction. &lt;br /&gt;
 - Run the regression test&lt;br /&gt;
&lt;br /&gt;
If there isn’t any test case and it is complicated and time consuming to write a testcase&lt;br /&gt;
 - Run the regression test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Regression test&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Build the core image for at least two architectures (preferably one big-endian and one little-endian)&lt;br /&gt;
* Run ptest (for those branches/packages that there is ptest mechanism)&lt;br /&gt;
&lt;br /&gt;
== Patch name convention and commit message ==&lt;br /&gt;
&lt;br /&gt;
Security patches like any Open Source development should follow the openembedded&#039;s Guidelines:&lt;br /&gt;
*[http://openembedded.org/wiki/Commit_Patch_Message_Guidelines Commit Patch Message Guidelines]&lt;br /&gt;
*[https://www.kernel.org/doc/Documentation/SecurityBugs kernel security bugs policy] &lt;br /&gt;
&lt;br /&gt;
Note that security patches should have CVE: tag and reference to the CVE identifier both in the patch file/s and the commit message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ex upstream patch:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Please change the upstream patch &amp;quot;wscanf-allocates-too-little-memory.patch&amp;quot; to &amp;quot;CVE-2015-1472.patch&amp;quot; (or CVE-2015-1472-wscanf-allocates-too-little-memory.patch). Keep the original commit message and add reference to the CVE and upstream patch.&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;Keep the original commit message&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    Upstream-Status: Accepted &amp;lt;or Backport&amp;gt;&lt;br /&gt;
    CVE: CVE-2015-8370   &lt;br /&gt;
    &lt;br /&gt;
    Reference to upstream patch:&lt;br /&gt;
    https://sourceware.org/git/?p=glibc.git;a=patch;h=5bd80bfe9ca0d955bfbbc002781bc7b01b6bcb06&lt;br /&gt;
      &lt;br /&gt;
    Signed-off-by: Joe Developer &amp;lt;joe.developer@example.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ex meta patch:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Please make sure to add the package name in the subject and the reference to the CVE. Example for the commit message: &lt;br /&gt;
&lt;br /&gt;
    bash: CVE-2014-6278 &amp;lt;if there are multiple CVEs list all&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;short description&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;[YOCTO #xxx] if there is any&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    References&lt;br /&gt;
    https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-6278&lt;br /&gt;
    https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2014-6278&lt;br /&gt;
    xxxx&lt;br /&gt;
    &lt;br /&gt;
    Signed-off-by: &amp;lt;your email address&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Workflow of Yocto Project&#039;s bugzilla ==&lt;br /&gt;
* To Open a Security defect go to [https://bugzilla.yoctoproject.org/enter_bug.cgi?product=Security%20-%20Recipe%20Upgrade Security ‑ Recipe Upgrade]&lt;br /&gt;
** Access to this issue can only be viewed by the submitter and a small group of Bug triage folks:&lt;br /&gt;
*** Armin Kuster&lt;br /&gt;
*** Randy MacLeod&lt;br /&gt;
*** Richard Purdie&lt;br /&gt;
*** Ross Burton&lt;br /&gt;
*** Tim Orling&lt;br /&gt;
*** Stephen Jolley&lt;br /&gt;
** The normal bug triage process will be applied.&lt;br /&gt;
&lt;br /&gt;
* If the issue is already public please send the patch when available to the appropriate mailing list&lt;br /&gt;
* If the issue is private, attach a patch if available to the defect is preferred.&lt;br /&gt;
&lt;br /&gt;
== Some security related links/useful tools ==&lt;br /&gt;
 &lt;br /&gt;
* [https://wiki.yoctoproject.org/wiki/images/5/58/Yocto_Summit_Lyon_Day1_2019.pdf#page=36 Yocto Project and CVEs, presentation by David Reyna in 2019 Yocto Developer day]&lt;br /&gt;
* [https://github.com/nluedtke/linux_kernel_cves/ Linux kernel fixed and reported CVEs in all branches and point releases]&lt;br /&gt;
** for example [https://github.com/nluedtke/linux_kernel_cves/blob/master/data/4.14/4.14_security.txt 4.14.x kernel series CVE status]&lt;br /&gt;
** note that cherry-picking CVE fixes for kernel is not recommended and users should merge full stable releases instead, see [http://www.kroah.com/log/blog/2018/08/24/what-stable-kernel-should-i-use/ What Stable Kernel Should I Use? by stable kernel maintainer Greg Kroah-Hartman]&lt;br /&gt;
* [http://www.cvedetails.com CVE details] &lt;br /&gt;
* [http://www.cvedetails.com/vulnerability-list/vendor_id-33/product_id-47/year-2014/Linux-Linux-Kernel.html  CVE list, Linux kernel 2014]&lt;br /&gt;
* [http://layers.openembedded.org/layerindex/branch/master/layer/meta-security/ Meta-security-layer]&lt;br /&gt;
* [http://www.yoctoproject.org/docs/current/dev-manual/dev-manual.html#making-images-more-secure Making images more secure]&lt;br /&gt;
* [http://cvechecker.sourceforge.net Cvechecker]&lt;br /&gt;
&lt;br /&gt;
== Security Issues Addressed in Yocto Releases ==&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Member_Technical_Contacts&amp;diff=84931</id>
		<title>Member Technical Contacts</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Member_Technical_Contacts&amp;diff=84931"/>
		<updated>2021-09-15T12:14:45Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tracks the official technical contributors to the YP core from each of the Yocto Project&#039;s member organizations. Note that many organizations provide more resources than just one, particularly in terms of hardware or specific feature support, which is why the Yocto Project is a de facto standard for building Linux for embedded systems.&lt;br /&gt;
&lt;br /&gt;
Platinum Members&lt;br /&gt;
* Amazon: Richard Elberger &amp;lt;elberger@amazon.com&amp;gt;&lt;br /&gt;
* Arm: Ross Burton &amp;lt;ross.burton@arm.com&amp;gt;, Jon Mason &amp;lt;jon.mason@arm.com&amp;gt;&lt;br /&gt;
* Cisco: Taras Kondratiuk &amp;lt;takondra@cisco.com&amp;gt;&lt;br /&gt;
* Comcast: Raj, Khem &amp;lt;Khem_Raj@comcast.com&amp;gt;&lt;br /&gt;
* Facebook: DJ (Dharmesh Jani) &amp;lt;janidb@fb.com&amp;gt;&lt;br /&gt;
* Intel: apoorv sangal &amp;lt;apoorvsangal@gmail.com&amp;gt;&lt;br /&gt;
* Microsoft: Paul Eggleton &amp;lt;paul.eggleton@microsoft.com&amp;gt;&lt;br /&gt;
* Wind River: Robert Yang &amp;lt;liezhi.yang@windriver.com&amp;gt;; Saul Wold &amp;lt;Saul.Wold@windriver.com&amp;gt;&lt;br /&gt;
* Xilinx: Mark Hatle &amp;lt;mhatle@xilinx.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gold Members&lt;br /&gt;
* AGL: Jan-Simon Moeller &amp;lt;jsmoeller@linuxfoundation.org&amp;gt;&lt;br /&gt;
* Huawei: Davide Ricci &amp;lt;davide.ricci@huawei.com&amp;gt;, Andrei Gherzan &amp;lt;andrei.gherzan@huawei.com&amp;gt;&lt;br /&gt;
* Renesas: Mr. Takamitsu Honda &amp;lt;takamitsu.honda.pv@renesas.com&amp;gt;&lt;br /&gt;
* Siemens: Chris Larson &amp;lt;chris_larson@mentor.com&amp;gt;&lt;br /&gt;
* Texas Instruments: Praneeth Bajjuri &amp;lt;praneeth@ti.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Silver Members&lt;br /&gt;
* AMD: Wade Farnsworth &amp;lt;wade_farnsworth@mentor.com&amp;gt;&lt;br /&gt;
* Dell: Michael Brown &amp;lt;michael.e.brown@dell.com&amp;gt;&lt;br /&gt;
* Founderiesio: Ricardo Salveti  &amp;lt;ricardo@foundries.io&amp;gt;&lt;br /&gt;
* LG: Minjae Kim &amp;lt;nate.kim@lge.com&amp;gt;&lt;br /&gt;
* Linaro: Nicolas Dechesne &amp;lt;nicolas.dechesne@linaro.org&amp;gt;&lt;br /&gt;
* Lineo Solutions: Masahiro Miyake &amp;lt;miya@lineo.co.jp&amp;gt;&lt;br /&gt;
* MontaVista: Armin Kuster &amp;lt;akuster@mvista.com&amp;gt;&lt;br /&gt;
* NXP: Lauren Post &amp;lt;lauren.post@nxp.com&amp;gt;&lt;br /&gt;
* Savoir-faire Linux: Sébastien Le Stum &amp;lt;sebastien.le-stum@savoirfairelinux.com&amp;gt;&lt;br /&gt;
* Savoir-faire Linux (technical contact backup through December 2021): Jérome Oufella &amp;lt;jerome.oufella@savoirfairelinux.com&amp;gt;&lt;br /&gt;
* ST: Christophe Priouzeau &amp;lt;christophe.priouzeau@st.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Technical Partners&lt;br /&gt;
* OpenEmbedded: Philip Balister &amp;lt;philip@balister.org&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: a &#039;&#039;private&#039;&#039; mailing list exists with all individuals listed here, mainly to facilitate the communication and the organization of meetings. All technical discussions are encouraged to be made on the existing, open, project mailing lists. If you believe you need to be added to the private list, please reach out to the Yocto Project Community Manager.&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=SeasonOfDocs&amp;diff=84737</id>
		<title>SeasonOfDocs</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=SeasonOfDocs&amp;diff=84737"/>
		<updated>2021-06-02T23:43:16Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Candidate Criteria */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Yocto Project Season of Docs =&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
The [http://yoctoproject.org Yocto Project] is an open-source project that delivers a set of tools that create operating system images for embedded Linux systems. The Yocto Project tools are based on the [http://www.openembedded.org/wiki/Main_Page OpenEmbedded] (OE) project, which uses the BitBake build tool, to construct complete Linux images. BitBake and OE are combined to form a reference build host known as Poky which includes the following [[Core Components|core components]]. This [https://www.youtube.com/watch?v=utZpKM7i5Z4 video] will help explain what it&#039;s all about.&lt;br /&gt;
&lt;br /&gt;
Richard Purdie, the Yocto Project&#039;s lead developer and Linux Foundation Fellow, considers documentation to be one of the cornerstones of this project. The quality and breadth of the documentation is one of the aspects of the project which is appreciated by and commented upon by our users. One of the very first members of that team to work on what became the Yocto Project 10 years ago was Scott Rifenbark, the project&#039;s tech writer. Sadly, Scott passed away early this year. The project is therefore at a cross roads with its documentation and with a need of new contributors and with that, the potential for new ideas and direction.&lt;br /&gt;
&lt;br /&gt;
Creating images and GNU/Linux-based distributions takes a wide breadth of knowledge. Even a simple and small image is the combination of dozens of individual software components, each of which has its own quirks and configurations. Each software component is free to choose whatever build system suits its developers, often with little regard for issues concerning cross-compilation. Users who are new to The Yocto Project, and especially new to image creation, are often overwhelmed by its necessary size and scope. Good, comprehensive documentation has always been at the core of The Yocto Project for both new and seasoned users alike.&lt;br /&gt;
&lt;br /&gt;
The Yocto Project hopes it will be successful in its bid for GSoD. But moreover is hoping to find the right person who will stay on with the project for years to come.&lt;br /&gt;
&lt;br /&gt;
==Google Season of Docs==&lt;br /&gt;
The Yocto Project is applying to the 2020 Google Season of Docs campaign. The deadline for the application is May 4th, 2020, and the results will be announced on May 11th, 2020. See https://developers.google.com/season-of-docs for additional information about this project.&lt;br /&gt;
&lt;br /&gt;
The following mailing list was created to discuss about the Season of Docs project: https://lists.yoctoproject.org/g/season-of-docs/.&lt;br /&gt;
&lt;br /&gt;
==Candidate Criteria==&lt;br /&gt;
&lt;br /&gt;
* excellent written command of the English language&lt;br /&gt;
* you have experience as a writer, preferably writing technical documentation&lt;br /&gt;
* able to distill &amp;quot;geek gobbledygook&amp;quot; into simple and understandable prose&lt;br /&gt;
* knowledge of and the ability to use various writing tools and schemes (sgml, xml, sphinx, etc)&lt;br /&gt;
* ability to draw simple but meaningful diagrams, and incorporate them into your writing&lt;br /&gt;
* strong ability to work with and use the Linux command-line&lt;br /&gt;
* it would be very beneficial for this role to know how to use git, at least at a basic level&lt;br /&gt;
* a &amp;quot;nice to have&amp;quot; skill would be the ability to read, run, and understand short snippets of python3 and shell code&lt;br /&gt;
* another &amp;quot;nice to have&amp;quot; skill would be the ability to run different Linux distros (e.g. Fedora, openSUSE, Ubuntu) in virtual environments&lt;br /&gt;
* willingness to hang out in the #yocto channel on irc&lt;br /&gt;
&lt;br /&gt;
==Ideas==&lt;br /&gt;
&lt;br /&gt;
===Format Overhaul===&lt;br /&gt;
Currently the project&#039;s documentation is written in docbook, which is a natural choice for a documentation writer, but less so for, say, a developer. To make it as easy as possible for everyone to contribute to the documentation going forward, it would be a good time to convert the raw format of the documentation into a more modern format that is easier to learn. Hopefully this will encourage people who don&#039;t usually write project documentation to submit patches and updates. An experiment was undertaken to evaluate using Sphinx, see https://bugzilla.yoctoproject.org/show_bug.cgi?id=12970. In particular, there is significant potential to improve the way different versions of the manuals for different releases are handled and displayed to users through the website, as what is there today is not working for users.&lt;br /&gt;
&lt;br /&gt;
===One Voice===&lt;br /&gt;
Previously the project&#039;s documentation was written with one voice. Contributors would suggest updates, and Scott would make sure the flow had a certain uniformity; as though it had all been written in one go, by one person. Moving forward, it&#039;s likely the project&#039;s documentation updates will come from many contributors. It would be great to have someone review the current documentation and future updates with an eye towards maintaining one voice. Currently there are no style guidelines for the project; establishing some written guidelines for that &#039;voice&#039; may be part of this too.&lt;br /&gt;
&lt;br /&gt;
===Organization===&lt;br /&gt;
Currently the project&#039;s documentation is spread out in several places and formats. There are a number of manuals, some tutorials, a collection of wiki pages, and more. It would be great to see all this information collected together and organized in such a way as to make it easier for people new or experienced with the project to find exactly what they&#039;re looking for, quickly. Classify all existing documentation according to various attributes to identify areas that have weak or missing documentation. Fill any gaps in the documentation by creating new docs targeting specific users, tasks, or experience levels; or help motivate the right people to help generate the content. Work with the project&#039;s webmaster to present a unified location for all documentation. Perhaps run a survey to poll users on their thoughts regarding the usefulness of the current documentation, and generate an actionable report.&lt;br /&gt;
&lt;br /&gt;
===Tips and Tricks===&lt;br /&gt;
The project started a [[TipsAndTricks]] project which generated a significant amount of ideas and the start of content which it would be great to turn into sections in the manuals and better document some of these topics. Since the manual sections were never generated, the project stalled but could be restarted and the community would be keen to help with content and ideas.&lt;br /&gt;
&lt;br /&gt;
===Update/Release Process===&lt;br /&gt;
Currently the documentation generation and updating process is quite manual. We believe that integration into our CI and release process is desirable and would be the best way to handle this going forward.&lt;br /&gt;
&lt;br /&gt;
===How-to/Tasks Documentation===&lt;br /&gt;
There was work started to convert some of the manual to a more task oriented/&#039;how-to&#039; approach. https://bugzilla.yoctoproject.org/show_bug.cgi?id=11630 has some details but there is potential to significantly expand the task information. It would be great to see the manuals reach this goal of having a much more complete &amp;quot;how-to&amp;quot; task section.&lt;br /&gt;
&lt;br /&gt;
===Better Layer Integration===&lt;br /&gt;
The Yocto project is organized as a &amp;quot;core&amp;quot; (which is maintained by The Yocto Project) and &amp;quot;layers&amp;quot; (which are maintained by volunteers). Creating an image for a specific device will often require information for the core and information from individual layer components. There is an opportunity to investigate how to incorporate documentation from various layer projects into a unified whole.&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=GSoC/Ideas&amp;diff=84736</id>
		<title>GSoC/Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=GSoC/Ideas&amp;diff=84736"/>
		<updated>2021-06-02T23:42:51Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* remote debugging with devtool */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Project Ideas for the Yocto Project Google Summer of Code =&lt;br /&gt;
&lt;br /&gt;
=== In General ===&lt;br /&gt;
&lt;br /&gt;
What follows, in the [[#Miscellaneous Ideas]] section, are suggested projects by various members of the community. This page welcomes ideas from the community. Please add your ideas! Don&#039;t worry too much about the mentoring aspect; if you have a good idea put it here even if you are unavailable to mentor, perhaps someone else in the community will be able to act as a mentor for your idea. If you don&#039;t have an account to edit this page, please send any interesting ideas to [[User:Trevor Woerner]] by email (if you&#039;re in this community, you&#039;ll know how to email me).&lt;br /&gt;
&lt;br /&gt;
If you are a student, this page is meant to help get you thinking about potential ideas for GSoC. A student is welcome to propose their own project ideas that aren&#039;t necessarily on this list.&lt;br /&gt;
&lt;br /&gt;
One awesome place to look for project ideas is the [https://bugzilla.yoctoproject.org Yocto Project Bugzilla]. A number of bugs have been assigned to [https://bugzilla.yoctoproject.org/buglist.cgi?emailtype2=substring&amp;amp;list_id=616486&amp;amp;resolution=---&amp;amp;query_format=advanced&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ACCEPTED&amp;amp;bug_status=IN%20PROGRESS%20DESIGN&amp;amp;bug_status=IN%20PROGRESS%20DESIGN%20COMPLETE&amp;amp;bug_status=IN%20PROGRESS%20IMPLEMENTATION&amp;amp;bug_status=IN%20PROGRESS%20REVIEW&amp;amp;bug_status=REOPENED&amp;amp;bug_status=NEEDINFO&amp;amp;email2=newcomer%40yoctoproject.org&amp;amp;emailassigned_to2=1 newcomer@yoctoproject.org]. Many of these &amp;quot;newcomer&amp;quot; bugs would be too simple to comprise a GSoC project, but they could act as an inspiration for a more worthy project. Another excellent way to look for GSoC-worthy projects is to query the bugzilla looking for [https://bugzilla.yoctoproject.org/buglist.cgi?list_id=616487&amp;amp;bug_severity=enhancement&amp;amp;resolution=---&amp;amp;query_format=advanced&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ACCEPTED&amp;amp;bug_status=IN%20PROGRESS%20DESIGN&amp;amp;bug_status=IN%20PROGRESS%20DESIGN%20COMPLETE&amp;amp;bug_status=IN%20PROGRESS%20IMPLEMENTATION&amp;amp;bug_status=IN%20PROGRESS%20REVIEW&amp;amp;bug_status=REOPENED&amp;amp;bug_status=NEEDINFO enhancement] bugs; many of these enhancements could make for a great GSoC project!&lt;br /&gt;
&lt;br /&gt;
In all cases, the student is responsible for finding a suitable mentor. Just because someone says they &#039;&#039;could&#039;&#039; be a &#039;&#039;potential&#039;&#039; mentor doesn&#039;t obligate them to mentor. Mentoring is an unpaid, volunteer position, if someone does agree to mentor it is because they are taking time away from their other obligations to do so!&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous Ideas ===&lt;br /&gt;
&lt;br /&gt;
==== remote debugging with &#039;&#039;devtool&#039;&#039; ====&lt;br /&gt;
&lt;br /&gt;
*; Difficulty&lt;br /&gt;
*: medium&lt;br /&gt;
&lt;br /&gt;
*; Skills Required&lt;br /&gt;
*: python 3&lt;br /&gt;
&lt;br /&gt;
*; Hardware Required&lt;br /&gt;
*: no hardware is required, this can all be done with qemu&lt;br /&gt;
&lt;br /&gt;
*; Where to Ask Questions&lt;br /&gt;
*: #yocto on irc.libera.chat or the [https://lists.yoctoproject.org/g/yocto yocto mailing list]&lt;br /&gt;
&lt;br /&gt;
*; Potential Mentor&lt;br /&gt;
*: [[User:Trevor Woerner]] (tlwoerner on irc (Libera.chat and OFTC))&lt;br /&gt;
&lt;br /&gt;
*; Description&lt;br /&gt;
*: A build generates all the pieces required to perform remote debugging (via cross-gdb) but getting everything to work requires a lot of manual fiddling (involving an SDK). &#039;&#039;devtool&#039;&#039; should be able to make this easier, and would also include the coding (&#039;&#039;devtool modify&#039;&#039;), cross-building (&#039;&#039;devtool build&#039;&#039;), and upload (&#039;&#039;devtool deploy-target&#039;&#039;) pieces to complete the remote debugging loop. Ideally remote debugging with a JTAG via openocd should also be supported too.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== build improvements ====&lt;br /&gt;
&lt;br /&gt;
*; Difficulty&lt;br /&gt;
*: medium-hard&lt;br /&gt;
&lt;br /&gt;
*; Skills Required&lt;br /&gt;
*: python3, bitbake, building software, build systems&lt;br /&gt;
&lt;br /&gt;
*; Hardware Required&lt;br /&gt;
*: no hardware is required&lt;br /&gt;
&lt;br /&gt;
*; Where to Ask Questions&lt;br /&gt;
*: #yocto on irc.freenode.net or the [https://lists.yoctoproject.org/g/yocto yocto mailing list]&lt;br /&gt;
&lt;br /&gt;
*; Description&lt;br /&gt;
*: There are many areas where a build can be improved in terms of memory consumption, recipe/config parsing, etc. For this project the student would be expected to instrument and profile either builds or some key section/stage of builds then look for ways to provably improve the build speed and/or resources used in measurable ways. Specific examples a) A key recent development is multiconfig but currently this causes significant parsing speed and memory overhead b) general parsing speed, particularly when adding many layers is a concern for many users c) memory overhead of bitbake often seems high, can it be quanitifed and reduced, particularly for parallel parsing?. Additionally it is worth noting the bitbake -P profiling option already exists and may assist.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== debuginfo server====&lt;br /&gt;
&lt;br /&gt;
*; Difficulty&lt;br /&gt;
*: medium&lt;br /&gt;
&lt;br /&gt;
*; Skills Required&lt;br /&gt;
*: python3, bitbake, gdb usage&lt;br /&gt;
&lt;br /&gt;
*; Hardware Required&lt;br /&gt;
*: no hardware is required&lt;br /&gt;
&lt;br /&gt;
*; Where to Ask Questions&lt;br /&gt;
*: #yocto on irc.freenode.net or the [https://lists.yoctoproject.org/g/yocto yocto mailing list]&lt;br /&gt;
&lt;br /&gt;
*; Description&lt;br /&gt;
See https://bugzilla.yoctoproject.org/show_bug.cgi?id=13807&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=The_Yocto_Autobuilder&amp;diff=84735</id>
		<title>The Yocto Autobuilder</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=The_Yocto_Autobuilder&amp;diff=84735"/>
		<updated>2021-06-02T23:41:47Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* The Yocto AutoBuilder */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The Yocto AutoBuilder ==&lt;br /&gt;
&lt;br /&gt;
The autobuilder &#039;&#039;&#039;[https://autobuilder.yoctoproject.org/typhoon/#/console Main Console]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The Yocto AutoBuilder is a buildbot (nine) based autobuilder implementation that can be used to build out and test custom distros utilizing OE-Core (either bare or through the poky repository)&lt;br /&gt;
&lt;br /&gt;
The source code can be downloaded from the &#039;&#039;&#039;[http://git.yoctoproject.org/cgit/cgit.cgi/yocto-autobuilder2/ yocto-autobuilder2]&#039;&#039;&#039; and &#039;&#039;&#039;[http://git.yoctoproject.org/cgit/cgit.cgi/yocto-autobuilder-helper/ yocto-autobuilder-helper]&#039;&#039;&#039; repositories.&lt;br /&gt;
&lt;br /&gt;
For details on the design and configuration of the AutoBuilder, refer to the documentation in those repositories.&lt;br /&gt;
&lt;br /&gt;
The yocto-autobuilder maintainer is [[User:Rpurdie | Richard Purdie]] (RP on IRC). All patches to the yocto-autobuilder2 should be sent to yocto@yoctoproject.org with &amp;quot;[yocto-autobuilder2]&amp;quot; in the Subject line. Please CC: richard.purdie@linuxfoundation.org. The hardware is maintained by the Linux Foundation on behalf of the Yocto Project and for infrastructure issues, please contact Michael Halstead (halstead on IRC).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE: please use autobuilder2&#039;&#039;&#039;, autobuilder is dead [1], buildbot eight is dead.&lt;br /&gt;
&lt;br /&gt;
[1] http://git.yoctoproject.org/cgit.cgi/yocto-autobuilder/commit/?id=1369545f9819537535e4ab6ebeb49e7b173a8366&lt;br /&gt;
&lt;br /&gt;
=== Starting Builds ===&lt;br /&gt;
&lt;br /&gt;
For autobuilder access, contact Michael Halstead &amp;lt;michael@yoctoproject.org&amp;gt; as an account is needed to start builds. These are usually available to stable branch maintainers or in special cases other layer maintainers for running builds on the project infrastructure. &lt;br /&gt;
&lt;br /&gt;
To start builds, from the main console you&#039;d usually select &#039;a-quick&#039; or &#039;a-full&#039; from the top list of builders. If not logged in, login using the link on the top right of the page. You should then see a button &amp;quot;Start a-full build&amp;quot; or &amp;quot;Start a-quick build&amp;quot; which you can press. This opens a fairly complex form but in most cases you can use the &amp;quot;Release Shortcut Selector&amp;quot; to pre-populate the form with a given release&#039;s defaults. For a stable branch build on a test branch, you may then want to change the poky repository to point to poky-contrib and the branch to be the one you want to test. You should enter a reason for the build in the box at the top of the form. This is added to the [[BuildLog]] and us used by SWAT to decide what to do with bugs. When the form is correct, click &amp;quot;Start Build&amp;quot; at the bottom of the form.&lt;br /&gt;
&lt;br /&gt;
If making a release build, be sure to check all three check boxes, &amp;quot;Do we want to save build output?&amp;quot;, &amp;quot;Generate a release?&amp;quot; and &amp;quot;Send QA alert emails?&amp;quot;. The release milestone, release number and release rc number need to be filled in as appropriate too.&lt;br /&gt;
&lt;br /&gt;
The autobuilder can run multiple builds in parallel so builds can be queued as needed but please be sensible. The autobuilder users are usually around in #yp-infra on IRC which can be useful to schedule builds between us.&lt;br /&gt;
&lt;br /&gt;
The autobuilder maintenance window is morning for US PST on Fridays and builds should not be run over this period to allow weekly maintanance on the worker distros to be carried out.&lt;br /&gt;
&lt;br /&gt;
Autobuilder output for non-release builds is available at: https://autobuilder.yocto.io/pub/non-release/ and for release builds:  https://autobuilder.yocto.io/pub/release/.&lt;br /&gt;
&lt;br /&gt;
=== Autobuilder Build User Guidelines/Conditions of Use ===&lt;br /&gt;
&lt;br /&gt;
If you have the ability to run autobuilder builds there are some things you need to be mindful of:&lt;br /&gt;
&lt;br /&gt;
* It is expected that normally users should have resolved minor issues and done some testing before using the project infrastructure.&lt;br /&gt;
* You are expected to triage the results of your own build&lt;br /&gt;
* If you see unexplained failures, it is expected that bugs are filed for these, or where there are existing bugs, the bug should be updated. Please include which host/worker the build failed on. This allows triage to know which issues are occurring, their frequency and patterns like which host(s) they occur on.&lt;br /&gt;
* The maintenance window is on Friday mornings US pacific time. Please do not start builds until maintenance is complete or run builds which wouldn&#039;t finish before maintenance is due to start. Michael can start a build when maintenance is completed if you let him know.&lt;br /&gt;
* There is a rough priority hierachy of builds where master and stable branch release builds have priority. Avoiding builds during release periods if possible is helpful.&lt;br /&gt;
* Being present on #yp-infra on IRC is helpful and infrastructure/autobuilder discussion may happen there&lt;br /&gt;
* If a partially complete build is no longer useful for some reason, please stop it to allow the resources to be used by others&lt;br /&gt;
&lt;br /&gt;
=== Resources ===&lt;br /&gt;
&lt;br /&gt;
* [[Accessing Autobuilders]]&lt;br /&gt;
* [https://autobuilder.yocto.io/pub/non-release/ non-release build output] ­-- https://autobuilder.yocto.io/pub/non-release/&lt;br /&gt;
* [https://autobuilder.yocto.io/pub/releases/ release build output] ­-- https://autobuilder.yocto.io/pub/releases/&lt;br /&gt;
* [[AutoBuilder Maintenance]]&lt;br /&gt;
* [[AutoBuilder Cluster Setup]]&lt;br /&gt;
* [[Frequently Asked Yocto Autobuilder Questions]]&lt;br /&gt;
* [[Entropy on Autobuilders]]&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Community_Guidelines&amp;diff=84734</id>
		<title>Community Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Community_Guidelines&amp;diff=84734"/>
		<updated>2021-06-02T23:40:41Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* IRC Guidelines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview and General Guidlines==&lt;br /&gt;
&lt;br /&gt;
We want to keep the Yocto Community a great place to participate, but we need your help to keep it that way. While we have specific guidelines for various tools, in general, you should:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Be nice&#039;&#039;&#039;: Be courteous and polite to fellow members of the list.&lt;br /&gt;
* &#039;&#039;&#039;Respect other people&#039;&#039;&#039;: No regional, racial, gender or other abuse will be tolerated.&lt;br /&gt;
* &#039;&#039;&#039;Keep it clean&#039;&#039;&#039;: Keep the language clean (no swearing)&lt;br /&gt;
* &#039;&#039;&#039;Be helpful&#039;&#039;&#039;: Be patient with new people and be willing to jump in to answer questions.&lt;br /&gt;
* &#039;&#039;&#039;Stay calm&#039;&#039;&#039;: The written word is always subject to interpretation, so give people the benefit of the doubt and try not to let emotions get out of control.&lt;br /&gt;
* &#039;&#039;&#039;Keep it legal&#039;&#039;&#039;: Make sure that you have the legal right to post your content and are not violating copyright or other laws.&lt;br /&gt;
* &#039;&#039;&#039;Adhere to Terms of Service&#039;&#039;&#039;: All community contributions are also subject to our [https://www.yoctoproject.org/about/terms-of-service Terms of Service].&lt;br /&gt;
&lt;br /&gt;
==Read Before Contributing - Search for existing answers==&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT: Before you contribute, be sure that you have done a thorough search to see if your question has already been answered.&#039;&#039;&#039; We&#039;ve already answered many questions, and you will get a better response from people if you have already done your due diligence to find obvious or partial answers.&lt;br /&gt;
* Search this wiki&lt;br /&gt;
* Search our [https://www.yoctoproject.org/tools-resources/community/mailing-lists mailing lists]&lt;br /&gt;
* Search the [http://www.yoctoproject.org/ Yocto Project website]&lt;br /&gt;
&lt;br /&gt;
==Wiki Guidelines==&lt;br /&gt;
&lt;br /&gt;
You can [http://www.yoctoproject.org/documentation learn more about our documentation] on the Yocto website, and if you are unfamiliar with MediaWiki syntax, we have a short how-to document with instructions for [[Using the Wiki]].&lt;br /&gt;
&lt;br /&gt;
Creating articles in the wiki is a collaborative process. After you have written your piece others may:&lt;br /&gt;
* Edit&lt;br /&gt;
* Alter&lt;br /&gt;
* Adapt&lt;br /&gt;
* Add&lt;br /&gt;
&lt;br /&gt;
So don&#039;t worry about making your article perfect the first time through. Don&#039;t hesitate to add content you think is useful and don&#039;t hesitate to make edits where you think you can help. There&#039;s always somebody to fix anything that breaks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Posting Guidelines&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Here are a few guidelines to keep in mind when using the Yocto wiki:&lt;br /&gt;
* &#039;&#039;&#039;Search first&#039;&#039;&#039;: Before creating a new page or making significant contributions to a page, please do a quick search to make sure that you aren&#039;t duplicating existing content on the wiki or other areas on the Yocto Project website.&lt;br /&gt;
* &#039;&#039;&#039;Must be a registered user&#039;&#039;&#039;: If you want to edit the wiki, you need to [[Special:UserLogin|create an account]] and confirm your email address (you&#039;ll get an email after registering with a confirmation link). Anyone can create an account.&lt;br /&gt;
* &#039;&#039;&#039;Contribute&#039;&#039;&#039;: The wiki is a resource for anyone to use. Just keep the content relevant, that is anything related to Yocto as long as it meets our other guidelines should be appropriate.&lt;br /&gt;
* &#039;&#039;&#039;Make improvements&#039;&#039;&#039;: If you find a typo or inaccurate information, just fix it.&lt;br /&gt;
* &#039;&#039;&#039;Respect links&#039;&#039;&#039;: Please provide [http://www.mediawiki.org/wiki/Help:Redirects redirects] when you move content. Many people use the wiki and may have created bookmarks or linked to your content.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Wiki is Public&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Everything in the wiki is public.&lt;br /&gt;
&lt;br /&gt;
Every edit and every new page created goes into the [[Special:RecentChanges|recent changes]] feed, which means that people will see your edits even if you haven&#039;t yet linked to a page.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s out there, it&#039;s public. &lt;br /&gt;
* Technically, administrators can delete things, but the wiki content may be mirrored, has feeds and is in the Google cache, so deleting something doesn&#039;t make it go away.&lt;br /&gt;
* When you delete content from a page, the original content will still remain in the history for that page.&lt;br /&gt;
&lt;br /&gt;
==Mailing List Guidelines==&lt;br /&gt;
&lt;br /&gt;
[https://www.yoctoproject.org/tools-resources/community/mailing-lists More information about our mailing lists] can be found on the Yocto Project website.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Keep It Short&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Remember that thousands of copies of your message will exist in mailboxes:&lt;br /&gt;
* Keep your messages as short as possible. &lt;br /&gt;
* Avoid including log output (select only the most relevant lines, or place the log on a website or in a [http://pastebin.com/ pastebin] instead)&lt;br /&gt;
* Don&#039;t excessively quote previous messages in the thread (trim the quoted text down to the most recent/relevant messages only). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Use Proper Posting Style&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;No HTML or Rich Text&#039;&#039;&#039;: Set your mailer to send only plain text messages to avoid getting caught in our spam filters.&lt;br /&gt;
* &#039;&#039;&#039;Do not top post&#039;&#039;&#039;: Top posting is replying to a message on &amp;quot;top&amp;quot; of the quoted text of the previous correspondence. This is highly unwanted in mailing lists because it increases the size of the daily digests to be sent out &amp;amp; is highly confusing and incoherent. By default, most email clients top post. Please, remove the irrelevant part of the previous communication(in case of more than a single correspondence) and use bottom, interleaved posting.&lt;br /&gt;
* &#039;&#039;&#039;Using interleaved posting&#039;&#039;&#039;: Bottom, interleaved posting is replying to the relevant parts of the previous correspondence just below the block(s) of sentences. For a comment to another block of sentences of the same quoted text, you should move below that relevant block again. Do not reply below the whole of the quoted text. Also remove any irrelevant text.&lt;br /&gt;
* &#039;&#039;&#039;Use links&#039;&#039;&#039;: Please provide URLs to articles wherever possible. Avoid cutting and pasting whole articles especially considering the fact that all may not be interested.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t include attached files&#039;&#039;&#039;: Instead of including attached files, please upload your file to the [[Special:Upload|this wiki]] or another website and post a link to the file from your email message.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do Not Hijack Threads&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Post new questions or new topics as new threads (new email message). Please do not reply to a random thread with a new question or start an unrelated topic of conversation in an existing thread. This creates confusion and makes it much less likely that you will get a response. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do Not Cross Post&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Avoid posting to multiple lists simultaneously. Pick a mailing list that is most suitable for your post and just use that. CC&#039;ing multiple lists should be avoided.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Subscribers Only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Only subscribers can post to our mailing lists. If you would like to contribute to our mailing lists, we think it is only fair that you be a subscriber. Please note that if you want to participate only occasionally, you can subscribe to a list and set your email options to digest or no mail and read the web archives when you want to catch up. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Additional Resources&#039;&#039;&#039;&lt;br /&gt;
* [http://www.shakthimaan.com/downloads/glv/presentations/mailing-list-etiquette.pdf Mailing list guidelines by Shakthi Kannan (PDF)]: Great guideline summary and examples of posting styles.&lt;br /&gt;
* [[Contribution_Guidelines]]&lt;br /&gt;
&lt;br /&gt;
==IRC Guidelines==&lt;br /&gt;
&lt;br /&gt;
[https://www.yoctoproject.org/community/mailing-lists/ More information about our IRC channels] can be found on the Yocto website.&lt;br /&gt;
&lt;br /&gt;
Here are a few IRC guidelines:&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t post chunks&#039;&#039;&#039;: Avoid posting big chunks of text - use [http://pastebin.com/ pastebin] or a similar service to shorten it to a link. &lt;br /&gt;
* &#039;&#039;&#039;Register your Nickname&#039;&#039;&#039;: To avoid confusion and make sure you always have the same name on IRC, you should [https://libera.chat/guides/registration register your nick].&lt;br /&gt;
* &#039;&#039;&#039;Pick the right channel&#039;&#039;&#039;: if you aren&#039;t sure, you should start in our main #yocto channel.&lt;br /&gt;
* &#039;&#039;&#039;More information&#039;&#039;&#039;: this [http://irchelp.org/irchelp/ircprimer.html IRC primer] for new users.&lt;br /&gt;
* &#039;&#039;&#039;Web access&#039;&#039;&#039;: If you don&#039;t normally use IRC and want to try it out, you can use the [https://web.libera.chat/?channels=#yocto Libera.chat Web IRC] chat.&lt;br /&gt;
&lt;br /&gt;
==Bugzilla Guidelines==&lt;br /&gt;
&lt;br /&gt;
We like to have fun but we also like the communications to run smoothly. To that end here are some guidelines for participating in the [https://bugzilla.yoctoproject.org/ Yocto Bugzilla].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Be patient with others&#039;&#039;&#039;: Sometimes people post imperfect bug reports. In case of missing information, kindly tell reporters how to provide it, and/or suggest what they can do to improve the bug report.&lt;br /&gt;
* &#039;&#039;&#039;Stay on topic&#039;&#039;&#039;: Don&#039;t start endless debates on topics not directly related to the scope of a specific bug report.&lt;br /&gt;
* &#039;&#039;&#039;Use proper quoting practices&#039;&#039;&#039;: Avoid quoting complete previous comments by stripping unneeded lines, and avoid answering above the quoted text.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t abuse your privileges&#039;&#039;&#039;: Submitters have permission to edit their bugs. If you abuse this privilege - for example, by reopening a bug that the maintainers have closed - your privileges will be revoked.&lt;br /&gt;
&lt;br /&gt;
What to do if you find a bug&lt;br /&gt;
* &#039;&#039;&#039;Search first&#039;&#039;&#039;: Try to avoid filing duplicates by searching to see whether your issue has already been filed.&lt;br /&gt;
* &#039;&#039;&#039;Ask&#039;&#039;&#039;: You can ask on our mailing lists or IRC channels to see if anyone has seen this issue before to gather more details or see if someone has a workaround.&lt;br /&gt;
* &#039;&#039;&#039;Submit a bug report&#039;&#039;&#039;: Give us as many details as possible about what happened and how your issue can be reproduced. &#039;&#039;&#039;IMPORTANT&#039;&#039;&#039;: please include the build/commit ID as reported by BitBake, as this will help the team determine whether your bug has been fixed already.&lt;br /&gt;
* &#039;&#039;&#039;Track our progress&#039;&#039;&#039;: Get feedback from the development community and track resolution status.&lt;br /&gt;
* &#039;&#039;&#039;Provide a fix&#039;&#039;&#039;: Use the tools, project wiki and git source repository in the Yocto Project to fix the problem yourself. &lt;br /&gt;
&lt;br /&gt;
Learn more about [[Bugzilla_Configuration_and_Bug_Tracking|our process for reporting bugs]].&lt;br /&gt;
&lt;br /&gt;
==Contribution Guidelines - Sending Patches==&lt;br /&gt;
[[Contribution_Guidelines|Contribution Guidelines]]&lt;br /&gt;
&lt;br /&gt;
[http://www.openembedded.org/wiki/How_to_submit_a_patch_to_OpenEmbedded How To Sumbit A Patch To OpenEmbedded]&lt;br /&gt;
&lt;br /&gt;
==Guideline Violations - 3 Strikes Method==&lt;br /&gt;
The point of this section is not to find opportunities to punish people, but we do need a fair way to deal with people who are making our community an unpleasant place.&lt;br /&gt;
* First occurrence: Public reminder that the behavior is inappropriate according to our guidelines.&lt;br /&gt;
* Second occurrence: Private message warning the user that any additional violations will result in removal from the community.&lt;br /&gt;
* Third occurrence: Depending on the violation, may include account deletion or banning. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
* Obvious spammers are banned on first occurrence. This is necessary to keep the community free of spam.&lt;br /&gt;
* Violations are forgiven after 6 months of good behavior.&lt;br /&gt;
* Minor formatting / style infractions will be dealt with through education, not the 3 strikes process.&lt;br /&gt;
* Extreme violations of a threatening, abusive, destructive or illegal nature will be addressed immediately and are not subject to 3 strikes.&lt;br /&gt;
* Contact [[User:Nicolas_Dechesne|Nicolas Dechesne]] to report abuse or appeal violations (mistakes happen &amp;amp; will be corrected).&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
* [http://wiki.meego.com/Community_guidelines MeeGo Community Guidelines] were the basis for the Yocto Guidelines used under the [http://creativecommons.org/licenses/by/3.0/legalcode Creative Commons Attribution 3.0 License]&lt;br /&gt;
* [http://fedoraproject.org/wiki/Communicate/MailingListGuidelines Fedora Mailing List Guidelines] used as a starting point under the [http://creativecommons.org/licenses/by-sa/3.0/ Creative Commons Attribution-ShareAlike 3.0 Unported] license.&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Main_Page&amp;diff=84733</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Main_Page&amp;diff=84733"/>
		<updated>2021-06-02T23:38:03Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Other resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Welcome to the Yocto Project Wiki! ==&lt;br /&gt;
The [http://yoctoproject.org Yocto Project] is an open-source project that delivers a set of tools that create operating system images for embedded Linux systems. The Yocto Project tools are based on the [http://www.openembedded.org/wiki/Main_Page OpenEmbedded] (OE) project, which uses the BitBake build tool, to construct complete Linux images. BitBake and OE are combined to form a reference build host known as Poky which includes the following [[Core Components|core components]]. This [https://www.youtube.com/watch?v=utZpKM7i5Z4 video] will help explain what it&#039;s all about.&lt;br /&gt;
&lt;br /&gt;
===Where to Start?===&lt;br /&gt;
If you&#039;re new to Yocto take a look at the &#039;&#039;&#039;[[Glossary]]&#039;&#039;&#039; so you&#039;re familiar with the terms used in this wiki and the project documentation. Then take a look at the [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html &#039;&#039;&#039;Quick Start Guide&#039;&#039;&#039;]. You can follow the steps in this document to clone the poky repository, quickly configure your build environment, and then try a build. Corporate firewalls can be problematic so network proxy configurations are detailed on the &#039;&#039;&#039;[[Working Behind a Network Proxy]]&#039;&#039;&#039; page. We advise you go straight for the [[Working_Behind_a_Network_Proxy#Option_2:_Chameleonsocks| Chameleonsocks option]].&lt;br /&gt;
&lt;br /&gt;
===Where to Next?===&lt;br /&gt;
Thanks to the quick start guide, it&#039;s pretty easy to get your first Linux image and and running. Here are some places to look for help when improving your Yocto skills.&lt;br /&gt;
* The [https://linuxfoundation.org Linux Foundation] have some great [https://docs.google.com/presentation/d/1LmI3mHoD_Dzl8wplIYcUBrFF8BzDb_EadTvfbnpSK7Q/edit training slides]. There is also an [https://docs.google.com/presentation/d/1HoDtyN5SzlmuTN47ab4Y7w_i6c_VEW6EBUD944ntf38/edit#slide advanced slide deck] for more more experienced users. &lt;br /&gt;
* The first tool you&#039;ll need to get familiar with is &#039;&#039;&#039;bitbake&#039;&#039;&#039;, so reading through the [https://www.yoctoproject.org/docs/current/bitbake-user-manual/bitbake-user-manual.html user manual] is recommended. You don&#039;t need to understand it all right now, but bookmark this page for reference. Implementation of bitake is covered in the [[Bitbake Internals Primer]] &lt;br /&gt;
* Once you start adding packages and configuring your image to create your own distribution, things can go wrong and it can hard to track down the root cause. There is no shortage of Yocto documentation resource, but if you&#039;re not exactly sure what you&#039;re looking for this &#039;&#039;&#039;[[Documentation Decoder]]&#039;&#039;&#039; will help you out. Also take a look at the [https://wiki.yoctoproject.org/wiki/Cookbook &#039;&#039;&#039;Cookbook&#039;&#039;&#039;] and [https://wiki.yoctoproject.org/wiki/Technical_FAQ troubleshooting guide]. Also [https://www.yoctoproject.org/blogs/jefro/2016/yocto-project-books these books] are helpful. &lt;br /&gt;
* Some new tools such as [http://www.yoctoproject.org/docs/current/toaster-manual/toaster-manual.html Toaster], [[Extensible SDK]] and [https://github.com/crops CROPS] are making it easier to get the best out of Yocto on Windows and Mac OS X. Take a look at the new workflow in [[Developer Workflow Improvements]].&lt;br /&gt;
* There is also a [https://wiki.yoctoproject.org/wiki/TipsAndTricks &#039;&#039;&#039;Tips and Tricks&#039;&#039;&#039;] section where more experienced developers contribute to articles that will help those new to Yocto Project.&lt;br /&gt;
* You can also read and participate on the [https://lists.yoctoproject.org mailing lists] - start with the [https://lists.yoctoproject.org/g/yocto main list] first - and the IRC channel. More information about the Yocto Project mailing lists, IRC and Matrix channels can be found [https://www.yoctoproject.org/community/mailing-lists/ here].&lt;br /&gt;
&lt;br /&gt;
== Project planning ==&lt;br /&gt;
&lt;br /&gt;
=== Features === &lt;br /&gt;
* [[Yocto Feature Summary]] (Current and Next)&lt;br /&gt;
&lt;br /&gt;
=== Project Planning for current release  ===&lt;br /&gt;
&lt;br /&gt;
* [[Planning]]&lt;br /&gt;
&lt;br /&gt;
=== Project Status and Schedule ===&lt;br /&gt;
* [[Weekly_Status]]&lt;br /&gt;
* [[Yocto Project v2.8 Status]]&lt;br /&gt;
* [[Yocto 2.8 Schedule]]&lt;br /&gt;
* Testresults - https://git.yoctoproject.org/cgit/cgit.cgi/yocto-testresults-contrib/log/?h=intel-yocto-testresults&lt;br /&gt;
&lt;br /&gt;
=== Future Directions ===&lt;br /&gt;
* [[Future_Directions]]&lt;br /&gt;
&lt;br /&gt;
== Release Engineering ==&lt;br /&gt;
&lt;br /&gt;
* [[Yocto Release Engineering | Yocto Project Release Engineering]]&lt;br /&gt;
* [[Yocto Release Engineering | Release Activity (with status, version info, QA links, etc)]]&lt;br /&gt;
&lt;br /&gt;
== QA &amp;amp; Automation ==&lt;br /&gt;
&lt;br /&gt;
* [[The_Yocto_Autobuilder| The Yocto Project Autobuilder]]&lt;br /&gt;
* [[QA| Yocto Project QA Main Page]]&lt;br /&gt;
* [[QA/Archive| Yocto Project QA Test Report Archive ]]&lt;br /&gt;
&lt;br /&gt;
== Quick guide for newcomers ==&lt;br /&gt;
&lt;br /&gt;
If you are new to the project and are willing to contribute, please refer to our [[Newcomers|guide for newcomers]].&lt;br /&gt;
&lt;br /&gt;
== TSC ==&lt;br /&gt;
* Yocto Project Technical Steering Committee [[TSC]] &lt;br /&gt;
&lt;br /&gt;
== Wiki reference sitemap ==&lt;br /&gt;
* [[Glossary]]&lt;br /&gt;
* [[Documentation Decoder]]&lt;br /&gt;
* [[Working Behind a Network Proxy]]&lt;br /&gt;
* [[FAQ]] and [[Technical FAQ]]. These need to be unified.&lt;br /&gt;
* [[Cookbook]] and [[TipsAndTricks | Tips and Tricks]]. Need clear messaging on how these should be differentiated.&lt;br /&gt;
* [[Developer Workflow Improvements]], including [[Nodejs Workflow Improvements]]&lt;br /&gt;
* [[Planning and Governance]]&lt;br /&gt;
* [[Community Guidelines]]&lt;br /&gt;
* [[Yocto Release Engineering | Yocto Project Release Engineering]]&lt;br /&gt;
* [[License Infrastructure Interest Group | License Infrastructure]]&lt;br /&gt;
* [[Processes and Activities]]&lt;br /&gt;
* [[Technical Contributors]]&lt;br /&gt;
* [[Projects]]&lt;br /&gt;
* [[Security]] - find out what we do about CVEs and security&lt;br /&gt;
* [[Yocto Interest Groups]]&lt;br /&gt;
* [[Testopia]] - The Yocto Project&#039;s community-opened test case management platform&lt;br /&gt;
* [[Toaster]] - the web interface &lt;br /&gt;
* [[YoctoProjectEvents]] - links to YoctoProject/OpenEmbedded related conferences and events&lt;br /&gt;
* [[Archive]] - Graveyard for out of date articles.&lt;br /&gt;
&lt;br /&gt;
== Other resources ==&lt;br /&gt;
* [http://yoctoproject.org Yocto Project Front Page]&lt;br /&gt;
* [http://git.yoctoproject.org/ Yocto Project Git Source Repos]&lt;br /&gt;
* [https://bugzilla.yoctoproject.org/ Yocto Project Bugzilla]&lt;br /&gt;
* [https://www.yoctoproject.org/tools-resources/community/mailing-lists Yocto Project Mailing Lists]&lt;br /&gt;
* [http://recipes.yoctoproject.org/rrs Yocto Project Recipe Reporting System]&lt;br /&gt;
* [https://autobuilder.yoctoproject.org/typhoon Yocto Project Autobuilder]&lt;br /&gt;
* [http://downloads.yoctoproject.org/releases/yocto/ Yocto Project Releases Downloads]&lt;br /&gt;
* [http://autobuilder.yoctoproject.org/pub/nightly/ Yocto Project Nightly Build Images]&lt;br /&gt;
* [http://downloads.yoctoproject.org/mirror/sources/ Upstream Sources Mirror]&lt;br /&gt;
* [http://www.openembedded.org/wiki/Main_Page OpenEmbedded Wiki]&lt;br /&gt;
* [http://cgit.openembedded.org/ OpenEmbedded Git Repos]&lt;br /&gt;
* [http://layers.openembedded.org/ OpenEmbedded Community Layers] &lt;br /&gt;
* [http://patchwork.openembedded.org/ OpenEmbedded Patch Tracking System]&lt;br /&gt;
* &#039;&#039;&#039;IRC&#039;&#039;&#039;: [https://libera.chat/ irc.libera.chat]&lt;br /&gt;
:* #yocto - Public discussions on the Yocto Project.&lt;br /&gt;
:* #oe - Public discussions on OpenEmbedded Core.&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Main_Page&amp;diff=84732</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Main_Page&amp;diff=84732"/>
		<updated>2021-06-02T23:36:54Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Where to Next? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Welcome to the Yocto Project Wiki! ==&lt;br /&gt;
The [http://yoctoproject.org Yocto Project] is an open-source project that delivers a set of tools that create operating system images for embedded Linux systems. The Yocto Project tools are based on the [http://www.openembedded.org/wiki/Main_Page OpenEmbedded] (OE) project, which uses the BitBake build tool, to construct complete Linux images. BitBake and OE are combined to form a reference build host known as Poky which includes the following [[Core Components|core components]]. This [https://www.youtube.com/watch?v=utZpKM7i5Z4 video] will help explain what it&#039;s all about.&lt;br /&gt;
&lt;br /&gt;
===Where to Start?===&lt;br /&gt;
If you&#039;re new to Yocto take a look at the &#039;&#039;&#039;[[Glossary]]&#039;&#039;&#039; so you&#039;re familiar with the terms used in this wiki and the project documentation. Then take a look at the [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html &#039;&#039;&#039;Quick Start Guide&#039;&#039;&#039;]. You can follow the steps in this document to clone the poky repository, quickly configure your build environment, and then try a build. Corporate firewalls can be problematic so network proxy configurations are detailed on the &#039;&#039;&#039;[[Working Behind a Network Proxy]]&#039;&#039;&#039; page. We advise you go straight for the [[Working_Behind_a_Network_Proxy#Option_2:_Chameleonsocks| Chameleonsocks option]].&lt;br /&gt;
&lt;br /&gt;
===Where to Next?===&lt;br /&gt;
Thanks to the quick start guide, it&#039;s pretty easy to get your first Linux image and and running. Here are some places to look for help when improving your Yocto skills.&lt;br /&gt;
* The [https://linuxfoundation.org Linux Foundation] have some great [https://docs.google.com/presentation/d/1LmI3mHoD_Dzl8wplIYcUBrFF8BzDb_EadTvfbnpSK7Q/edit training slides]. There is also an [https://docs.google.com/presentation/d/1HoDtyN5SzlmuTN47ab4Y7w_i6c_VEW6EBUD944ntf38/edit#slide advanced slide deck] for more more experienced users. &lt;br /&gt;
* The first tool you&#039;ll need to get familiar with is &#039;&#039;&#039;bitbake&#039;&#039;&#039;, so reading through the [https://www.yoctoproject.org/docs/current/bitbake-user-manual/bitbake-user-manual.html user manual] is recommended. You don&#039;t need to understand it all right now, but bookmark this page for reference. Implementation of bitake is covered in the [[Bitbake Internals Primer]] &lt;br /&gt;
* Once you start adding packages and configuring your image to create your own distribution, things can go wrong and it can hard to track down the root cause. There is no shortage of Yocto documentation resource, but if you&#039;re not exactly sure what you&#039;re looking for this &#039;&#039;&#039;[[Documentation Decoder]]&#039;&#039;&#039; will help you out. Also take a look at the [https://wiki.yoctoproject.org/wiki/Cookbook &#039;&#039;&#039;Cookbook&#039;&#039;&#039;] and [https://wiki.yoctoproject.org/wiki/Technical_FAQ troubleshooting guide]. Also [https://www.yoctoproject.org/blogs/jefro/2016/yocto-project-books these books] are helpful. &lt;br /&gt;
* Some new tools such as [http://www.yoctoproject.org/docs/current/toaster-manual/toaster-manual.html Toaster], [[Extensible SDK]] and [https://github.com/crops CROPS] are making it easier to get the best out of Yocto on Windows and Mac OS X. Take a look at the new workflow in [[Developer Workflow Improvements]].&lt;br /&gt;
* There is also a [https://wiki.yoctoproject.org/wiki/TipsAndTricks &#039;&#039;&#039;Tips and Tricks&#039;&#039;&#039;] section where more experienced developers contribute to articles that will help those new to Yocto Project.&lt;br /&gt;
* You can also read and participate on the [https://lists.yoctoproject.org mailing lists] - start with the [https://lists.yoctoproject.org/g/yocto main list] first - and the IRC channel. More information about the Yocto Project mailing lists, IRC and Matrix channels can be found [https://www.yoctoproject.org/community/mailing-lists/ here].&lt;br /&gt;
&lt;br /&gt;
== Project planning ==&lt;br /&gt;
&lt;br /&gt;
=== Features === &lt;br /&gt;
* [[Yocto Feature Summary]] (Current and Next)&lt;br /&gt;
&lt;br /&gt;
=== Project Planning for current release  ===&lt;br /&gt;
&lt;br /&gt;
* [[Planning]]&lt;br /&gt;
&lt;br /&gt;
=== Project Status and Schedule ===&lt;br /&gt;
* [[Weekly_Status]]&lt;br /&gt;
* [[Yocto Project v2.8 Status]]&lt;br /&gt;
* [[Yocto 2.8 Schedule]]&lt;br /&gt;
* Testresults - https://git.yoctoproject.org/cgit/cgit.cgi/yocto-testresults-contrib/log/?h=intel-yocto-testresults&lt;br /&gt;
&lt;br /&gt;
=== Future Directions ===&lt;br /&gt;
* [[Future_Directions]]&lt;br /&gt;
&lt;br /&gt;
== Release Engineering ==&lt;br /&gt;
&lt;br /&gt;
* [[Yocto Release Engineering | Yocto Project Release Engineering]]&lt;br /&gt;
* [[Yocto Release Engineering | Release Activity (with status, version info, QA links, etc)]]&lt;br /&gt;
&lt;br /&gt;
== QA &amp;amp; Automation ==&lt;br /&gt;
&lt;br /&gt;
* [[The_Yocto_Autobuilder| The Yocto Project Autobuilder]]&lt;br /&gt;
* [[QA| Yocto Project QA Main Page]]&lt;br /&gt;
* [[QA/Archive| Yocto Project QA Test Report Archive ]]&lt;br /&gt;
&lt;br /&gt;
== Quick guide for newcomers ==&lt;br /&gt;
&lt;br /&gt;
If you are new to the project and are willing to contribute, please refer to our [[Newcomers|guide for newcomers]].&lt;br /&gt;
&lt;br /&gt;
== TSC ==&lt;br /&gt;
* Yocto Project Technical Steering Committee [[TSC]] &lt;br /&gt;
&lt;br /&gt;
== Wiki reference sitemap ==&lt;br /&gt;
* [[Glossary]]&lt;br /&gt;
* [[Documentation Decoder]]&lt;br /&gt;
* [[Working Behind a Network Proxy]]&lt;br /&gt;
* [[FAQ]] and [[Technical FAQ]]. These need to be unified.&lt;br /&gt;
* [[Cookbook]] and [[TipsAndTricks | Tips and Tricks]]. Need clear messaging on how these should be differentiated.&lt;br /&gt;
* [[Developer Workflow Improvements]], including [[Nodejs Workflow Improvements]]&lt;br /&gt;
* [[Planning and Governance]]&lt;br /&gt;
* [[Community Guidelines]]&lt;br /&gt;
* [[Yocto Release Engineering | Yocto Project Release Engineering]]&lt;br /&gt;
* [[License Infrastructure Interest Group | License Infrastructure]]&lt;br /&gt;
* [[Processes and Activities]]&lt;br /&gt;
* [[Technical Contributors]]&lt;br /&gt;
* [[Projects]]&lt;br /&gt;
* [[Security]] - find out what we do about CVEs and security&lt;br /&gt;
* [[Yocto Interest Groups]]&lt;br /&gt;
* [[Testopia]] - The Yocto Project&#039;s community-opened test case management platform&lt;br /&gt;
* [[Toaster]] - the web interface &lt;br /&gt;
* [[YoctoProjectEvents]] - links to YoctoProject/OpenEmbedded related conferences and events&lt;br /&gt;
* [[Archive]] - Graveyard for out of date articles.&lt;br /&gt;
&lt;br /&gt;
== Other resources ==&lt;br /&gt;
* [http://yoctoproject.org Yocto Project Front Page]&lt;br /&gt;
* [http://git.yoctoproject.org/ Yocto Project Git Source Repos]&lt;br /&gt;
* [https://bugzilla.yoctoproject.org/ Yocto Project Bugzilla]&lt;br /&gt;
* [https://www.yoctoproject.org/tools-resources/community/mailing-lists Yocto Project Mailing Lists]&lt;br /&gt;
* [http://recipes.yoctoproject.org/rrs Yocto Project Recipe Reporting System]&lt;br /&gt;
* [https://autobuilder.yoctoproject.org/typhoon Yocto Project Autobuilder]&lt;br /&gt;
* [http://downloads.yoctoproject.org/releases/yocto/ Yocto Project Releases Downloads]&lt;br /&gt;
* [http://autobuilder.yoctoproject.org/pub/nightly/ Yocto Project Nightly Build Images]&lt;br /&gt;
* [http://downloads.yoctoproject.org/mirror/sources/ Upstream Sources Mirror]&lt;br /&gt;
* [http://www.openembedded.org/wiki/Main_Page OpenEmbedded Wiki]&lt;br /&gt;
* [http://cgit.openembedded.org/ OpenEmbedded Git Repos]&lt;br /&gt;
* [http://layers.openembedded.org/ OpenEmbedded Community Layers] &lt;br /&gt;
* [http://patchwork.openembedded.org/ OpenEmbedded Patch Tracking System]&lt;br /&gt;
* &#039;&#039;&#039;IRC&#039;&#039;&#039;: irc.freenode.net&lt;br /&gt;
:* #yocto - Public discussions on the Yocto Project.&lt;br /&gt;
:* #oe - Public discussions on OpenEmbedded Core.&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=YoctoProjectEvents&amp;diff=84692</id>
		<title>YoctoProjectEvents</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=YoctoProjectEvents&amp;diff=84692"/>
		<updated>2021-05-14T07:08:31Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Events */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Traditionally the Linux Foundation organizes the Embedded Linux Conference -- one in North America (ELC) and one in Europe (ELCE). The Yocto Project often has a considerable presence at these events in the form of:&lt;br /&gt;
* talks submitted/presented about The Yocto Project, OpenEmbedded, and related technologies including a community BoF (Birds of a Feather) session&lt;br /&gt;
* a 1-day pre-event OpenEmbedded Developers Day (OEDAM [OpenEmbedded Developers Americas Meeting] for ELC and OEDEM [OpenEmbedded Developers European Meeting] for ELCE)&lt;br /&gt;
* a 1-day post-event DevDay&lt;br /&gt;
* a conference booth in the ELC/ELCE event hall, usually with demos&lt;br /&gt;
&lt;br /&gt;
The ELC/ELCE events are often co-located with other LF-related events such as: the Linux Security Summit, Zephyr Summit, KVM Forum, Open Source Summit, etc… Starting around 2019, in an effort to better align some of these events, the early Embedded Linux Conference started moving later in the year, closing the gap between the ELC event and the ELCE event towards the end of the year and expanding the gap between the ELCE event and the ELC event. As a result there has been efforts to add YP/OE-specific events earlier in the year in order to maintain the roughly 6-month gap between events.&lt;br /&gt;
&lt;br /&gt;
=== OE Developers Meeting ===&lt;br /&gt;
The OpenEmbedded Developers {Americas|European} Meeting is a 1-day event, organized by the OpenEmbedded members, for an informal, free-form round-table-style discussion of core issues of concern to core OE/YP developers, BSP maintainers, etc&lt;br /&gt;
&lt;br /&gt;
=== DevDay ===&lt;br /&gt;
DevDay is a 1-day training event consisting of multiple tracks:&lt;br /&gt;
* a full-day beginners tutorial to get newcomers up-to-speed on basic YP/OE usage&lt;br /&gt;
* hands-on classes based on narrow topics of a more specialized nature&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
future events:&lt;br /&gt;
* [https://wiki.yoctoproject.org/wiki/YoctoProject_Summit_May2021 Yocto Project Summit May 2021]&lt;br /&gt;
&lt;br /&gt;
past events:&lt;br /&gt;
* [https://wiki.yoctoproject.org/wiki/YP_Summit_Europe_2020 Yocto Project Summit Europe 2020]&lt;br /&gt;
* [https://wiki.yoctoproject.org/wiki/YP_DevDay_Austin_2020 DevDay Austin 2020]&lt;br /&gt;
* [https://wiki.yoctoproject.org/wiki/YP_Summit_Lyon_2019 Yocto Project Summit Lyon 2019]&lt;br /&gt;
* [https://www.socallinuxexpo.org/scale/17x/open-embedded-summit-0 OE Summit @ SCaLE 17x 2019]&lt;br /&gt;
* [https://wiki.yoctoproject.org/wiki/DevDay_San_Diego_2019 DevDay San Diego 2019]&lt;br /&gt;
* [https://wiki.yoctoproject.org/wiki/DevDay_Edinburgh_2018 DevDay Edinburgh 2018]&lt;br /&gt;
* [https://wiki.yoctoproject.org/wiki/DevDay_Portland_2018 DevDay Portland 2018]&lt;br /&gt;
* [https://wiki.yoctoproject.org/wiki/DevDay_Prague_2017 DevDay Prague 2017]&lt;br /&gt;
* [https://wiki.yoctoproject.org/wiki/DevDay_US_2017 DevDay US 2017]&lt;br /&gt;
&lt;br /&gt;
for a list of YP/OE-related talks at ELC/ELCE see:&lt;br /&gt;
* [https://elinux.org/Buildsystems https://elinux.org/Buildsystems]&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=YoctoProjectEvents&amp;diff=84691</id>
		<title>YoctoProjectEvents</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=YoctoProjectEvents&amp;diff=84691"/>
		<updated>2021-05-14T07:06:44Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Events */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Traditionally the Linux Foundation organizes the Embedded Linux Conference -- one in North America (ELC) and one in Europe (ELCE). The Yocto Project often has a considerable presence at these events in the form of:&lt;br /&gt;
* talks submitted/presented about The Yocto Project, OpenEmbedded, and related technologies including a community BoF (Birds of a Feather) session&lt;br /&gt;
* a 1-day pre-event OpenEmbedded Developers Day (OEDAM [OpenEmbedded Developers Americas Meeting] for ELC and OEDEM [OpenEmbedded Developers European Meeting] for ELCE)&lt;br /&gt;
* a 1-day post-event DevDay&lt;br /&gt;
* a conference booth in the ELC/ELCE event hall, usually with demos&lt;br /&gt;
&lt;br /&gt;
The ELC/ELCE events are often co-located with other LF-related events such as: the Linux Security Summit, Zephyr Summit, KVM Forum, Open Source Summit, etc… Starting around 2019, in an effort to better align some of these events, the early Embedded Linux Conference started moving later in the year, closing the gap between the ELC event and the ELCE event towards the end of the year and expanding the gap between the ELCE event and the ELC event. As a result there has been efforts to add YP/OE-specific events earlier in the year in order to maintain the roughly 6-month gap between events.&lt;br /&gt;
&lt;br /&gt;
=== OE Developers Meeting ===&lt;br /&gt;
The OpenEmbedded Developers {Americas|European} Meeting is a 1-day event, organized by the OpenEmbedded members, for an informal, free-form round-table-style discussion of core issues of concern to core OE/YP developers, BSP maintainers, etc&lt;br /&gt;
&lt;br /&gt;
=== DevDay ===&lt;br /&gt;
DevDay is a 1-day training event consisting of multiple tracks:&lt;br /&gt;
* a full-day beginners tutorial to get newcomers up-to-speed on basic YP/OE usage&lt;br /&gt;
* hands-on classes based on narrow topics of a more specialized nature&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
future events:&lt;br /&gt;
* [https://wiki.yoctoproject.org/wiki/YoctoProject_Summit_May2021 Yocto Project Summit May 2021]&lt;br /&gt;
&lt;br /&gt;
past events:&lt;br /&gt;
* [https://wiki.yoctoproject.org/wiki/YP_DevDay_Austin_2020 DevDay Austin 2020]&lt;br /&gt;
* [https://wiki.yoctoproject.org/wiki/YP_Summit_Lyon_2019 Yocto Project Summit Lyon 2019]&lt;br /&gt;
* [https://www.socallinuxexpo.org/scale/17x/open-embedded-summit-0 OE Summit @ SCaLE 17x 2019]&lt;br /&gt;
* [https://wiki.yoctoproject.org/wiki/DevDay_San_Diego_2019 DevDay San Diego 2019]&lt;br /&gt;
* [https://wiki.yoctoproject.org/wiki/DevDay_Edinburgh_2018 DevDay Edinburgh 2018]&lt;br /&gt;
* [https://wiki.yoctoproject.org/wiki/DevDay_Portland_2018 DevDay Portland 2018]&lt;br /&gt;
* [https://wiki.yoctoproject.org/wiki/DevDay_Prague_2017 DevDay Prague 2017]&lt;br /&gt;
* [https://wiki.yoctoproject.org/wiki/DevDay_US_2017 DevDay US 2017]&lt;br /&gt;
&lt;br /&gt;
for a list of YP/OE-related talks at ELC/ELCE see:&lt;br /&gt;
* [https://elinux.org/Buildsystems https://elinux.org/Buildsystems]&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=YP_DevDay_Austin_2020&amp;diff=84690</id>
		<title>YP DevDay Austin 2020</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=YP_DevDay_Austin_2020&amp;diff=84690"/>
		<updated>2021-05-14T07:04:52Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains slides for the talks in the Yocto Project DevDay Virtual, ELC Austin 2020&lt;br /&gt;
&lt;br /&gt;
Starting at 9:00am, 02 July 2020, Mountain Time. &lt;br /&gt;
&lt;br /&gt;
YP DevDay Virtual home page is here: [https://www.yoctoproject.org/yocto-project-dev-day-virtual-north-america-2020/ https://www.yoctoproject.org/yocto-project-dev-day-virtual-north-america-2020] &lt;br /&gt;
&lt;br /&gt;
== Slides ==&lt;br /&gt;
&lt;br /&gt;
* Presenter Slides&lt;br /&gt;
&lt;br /&gt;
  [https://wiki.yoctoproject.org/wiki/File:DD0_Introduction_NA20.pdf DD0_Introduction_NA20.pdf]&lt;br /&gt;
  [https://wiki.yoctoproject.org/wiki/File:DD0_Introduction_NA20.pptx DD0_Introduction_NA20.pptx]&lt;br /&gt;
  [https://wiki.yoctoproject.org/wiki/File:DD1_Highly_Scalable_Build_Automation_NA20.pdf DD1_Highly_Scalable_Build_Automation_NA20.pdf]&lt;br /&gt;
  [https://wiki.yoctoproject.org/wiki/File:DD1_Highly_Scalable_Build_Automation_NA20.pptx DD1_Highly_Scalable_Build_Automation_NA20.pptx]&lt;br /&gt;
  [https://wiki.yoctoproject.org/wiki/File:DD2_YoctoContainer-handout_NA20.pdf DD2_YoctoContainer-handout_NA20.pdf]&lt;br /&gt;
  [https://wiki.yoctoproject.org/wiki/File:DD3_Kernel_Lab_NA20.pdf DD3_Kernel_Lab_NA20.pdf]&lt;br /&gt;
  [https://wiki.yoctoproject.org/wiki/File:DD3_Kernel_Lab_NA20.pptx DD3_Kernel_Lab_NA20.pptx]&lt;br /&gt;
  [https://wiki.yoctoproject.org/wiki/File:DD5_Security_Hardening_NA20.pdf DD5_Security_Hardening_NA20.pdf]&lt;br /&gt;
  [https://wiki.yoctoproject.org/wiki/File:DD6_Size-Optimizations_NA20.pptx DD6_Size-Optimizations_NA20.pptx]&lt;br /&gt;
  [https://wiki.yoctoproject.org/wiki/File:DD7_CI_CD_NA20.pptx DD7_CI_CD_NA20.pptx]&lt;br /&gt;
  [https://wiki.yoctoproject.org/wiki/File:DD7_CI_CD_NA20.pdf DD7_CI_CD_NA20.pdf]&lt;br /&gt;
  [https://wiki.yoctoproject.org/wiki/File:DD8_Userspace_Lab_NA20.pptx DD8_Userspace_Lab_NA20.pptx]&lt;br /&gt;
  [https://wiki.yoctoproject.org/wiki/File:DD9_Devtool_NA20.odp DD9_Devtool_NA20.odp]&lt;br /&gt;
  [https://wiki.yoctoproject.org/wiki/File:DD9_Devtool_NA20.pdf DD9_Devtool_NA20.pdf]&lt;br /&gt;
  [https://wiki.yoctoproject.org/wiki/File:DD9_Devtool_NA20.pptx DD9_Devtool_NA20.pptx]&lt;br /&gt;
  [https://wiki.yoctoproject.org/wiki/File:DD10_Xen_Hypervisor_NA20.pdf DD10_Xen_Hypervisor_NA20.pdf]&lt;br /&gt;
  [https://wiki.yoctoproject.org/wiki/File:DD10_Virtualization_KVM_Hypervisor_NA20.pdf DD10_Virtualization_KVM_Hypervisor_NA20.pdf]&lt;br /&gt;
&lt;br /&gt;
The presentations were recorded and the videos are available on the [https://www.youtube.com/watch?v=RSjQjPFFWig&amp;amp;list=PLD4M5FoHz-TxzQnVhNXI8OLiaEmNaW2Au Yocto Project Youtube channel]&lt;br /&gt;
 &lt;br /&gt;
* Class Movies, example code&lt;br /&gt;
&lt;br /&gt;
  [https://wiki.yoctoproject.org/wiki/File:Xen-guest-on-Rpi4.mp4 Xen-guest-on-Rpi4.mp4 (Virtualization)]&lt;br /&gt;
  [https://wiki.yoctoproject.org/wiki/File:Xen-on-Rpi4.mp4 Xen-on-Rpi4.mp4 (Virtualization)]&lt;br /&gt;
  [https://wiki.yoctoproject.org/wiki/File:DD10_KVM_guest_on_NUC.mov DD10_KVM_guest_on_NUC.mov]&lt;br /&gt;
  [https://wiki.yoctoproject.org/wiki/File:Ubuntu KVM guest on NUC (Virtualization)]&lt;br /&gt;
  [https://wiki.yoctoproject.org/wiki/File:Elc-austin.zip User Space sample source files]&lt;br /&gt;
&lt;br /&gt;
* ELC Austin 2020 presentations&lt;br /&gt;
&lt;br /&gt;
  [https://wiki.yoctoproject.org/wiki/File:Yocto_Project_LTS_ELC_NA_June_2020.pptx YP LTS Presentation]&lt;br /&gt;
&lt;br /&gt;
* Slides template&lt;br /&gt;
&lt;br /&gt;
  [https://wiki.yoctoproject.org/wiki/File:Yocto_Project_DevDay_NA2020_Template.pptx Yocto_Project_DevDay_NA2020_Template.pptx]&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Extensible_SDK&amp;diff=79189</id>
		<title>Extensible SDK</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Extensible_SDK&amp;diff=79189"/>
		<updated>2020-10-19T10:43:19Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* ELC 2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;This page is being continually updated with more content. Please bookmark and come back soon.&#039;&#039;&#039; Any questions, contact [mailto:henry.bruce@intel.com Henry Bruce]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
The Yocto Project Extensible SDK (eSDK) has tools that allow you to easily add new applications and libraries to an image, modify the source of an existing component and test changes on the target hardware. The main benefit over the standard SDK is improved team workflow due to tighter integration with the OpenEmbedded build system.&lt;br /&gt;
&lt;br /&gt;
Want to learn more about the Extensible SDK? You&#039;ve come to the right place.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
To learn about using the Extensible SDK read the [http://www.yoctoproject.org/docs/current/sdk-manual/sdk-manual.html SDK manual]. Information on building and customizing an eSDK can be found in [http://www.yoctoproject.org/docs/current/sdk-manual/sdk-manual.html#sdk-appendix-customizing Appendix B]. Also see this [http://events.linuxfoundation.org/sites/events/files/slides/2017%20ELC%20Henry%20Bruce.pdf eSDK talk] and companion [https://events.linuxfoundation.org/sites/events/files/slides/2017%20ELC%20--%20Using%20devtool%20to%20Streamline%20your%20Yocto%20Project%20Workflow.pdf devtool talk].&lt;br /&gt;
&lt;br /&gt;
== Pre-built Installers ==&lt;br /&gt;
The Yocto Project auto-builder creates core-image-minimal and core-image-0sato eSDK installers for machines defined in oe-core. Currently only full installers are built. See http://autobuilder.yoctoproject.org/pub/releases/yocto-2.2.1/toolchain/x86_64. As an example [http://autobuilder.yoctoproject.org/pub/releases/yocto-2.2.1/toolchain/x86_64/poky-glibc-x86_64-core-image-sato-core2-64-toolchain-ext-2.2.1.sh poky-glibc-x86_64-core-image-sato-core2-64-toolchain-ext-2.2.1.sh] is the core-image-sato eSDK installer for machine genericx86-64.&lt;br /&gt;
&lt;br /&gt;
== Tips and Tricks ==&lt;br /&gt;
* [[TipsAndTricks/Cmake,Eclipse,_and_SDKS | Add cmake to your eSDK]]&lt;br /&gt;
&lt;br /&gt;
== Workflow ==&lt;br /&gt;
Details of the improved Yocto Project workflow enabled by using containers and the eSDK can be found on the [[Developer Workflow Improvements]] page.&lt;br /&gt;
&lt;br /&gt;
== Presentations ==&lt;br /&gt;
=== ELC 2017 ===&lt;br /&gt;
* [https://elinux.org/images/7/7a/2017_ELC_Henry_Bruce.pdf Henry Bruce&#039;s eSDK talk] and [https://www.youtube.com/watch?v=d3xanDJuXRA video]&lt;br /&gt;
* [https://elinux.org/images/e/e2/2017_ELC_--_Using_devtool_to_Streamline_your_Yocto_Project_Workflow.pdf Tim Orling&#039;s devtool talk] and [https://www.youtube.com/watch?v=CiD7rB35CRE video]&lt;br /&gt;
* [https://elinux.org/images/9/94/2017_ELC_-_Yocto_Project_Containers.pdf Randy Witt&#039;s container talk] and [https://www.youtube.com/watch?v=JXHLAWveh7Y video]&lt;br /&gt;
&lt;br /&gt;
== Releases ==&lt;br /&gt;
* First appeared as part of fido (1.8).&lt;br /&gt;
* Jethro (2.0) is beta release.&lt;br /&gt;
* Krogoth (2.1) is first usable release.&lt;br /&gt;
* Morty (2.2) brings &amp;quot;devtool finish&amp;quot; that generates patches to go with recipe&lt;br /&gt;
* Pyro (2.3) focuses on bug fixes&lt;br /&gt;
* Rocko (2.4) brings devtool (and underlying recipetool) enhancements&lt;br /&gt;
&lt;br /&gt;
== Community ==&lt;br /&gt;
The eSDK is part of [http://www.openembedded.org/wiki/OpenEmbedded-Core Openembedded Core]. &lt;br /&gt;
* Mailing list: openembedded-core@lists.openembedded.org&lt;br /&gt;
* Bugs: https://bugzilla.yoctoproject.org/buglist.cgi?quicksearch=extensible%20sdk&amp;amp;list_id=592532&lt;br /&gt;
* Yocto Project SDK QuickStart: https://mender.io/resources/yocto-sdk-quickstart&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=77000</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=77000"/>
		<updated>2020-09-16T15:03:36Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Tasks list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks. All discussions should be made on the [https://lists.yoctoproject.org/g/docs/ Yocto Project Docs mailing list].&lt;br /&gt;
&lt;br /&gt;
== Sphinx migration for Yocto Project Documentation ==&lt;br /&gt;
&lt;br /&gt;
The Sphinx migration is planned for 3.2 release, and the development is done in [https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/log/?h=sphinx this branch], which produces the following [https://docs.yoctoproject.org/ HTML documentation]. Until the branch gets merged , patches should be sent against this branch.&lt;br /&gt;
&lt;br /&gt;
A lot of work was already done to convert all the docbook files, but there is still some significant of work left to be done.&lt;br /&gt;
&lt;br /&gt;
To use the proof of concept, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
    pip3 install sphinx&lt;br /&gt;
    # to use the non default theme&lt;br /&gt;
    pip3 install sphinx_rtd_theme&lt;br /&gt;
    # your system may also need&lt;br /&gt;
    pip3 install pyyaml&lt;br /&gt;
&lt;br /&gt;
And then:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.yoctoproject.org/git/yocto-docs -b sphinx&lt;br /&gt;
    cd yocto-docs/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
The resulting HTML index page will be _build/html/index.html.&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept for Bitbake Documentation ==&lt;br /&gt;
&lt;br /&gt;
A similar branch exists for the Bitbake documentation as well. The branch is available on [https://git.openembedded.org/bitbake/log/?h=sphinx here], and produces the following [http://docs.yoctoproject.org/bitbake/ HTML documentation].&lt;br /&gt;
&lt;br /&gt;
To build the Bitbake documentation with Sphinx:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.openembedded.org/bitbake -b sphinx&lt;br /&gt;
    cd bitbake/doc&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
However, there are serious shortcomings with Sphinx built-in, for example they can be used/nested inside code-block sections. Another mechanism was implemented so that we can continue to use &#039;variables&#039; within our documentation. A Sphinx extension was implemented to support variable substitutions while &amp;quot;parsing&amp;quot; the .rst files. The pattern for variables substitutions is: &#039;&#039;{VAR}&#039;&#039;. The implementation of the extension can be found here:&lt;br /&gt;
https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/tree/documentation/sphinx/yocto-vars.py?h=sphinx. All variables are set in a file call poky.yaml, which was generated from poky.ent: https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/tree/documentation/poky.yaml?h=sphinx. For example, the following .rst content will produce the &#039;expected&#039; content:&lt;br /&gt;
&lt;br /&gt;
    .. code-block:: &lt;br /&gt;
        $ mkdir ~/poky-{DISTRO}&lt;br /&gt;
        or &lt;br /&gt;
        $ git clone {YOCTO_GIT_URL}/git/poky -b {DISTRO_NAME_NO_CAP}&lt;br /&gt;
&lt;br /&gt;
Variables can be nested, like it was the case for DocBook.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
=== Links and References ===&lt;br /&gt;
&lt;br /&gt;
Please read: https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html&lt;br /&gt;
&lt;br /&gt;
You can include links to other locations in the same document, to locations in other documents and to external websites.&lt;br /&gt;
&lt;br /&gt;
==== references ====&lt;br /&gt;
&lt;br /&gt;
We enable this extension by default: [https://www.sphinx-doc.org/en/master/usage/extensions/autosectionlabel.html. sphinx.ext.autosectionlabel].&lt;br /&gt;
&lt;br /&gt;
You can link from text to a heading in any other part of the document by using the :ref: command with the heading text as the parameter. For example, this text in another part of this document would link to this section:&lt;br /&gt;
    :ref:`Cross-References to Locations in the Same Document`&lt;br /&gt;
&lt;br /&gt;
We can use Custom link text or create custom anchor instead of using the section text:&lt;br /&gt;
    Please check this :ref:`section &amp;lt;Cross-References to Locations in the Same Document&amp;gt;`&lt;br /&gt;
&lt;br /&gt;
You can also create links/references in another .rst file, using the file name:&lt;br /&gt;
    :ref:`overview-manual/overview-manual-development-environment:yocto project source repositories`&lt;br /&gt;
&lt;br /&gt;
or with a custom link text:&lt;br /&gt;
    :ref:`here &amp;lt;overview-manual/overview-manual-development-environment:yocto project source repositories&amp;gt;`&lt;br /&gt;
&lt;br /&gt;
Here is a &#039;&#039;&#039;good tip&#039;&#039;&#039;: You can use the following command to get Sphinx to dump all the references that exist:&lt;br /&gt;
    python -msphinx.ext.intersphinx &amp;lt;path to build folder&amp;gt;/html/objects.inv&lt;br /&gt;
&lt;br /&gt;
In this dump, you will find all links and for each link you will get the default &amp;quot;Link Text&amp;quot; that Sphinx will use. If the default link text is not appropriate, you can provide a custom link text in the &#039;&#039;:ref:&#039;&#039; link. &lt;br /&gt;
&lt;br /&gt;
==== external links ====&lt;br /&gt;
We enable the &#039;[https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html#use-the-external-links-extension extlinks]&#039; extension by default, and it&#039;s configured with the following ``extlinks``:&lt;br /&gt;
&lt;br /&gt;
    &#039;yocto_home&#039;: (&#039;https://yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_wiki&#039;: (&#039;https://wiki.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_dl&#039;: (&#039;https://downloads.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_lists&#039;: (&#039;https://lists.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_bugs&#039;: (&#039;https://bugzilla.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_ab&#039;: (&#039;https://autobuilder.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_docs&#039;: (&#039;https://docs.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_git&#039;: (&#039;https://git.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;oe_home&#039;: (&#039;https://www.openembedded.org%s&#039;, None),&lt;br /&gt;
    &#039;oe_lists&#039;: (&#039;https://lists.openembedded.org%s&#039;, None),&lt;br /&gt;
&lt;br /&gt;
In the documentation rst files, we can then do:&lt;br /&gt;
&lt;br /&gt;
    Please check this :yocto_wiki:`wiki page &amp;lt;/Weekly_Status&amp;gt;`&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== intersphinx links ====&lt;br /&gt;
&lt;br /&gt;
We also enable the [https://www.sphinx-doc.org/en/master/usage/extensions/intersphinx.html intersphinx extension] so that we can cross reference content from the bitbake manual for example. When building the YP docs, Sphinx will first download the objects.inv file from the Bitbake manual, so that it knows all the existing references/links set in the bitbake documentation. Then references to the bitbake manual can be done like this:&lt;br /&gt;
&lt;br /&gt;
    See the &amp;quot;:ref:`-D &amp;lt;bitbake:bitbake-user-manual/bitbake-user-manual-intro:usage and syntax&amp;gt;`&amp;quot; option&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
    :term:`bitbake:BB_NUMBER_PARSE_THREADS`&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## &amp;lt;s&amp;gt;Update initial patches with yocto-docs recent changes &amp;lt;/s&amp;gt;&lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## &amp;lt;s&amp;gt;Automated conversion with pandoc&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;adt-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;brief-yoctoprojectqs&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;dev-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;kernel-dev&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;profile-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;sdk-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;toaster-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;test-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;bitbake-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;overview-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
## fix up all manuals for: links, figures, headings, notes, code blocks, global substitutions variables&lt;br /&gt;
### adt-manual&lt;br /&gt;
### &amp;lt;s&amp;gt;brief-yoctoprojectqs&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;overview-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;dev-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;kernel-dev&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;profile-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;sdk-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### toaster-manual&lt;br /&gt;
### &amp;lt;s&amp;gt;test-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;bitbake-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
## Use current docs CSS file to create proper theme&lt;br /&gt;
### &amp;lt;s&amp;gt;initial import&amp;lt;/s&amp;gt;&lt;br /&gt;
### tuning/optimization&lt;br /&gt;
## How to deal with each docbook &#039;first&#039; page (license and TOC) (In progress RP and ndec looking at that)&lt;br /&gt;
## &amp;lt;s&amp;gt;Implement glossary&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&amp;lt;/s&amp;gt;&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated. (In progress, Michael on it)&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# &amp;lt;s&amp;gt;Do we want to backport to dunfell LTS? (RP: Yes!)&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;RP: Can we create a single page manual for ease of searching (some users need this and I personally use it a lot that way, I&#039;m unlikely alone)&amp;lt;/s&amp;gt;&lt;br /&gt;
# RP: Glossary headings don&#039;t appear to be externally linkable?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76964</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76964"/>
		<updated>2020-09-15T15:05:16Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Tasks list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks. All discussions should be made on the [https://lists.yoctoproject.org/g/docs/ Yocto Project Docs mailing list].&lt;br /&gt;
&lt;br /&gt;
== Sphinx migration for Yocto Project Documentation ==&lt;br /&gt;
&lt;br /&gt;
The Sphinx migration is planned for 3.2 release, and the development is done in [https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/log/?h=sphinx this branch], which produces the following [https://docs.yoctoproject.org/ HTML documentation]. Until the branch gets merged , patches should be sent against this branch.&lt;br /&gt;
&lt;br /&gt;
A lot of work was already done to convert all the docbook files, but there is still some significant of work left to be done.&lt;br /&gt;
&lt;br /&gt;
To use the proof of concept, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
    pip3 install sphinx&lt;br /&gt;
    # to use the non default theme&lt;br /&gt;
    pip3 install sphinx_rtd_theme&lt;br /&gt;
    # your system may also need&lt;br /&gt;
    pip3 install pyyaml&lt;br /&gt;
&lt;br /&gt;
And then:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.yoctoproject.org/git/yocto-docs -b sphinx&lt;br /&gt;
    cd yocto-docs/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
The resulting HTML index page will be _build/html/index.html.&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept for Bitbake Documentation ==&lt;br /&gt;
&lt;br /&gt;
A similar branch exists for the Bitbake documentation as well. The branch is available on [https://git.openembedded.org/bitbake/log/?h=sphinx here], and produces the following [http://docs.yoctoproject.org/bitbake/ HTML documentation].&lt;br /&gt;
&lt;br /&gt;
To build the Bitbake documentation with Sphinx:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.openembedded.org/bitbake -b sphinx&lt;br /&gt;
    cd bitbake/doc&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
However, there are serious shortcomings with Sphinx built-in, for example they can be used/nested inside code-block sections. Another mechanism was implemented so that we can continue to use &#039;variables&#039; within our documentation. A Sphinx extension was implemented to support variable substitutions while &amp;quot;parsing&amp;quot; the .rst files. The pattern for variables substitutions is: &#039;&#039;{VAR}&#039;&#039;. The implementation of the extension can be found here:&lt;br /&gt;
https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/tree/documentation/sphinx/yocto-vars.py?h=sphinx. All variables are set in a file call poky.yaml, which was generated from poky.ent: https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/tree/documentation/poky.yaml?h=sphinx. For example, the following .rst content will produce the &#039;expected&#039; content:&lt;br /&gt;
&lt;br /&gt;
    .. code-block:: &lt;br /&gt;
        $ mkdir ~/poky-{DISTRO}&lt;br /&gt;
        or &lt;br /&gt;
        $ git clone {YOCTO_GIT_URL}/git/poky -b {DISTRO_NAME_NO_CAP}&lt;br /&gt;
&lt;br /&gt;
Variables can be nested, like it was the case for DocBook.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
=== Links and References ===&lt;br /&gt;
&lt;br /&gt;
Please read: https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html&lt;br /&gt;
&lt;br /&gt;
You can include links to other locations in the same document, to locations in other documents and to external websites.&lt;br /&gt;
&lt;br /&gt;
==== references ====&lt;br /&gt;
&lt;br /&gt;
We enable this extension by default: [https://www.sphinx-doc.org/en/master/usage/extensions/autosectionlabel.html. sphinx.ext.autosectionlabel].&lt;br /&gt;
&lt;br /&gt;
You can link from text to a heading in any other part of the document by using the :ref: command with the heading text as the parameter. For example, this text in another part of this document would link to this section:&lt;br /&gt;
    :ref:`Cross-References to Locations in the Same Document`&lt;br /&gt;
&lt;br /&gt;
We can use Custom link text or create custom anchor instead of using the section text:&lt;br /&gt;
    Please check this :ref:`section &amp;lt;Cross-References to Locations in the Same Document&amp;gt;`&lt;br /&gt;
&lt;br /&gt;
You can also create links/references in another .rst file, using the file name:&lt;br /&gt;
    :ref:`overview-manual/overview-manual-development-environment:yocto project source repositories`&lt;br /&gt;
&lt;br /&gt;
or with a custom link text:&lt;br /&gt;
    :ref:`here &amp;lt;overview-manual/overview-manual-development-environment:yocto project source repositories&amp;gt;`&lt;br /&gt;
&lt;br /&gt;
Here is a &#039;&#039;&#039;good tip&#039;&#039;&#039;: You can use the following command to get Sphinx to dump all the references that exist:&lt;br /&gt;
    python -msphinx.ext.intersphinx &amp;lt;path to build folder&amp;gt;/html/objects.inv&lt;br /&gt;
&lt;br /&gt;
In this dump, you will find all links and for each link you will get the default &amp;quot;Link Text&amp;quot; that Sphinx will use. If the default link text is not appropriate, you can provide a custom link text in the &#039;&#039;:ref:&#039;&#039; link. &lt;br /&gt;
&lt;br /&gt;
==== external links ====&lt;br /&gt;
We enable the &#039;[https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html#use-the-external-links-extension extlinks]&#039; extension by default, and it&#039;s configured with the following ``extlinks``:&lt;br /&gt;
&lt;br /&gt;
    &#039;yocto_home&#039;: (&#039;https://yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_wiki&#039;: (&#039;https://wiki.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_dl&#039;: (&#039;https://downloads.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_lists&#039;: (&#039;https://lists.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_bugs&#039;: (&#039;https://bugzilla.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_ab&#039;: (&#039;https://autobuilder.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_docs&#039;: (&#039;https://docs.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_git&#039;: (&#039;https://git.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;oe_home&#039;: (&#039;https://www.openembedded.org%s&#039;, None),&lt;br /&gt;
    &#039;oe_lists&#039;: (&#039;https://lists.openembedded.org%s&#039;, None),&lt;br /&gt;
&lt;br /&gt;
In the documentation rst files, we can then do:&lt;br /&gt;
&lt;br /&gt;
    Please check this :yocto_wiki:`wiki page &amp;lt;/Weekly_Status&amp;gt;`&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== intersphinx links ====&lt;br /&gt;
&lt;br /&gt;
We also enable the [https://www.sphinx-doc.org/en/master/usage/extensions/intersphinx.html intersphinx extension] so that we can cross reference content from the bitbake manual for example. When building the YP docs, Sphinx will first download the objects.inv file from the Bitbake manual, so that it knows all the existing references/links set in the bitbake documentation. Then references to the bitbake manual can be done like this:&lt;br /&gt;
&lt;br /&gt;
    See the &amp;quot;:ref:`-D &amp;lt;bitbake:bitbake-user-manual/bitbake-user-manual-intro:usage and syntax&amp;gt;`&amp;quot; option&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
    :term:`bitbake:BB_NUMBER_PARSE_THREADS`&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## &amp;lt;s&amp;gt;Update initial patches with yocto-docs recent changes &amp;lt;/s&amp;gt;&lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## &amp;lt;s&amp;gt;Automated conversion with pandoc&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;adt-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;brief-yoctoprojectqs&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;dev-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;kernel-dev&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;profile-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;sdk-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;toaster-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;test-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;bitbake-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;overview-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
## fix up all manuals for: links, figures, headings, notes, code blocks, global substitutions variables&lt;br /&gt;
### adt-manual&lt;br /&gt;
### &amp;lt;s&amp;gt;brief-yoctoprojectqs&amp;lt;/s&amp;gt;&lt;br /&gt;
### overview-manual&lt;br /&gt;
### &amp;lt;s&amp;gt;dev-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### kernel-dev&lt;br /&gt;
### &amp;lt;s&amp;gt;profile-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;sdk-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### toaster-manual&lt;br /&gt;
### test-manual&lt;br /&gt;
### &amp;lt;s&amp;gt;bitbake-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
## Use current docs CSS file to create proper theme&lt;br /&gt;
### &amp;lt;s&amp;gt;initial import&amp;lt;/s&amp;gt;&lt;br /&gt;
### tuning/optimization&lt;br /&gt;
## How to deal with each docbook &#039;first&#039; page (license and TOC) (In progress RP and ndec looking at that)&lt;br /&gt;
## &amp;lt;s&amp;gt;Implement glossary&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&amp;lt;/s&amp;gt;&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated. (In progress, Michael on it)&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# &amp;lt;s&amp;gt;Do we want to backport to dunfell LTS? (RP: Yes!)&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;RP: Can we create a single page manual for ease of searching (some users need this and I personally use it a lot that way, I&#039;m unlikely alone)&amp;lt;/s&amp;gt;&lt;br /&gt;
# RP: Glossary headings don&#039;t appear to be externally linkable?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76930</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76930"/>
		<updated>2020-09-14T21:02:14Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Tasks list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks. All discussions should be made on the [https://lists.yoctoproject.org/g/docs/ Yocto Project Docs mailing list].&lt;br /&gt;
&lt;br /&gt;
== Sphinx migration for Yocto Project Documentation ==&lt;br /&gt;
&lt;br /&gt;
The Sphinx migration is planned for 3.2 release, and the development is done in [https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/log/?h=sphinx this branch], which produces the following [https://docs.yoctoproject.org/ HTML documentation]. Until the branch gets merged , patches should be sent against this branch.&lt;br /&gt;
&lt;br /&gt;
A lot of work was already done to convert all the docbook files, but there is still some significant of work left to be done.&lt;br /&gt;
&lt;br /&gt;
To use the proof of concept, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
    pip3 install sphinx&lt;br /&gt;
    # to use the non default theme&lt;br /&gt;
    pip3 install sphinx_rtd_theme&lt;br /&gt;
    # your system may also need&lt;br /&gt;
    pip3 install pyyaml&lt;br /&gt;
&lt;br /&gt;
And then:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.yoctoproject.org/git/yocto-docs -b sphinx&lt;br /&gt;
    cd yocto-docs/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
The resulting HTML index page will be _build/html/index.html.&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept for Bitbake Documentation ==&lt;br /&gt;
&lt;br /&gt;
A similar branch exists for the Bitbake documentation as well. The branch is available on [https://git.openembedded.org/bitbake/log/?h=sphinx here], and produces the following [http://docs.yoctoproject.org/bitbake/ HTML documentation].&lt;br /&gt;
&lt;br /&gt;
To build the Bitbake documentation with Sphinx:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.openembedded.org/bitbake -b sphinx&lt;br /&gt;
    cd bitbake/doc&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
However, there are serious shortcomings with Sphinx built-in, for example they can be used/nested inside code-block sections. Another mechanism was implemented so that we can continue to use &#039;variables&#039; within our documentation. A Sphinx extension was implemented to support variable substitutions while &amp;quot;parsing&amp;quot; the .rst files. The pattern for variables substitutions is: &#039;&#039;{VAR}&#039;&#039;. The implementation of the extension can be found here:&lt;br /&gt;
https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/tree/documentation/sphinx/yocto-vars.py?h=sphinx. All variables are set in a file call poky.yaml, which was generated from poky.ent: https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/tree/documentation/poky.yaml?h=sphinx. For example, the following .rst content will produce the &#039;expected&#039; content:&lt;br /&gt;
&lt;br /&gt;
    .. code-block:: &lt;br /&gt;
        $ mkdir ~/poky-{DISTRO}&lt;br /&gt;
        or &lt;br /&gt;
        $ git clone {YOCTO_GIT_URL}/git/poky -b {DISTRO_NAME_NO_CAP}&lt;br /&gt;
&lt;br /&gt;
Variables can be nested, like it was the case for DocBook.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
=== Links and References ===&lt;br /&gt;
&lt;br /&gt;
Please read: https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html&lt;br /&gt;
&lt;br /&gt;
You can include links to other locations in the same document, to locations in other documents and to external websites.&lt;br /&gt;
&lt;br /&gt;
==== references ====&lt;br /&gt;
&lt;br /&gt;
We enable this extension by default: [https://www.sphinx-doc.org/en/master/usage/extensions/autosectionlabel.html. sphinx.ext.autosectionlabel].&lt;br /&gt;
&lt;br /&gt;
You can link from text to a heading in any other part of the document by using the :ref: command with the heading text as the parameter. For example, this text in another part of this document would link to this section:&lt;br /&gt;
    :ref:`Cross-References to Locations in the Same Document`&lt;br /&gt;
&lt;br /&gt;
We can use Custom link text or create custom anchor instead of using the section text:&lt;br /&gt;
    Please check this :ref:`section &amp;lt;Cross-References to Locations in the Same Document&amp;gt;`&lt;br /&gt;
&lt;br /&gt;
You can also create links/references in another .rst file, using the file name:&lt;br /&gt;
    :ref:`overview-manual/overview-manual-development-environment:yocto project source repositories`&lt;br /&gt;
&lt;br /&gt;
or with a custom link text:&lt;br /&gt;
    :ref:`here &amp;lt;overview-manual/overview-manual-development-environment:yocto project source repositories&amp;gt;`&lt;br /&gt;
&lt;br /&gt;
Here is a &#039;&#039;&#039;good tip&#039;&#039;&#039;: You can use the following command to get Sphinx to dump all the references that exist:&lt;br /&gt;
    python -msphinx.ext.intersphinx &amp;lt;path to build folder&amp;gt;/html/objects.inv&lt;br /&gt;
&lt;br /&gt;
In this dump, you will find all links and for each link you will get the default &amp;quot;Link Text&amp;quot; that Sphinx will use. If the default link text is not appropriate, you can provide a custom link text in the &#039;&#039;:ref:&#039;&#039; link. &lt;br /&gt;
&lt;br /&gt;
==== external links ====&lt;br /&gt;
We enable the &#039;[https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html#use-the-external-links-extension extlinks]&#039; extension by default, and it&#039;s configured with the following ``extlinks``:&lt;br /&gt;
&lt;br /&gt;
    &#039;yocto_home&#039;: (&#039;https://yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_wiki&#039;: (&#039;https://wiki.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_dl&#039;: (&#039;https://downloads.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_lists&#039;: (&#039;https://lists.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_bugs&#039;: (&#039;https://bugzilla.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_ab&#039;: (&#039;https://autobuilder.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_docs&#039;: (&#039;https://docs.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_git&#039;: (&#039;https://git.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;oe_home&#039;: (&#039;https://www.openembedded.org%s&#039;, None),&lt;br /&gt;
    &#039;oe_lists&#039;: (&#039;https://lists.openembedded.org%s&#039;, None),&lt;br /&gt;
&lt;br /&gt;
In the documentation rst files, we can then do:&lt;br /&gt;
&lt;br /&gt;
    Please check this :yocto_wiki:`wiki page &amp;lt;/Weekly_Status&amp;gt;`&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== intersphinx links ====&lt;br /&gt;
&lt;br /&gt;
We also enable the [https://www.sphinx-doc.org/en/master/usage/extensions/intersphinx.html intersphinx extension] so that we can cross reference content from the bitbake manual for example. When building the YP docs, Sphinx will first download the objects.inv file from the Bitbake manual, so that it knows all the existing references/links set in the bitbake documentation. Then references to the bitbake manual can be done like this:&lt;br /&gt;
&lt;br /&gt;
    See the &amp;quot;:ref:`-D &amp;lt;bitbake:bitbake-user-manual/bitbake-user-manual-intro:usage and syntax&amp;gt;`&amp;quot; option&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
    :term:`bitbake:BB_NUMBER_PARSE_THREADS`&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## &amp;lt;s&amp;gt;Update initial patches with yocto-docs recent changes &amp;lt;/s&amp;gt;&lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## &amp;lt;s&amp;gt;Automated conversion with pandoc&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;adt-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;brief-yoctoprojectqs&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;dev-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;kernel-dev&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;profile-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;sdk-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;toaster-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;test-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;bitbake-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;overview-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
## fix up all manuals for: links, figures, headings, notes, code blocks, global substitutions variables&lt;br /&gt;
### adt-manual&lt;br /&gt;
### &amp;lt;s&amp;gt;brief-yoctoprojectqs&amp;lt;/s&amp;gt;&lt;br /&gt;
### overview-manual&lt;br /&gt;
### &amp;lt;s&amp;gt;dev-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### kernel-dev&lt;br /&gt;
### profile-manual&lt;br /&gt;
### &amp;lt;s&amp;gt;sdk-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### toaster-manual&lt;br /&gt;
### test-manual&lt;br /&gt;
### &amp;lt;s&amp;gt;bitbake-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
## Use current docs CSS file to create proper theme&lt;br /&gt;
### &amp;lt;s&amp;gt;initial import&amp;lt;/s&amp;gt;&lt;br /&gt;
### tuning/optimization&lt;br /&gt;
## How to deal with each docbook &#039;first&#039; page (license and TOC) (In progress RP and ndec looking at that)&lt;br /&gt;
## &amp;lt;s&amp;gt;Implement glossary&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&amp;lt;/s&amp;gt;&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated. (In progress, Michael on it)&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# &amp;lt;s&amp;gt;Do we want to backport to dunfell LTS? (RP: Yes!)&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;RP: Can we create a single page manual for ease of searching (some users need this and I personally use it a lot that way, I&#039;m unlikely alone)&amp;lt;/s&amp;gt;&lt;br /&gt;
# RP: Glossary headings don&#039;t appear to be externally linkable?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76929</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76929"/>
		<updated>2020-09-14T21:01:35Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Tasks list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks. All discussions should be made on the [https://lists.yoctoproject.org/g/docs/ Yocto Project Docs mailing list].&lt;br /&gt;
&lt;br /&gt;
== Sphinx migration for Yocto Project Documentation ==&lt;br /&gt;
&lt;br /&gt;
The Sphinx migration is planned for 3.2 release, and the development is done in [https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/log/?h=sphinx this branch], which produces the following [https://docs.yoctoproject.org/ HTML documentation]. Until the branch gets merged , patches should be sent against this branch.&lt;br /&gt;
&lt;br /&gt;
A lot of work was already done to convert all the docbook files, but there is still some significant of work left to be done.&lt;br /&gt;
&lt;br /&gt;
To use the proof of concept, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
    pip3 install sphinx&lt;br /&gt;
    # to use the non default theme&lt;br /&gt;
    pip3 install sphinx_rtd_theme&lt;br /&gt;
    # your system may also need&lt;br /&gt;
    pip3 install pyyaml&lt;br /&gt;
&lt;br /&gt;
And then:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.yoctoproject.org/git/yocto-docs -b sphinx&lt;br /&gt;
    cd yocto-docs/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
The resulting HTML index page will be _build/html/index.html.&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept for Bitbake Documentation ==&lt;br /&gt;
&lt;br /&gt;
A similar branch exists for the Bitbake documentation as well. The branch is available on [https://git.openembedded.org/bitbake/log/?h=sphinx here], and produces the following [http://docs.yoctoproject.org/bitbake/ HTML documentation].&lt;br /&gt;
&lt;br /&gt;
To build the Bitbake documentation with Sphinx:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.openembedded.org/bitbake -b sphinx&lt;br /&gt;
    cd bitbake/doc&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
However, there are serious shortcomings with Sphinx built-in, for example they can be used/nested inside code-block sections. Another mechanism was implemented so that we can continue to use &#039;variables&#039; within our documentation. A Sphinx extension was implemented to support variable substitutions while &amp;quot;parsing&amp;quot; the .rst files. The pattern for variables substitutions is: &#039;&#039;{VAR}&#039;&#039;. The implementation of the extension can be found here:&lt;br /&gt;
https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/tree/documentation/sphinx/yocto-vars.py?h=sphinx. All variables are set in a file call poky.yaml, which was generated from poky.ent: https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/tree/documentation/poky.yaml?h=sphinx. For example, the following .rst content will produce the &#039;expected&#039; content:&lt;br /&gt;
&lt;br /&gt;
    .. code-block:: &lt;br /&gt;
        $ mkdir ~/poky-{DISTRO}&lt;br /&gt;
        or &lt;br /&gt;
        $ git clone {YOCTO_GIT_URL}/git/poky -b {DISTRO_NAME_NO_CAP}&lt;br /&gt;
&lt;br /&gt;
Variables can be nested, like it was the case for DocBook.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
=== Links and References ===&lt;br /&gt;
&lt;br /&gt;
Please read: https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html&lt;br /&gt;
&lt;br /&gt;
You can include links to other locations in the same document, to locations in other documents and to external websites.&lt;br /&gt;
&lt;br /&gt;
==== references ====&lt;br /&gt;
&lt;br /&gt;
We enable this extension by default: [https://www.sphinx-doc.org/en/master/usage/extensions/autosectionlabel.html. sphinx.ext.autosectionlabel].&lt;br /&gt;
&lt;br /&gt;
You can link from text to a heading in any other part of the document by using the :ref: command with the heading text as the parameter. For example, this text in another part of this document would link to this section:&lt;br /&gt;
    :ref:`Cross-References to Locations in the Same Document`&lt;br /&gt;
&lt;br /&gt;
We can use Custom link text or create custom anchor instead of using the section text:&lt;br /&gt;
    Please check this :ref:`section &amp;lt;Cross-References to Locations in the Same Document&amp;gt;`&lt;br /&gt;
&lt;br /&gt;
You can also create links/references in another .rst file, using the file name:&lt;br /&gt;
    :ref:`overview-manual/overview-manual-development-environment:yocto project source repositories`&lt;br /&gt;
&lt;br /&gt;
or with a custom link text:&lt;br /&gt;
    :ref:`here &amp;lt;overview-manual/overview-manual-development-environment:yocto project source repositories&amp;gt;`&lt;br /&gt;
&lt;br /&gt;
Here is a &#039;&#039;&#039;good tip&#039;&#039;&#039;: You can use the following command to get Sphinx to dump all the references that exist:&lt;br /&gt;
    python -msphinx.ext.intersphinx &amp;lt;path to build folder&amp;gt;/html/objects.inv&lt;br /&gt;
&lt;br /&gt;
In this dump, you will find all links and for each link you will get the default &amp;quot;Link Text&amp;quot; that Sphinx will use. If the default link text is not appropriate, you can provide a custom link text in the &#039;&#039;:ref:&#039;&#039; link. &lt;br /&gt;
&lt;br /&gt;
==== external links ====&lt;br /&gt;
We enable the &#039;[https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html#use-the-external-links-extension extlinks]&#039; extension by default, and it&#039;s configured with the following ``extlinks``:&lt;br /&gt;
&lt;br /&gt;
    &#039;yocto_home&#039;: (&#039;https://yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_wiki&#039;: (&#039;https://wiki.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_dl&#039;: (&#039;https://downloads.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_lists&#039;: (&#039;https://lists.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_bugs&#039;: (&#039;https://bugzilla.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_ab&#039;: (&#039;https://autobuilder.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_docs&#039;: (&#039;https://docs.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_git&#039;: (&#039;https://git.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;oe_home&#039;: (&#039;https://www.openembedded.org%s&#039;, None),&lt;br /&gt;
    &#039;oe_lists&#039;: (&#039;https://lists.openembedded.org%s&#039;, None),&lt;br /&gt;
&lt;br /&gt;
In the documentation rst files, we can then do:&lt;br /&gt;
&lt;br /&gt;
    Please check this :yocto_wiki:`wiki page &amp;lt;/Weekly_Status&amp;gt;`&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== intersphinx links ====&lt;br /&gt;
&lt;br /&gt;
We also enable the [https://www.sphinx-doc.org/en/master/usage/extensions/intersphinx.html intersphinx extension] so that we can cross reference content from the bitbake manual for example. When building the YP docs, Sphinx will first download the objects.inv file from the Bitbake manual, so that it knows all the existing references/links set in the bitbake documentation. Then references to the bitbake manual can be done like this:&lt;br /&gt;
&lt;br /&gt;
    See the &amp;quot;:ref:`-D &amp;lt;bitbake:bitbake-user-manual/bitbake-user-manual-intro:usage and syntax&amp;gt;`&amp;quot; option&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
    :term:`bitbake:BB_NUMBER_PARSE_THREADS`&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## &amp;lt;s&amp;gt;Update initial patches with yocto-docs recent changes &amp;lt;/s&amp;gt;&lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## &amp;lt;s&amp;gt;Automated conversion with pandoc&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;adt-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;brief-yoctoprojectqs&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;dev-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;kernel-dev&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;profile-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;sdk-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;toaster-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;test-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;bitbake-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
## fix up all manuals for: links, figures, headings, notes, code blocks, global substitutions variables&lt;br /&gt;
### adt-manual&lt;br /&gt;
### &amp;lt;s&amp;gt;brief-yoctoprojectqs&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;dev-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### kernel-dev&lt;br /&gt;
### profile-manual&lt;br /&gt;
### &amp;lt;s&amp;gt;sdk-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### toaster-manual&lt;br /&gt;
### test-manual&lt;br /&gt;
### &amp;lt;s&amp;gt;bitbake-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
## Use current docs CSS file to create proper theme&lt;br /&gt;
### &amp;lt;s&amp;gt;initial import&amp;lt;/s&amp;gt;&lt;br /&gt;
### tuning/optimization&lt;br /&gt;
## How to deal with each docbook &#039;first&#039; page (license and TOC) (In progress RP and ndec looking at that)&lt;br /&gt;
## &amp;lt;s&amp;gt;Implement glossary&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&amp;lt;/s&amp;gt;&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated. (In progress, Michael on it)&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# &amp;lt;s&amp;gt;Do we want to backport to dunfell LTS? (RP: Yes!)&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;RP: Can we create a single page manual for ease of searching (some users need this and I personally use it a lot that way, I&#039;m unlikely alone)&amp;lt;/s&amp;gt;&lt;br /&gt;
# RP: Glossary headings don&#039;t appear to be externally linkable?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76928</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76928"/>
		<updated>2020-09-14T20:56:53Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Sphinx proof of concept for Bitbake Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks. All discussions should be made on the [https://lists.yoctoproject.org/g/docs/ Yocto Project Docs mailing list].&lt;br /&gt;
&lt;br /&gt;
== Sphinx migration for Yocto Project Documentation ==&lt;br /&gt;
&lt;br /&gt;
The Sphinx migration is planned for 3.2 release, and the development is done in [https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/log/?h=sphinx this branch], which produces the following [https://docs.yoctoproject.org/ HTML documentation]. Until the branch gets merged , patches should be sent against this branch.&lt;br /&gt;
&lt;br /&gt;
A lot of work was already done to convert all the docbook files, but there is still some significant of work left to be done.&lt;br /&gt;
&lt;br /&gt;
To use the proof of concept, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
    pip3 install sphinx&lt;br /&gt;
    # to use the non default theme&lt;br /&gt;
    pip3 install sphinx_rtd_theme&lt;br /&gt;
    # your system may also need&lt;br /&gt;
    pip3 install pyyaml&lt;br /&gt;
&lt;br /&gt;
And then:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.yoctoproject.org/git/yocto-docs -b sphinx&lt;br /&gt;
    cd yocto-docs/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
The resulting HTML index page will be _build/html/index.html.&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept for Bitbake Documentation ==&lt;br /&gt;
&lt;br /&gt;
A similar branch exists for the Bitbake documentation as well. The branch is available on [https://git.openembedded.org/bitbake/log/?h=sphinx here], and produces the following [http://docs.yoctoproject.org/bitbake/ HTML documentation].&lt;br /&gt;
&lt;br /&gt;
To build the Bitbake documentation with Sphinx:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.openembedded.org/bitbake -b sphinx&lt;br /&gt;
    cd bitbake/doc&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
However, there are serious shortcomings with Sphinx built-in, for example they can be used/nested inside code-block sections. Another mechanism was implemented so that we can continue to use &#039;variables&#039; within our documentation. A Sphinx extension was implemented to support variable substitutions while &amp;quot;parsing&amp;quot; the .rst files. The pattern for variables substitutions is: &#039;&#039;{VAR}&#039;&#039;. The implementation of the extension can be found here:&lt;br /&gt;
https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/tree/documentation/sphinx/yocto-vars.py?h=sphinx. All variables are set in a file call poky.yaml, which was generated from poky.ent: https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/tree/documentation/poky.yaml?h=sphinx. For example, the following .rst content will produce the &#039;expected&#039; content:&lt;br /&gt;
&lt;br /&gt;
    .. code-block:: &lt;br /&gt;
        $ mkdir ~/poky-{DISTRO}&lt;br /&gt;
        or &lt;br /&gt;
        $ git clone {YOCTO_GIT_URL}/git/poky -b {DISTRO_NAME_NO_CAP}&lt;br /&gt;
&lt;br /&gt;
Variables can be nested, like it was the case for DocBook.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
=== Links and References ===&lt;br /&gt;
&lt;br /&gt;
Please read: https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html&lt;br /&gt;
&lt;br /&gt;
You can include links to other locations in the same document, to locations in other documents and to external websites.&lt;br /&gt;
&lt;br /&gt;
==== references ====&lt;br /&gt;
&lt;br /&gt;
We enable this extension by default: [https://www.sphinx-doc.org/en/master/usage/extensions/autosectionlabel.html. sphinx.ext.autosectionlabel].&lt;br /&gt;
&lt;br /&gt;
You can link from text to a heading in any other part of the document by using the :ref: command with the heading text as the parameter. For example, this text in another part of this document would link to this section:&lt;br /&gt;
    :ref:`Cross-References to Locations in the Same Document`&lt;br /&gt;
&lt;br /&gt;
We can use Custom link text or create custom anchor instead of using the section text:&lt;br /&gt;
    Please check this :ref:`section &amp;lt;Cross-References to Locations in the Same Document&amp;gt;`&lt;br /&gt;
&lt;br /&gt;
You can also create links/references in another .rst file, using the file name:&lt;br /&gt;
    :ref:`overview-manual/overview-manual-development-environment:yocto project source repositories`&lt;br /&gt;
&lt;br /&gt;
or with a custom link text:&lt;br /&gt;
    :ref:`here &amp;lt;overview-manual/overview-manual-development-environment:yocto project source repositories&amp;gt;`&lt;br /&gt;
&lt;br /&gt;
Here is a &#039;&#039;&#039;good tip&#039;&#039;&#039;: You can use the following command to get Sphinx to dump all the references that exist:&lt;br /&gt;
    python -msphinx.ext.intersphinx &amp;lt;path to build folder&amp;gt;/html/objects.inv&lt;br /&gt;
&lt;br /&gt;
In this dump, you will find all links and for each link you will get the default &amp;quot;Link Text&amp;quot; that Sphinx will use. If the default link text is not appropriate, you can provide a custom link text in the &#039;&#039;:ref:&#039;&#039; link. &lt;br /&gt;
&lt;br /&gt;
==== external links ====&lt;br /&gt;
We enable the &#039;[https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html#use-the-external-links-extension extlinks]&#039; extension by default, and it&#039;s configured with the following ``extlinks``:&lt;br /&gt;
&lt;br /&gt;
    &#039;yocto_home&#039;: (&#039;https://yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_wiki&#039;: (&#039;https://wiki.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_dl&#039;: (&#039;https://downloads.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_lists&#039;: (&#039;https://lists.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_bugs&#039;: (&#039;https://bugzilla.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_ab&#039;: (&#039;https://autobuilder.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_docs&#039;: (&#039;https://docs.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_git&#039;: (&#039;https://git.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;oe_home&#039;: (&#039;https://www.openembedded.org%s&#039;, None),&lt;br /&gt;
    &#039;oe_lists&#039;: (&#039;https://lists.openembedded.org%s&#039;, None),&lt;br /&gt;
&lt;br /&gt;
In the documentation rst files, we can then do:&lt;br /&gt;
&lt;br /&gt;
    Please check this :yocto_wiki:`wiki page &amp;lt;/Weekly_Status&amp;gt;`&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== intersphinx links ====&lt;br /&gt;
&lt;br /&gt;
We also enable the [https://www.sphinx-doc.org/en/master/usage/extensions/intersphinx.html intersphinx extension] so that we can cross reference content from the bitbake manual for example. When building the YP docs, Sphinx will first download the objects.inv file from the Bitbake manual, so that it knows all the existing references/links set in the bitbake documentation. Then references to the bitbake manual can be done like this:&lt;br /&gt;
&lt;br /&gt;
    See the &amp;quot;:ref:`-D &amp;lt;bitbake:bitbake-user-manual/bitbake-user-manual-intro:usage and syntax&amp;gt;`&amp;quot; option&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
    :term:`bitbake:BB_NUMBER_PARSE_THREADS`&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## &amp;lt;s&amp;gt;Update initial patches with yocto-docs recent changes &amp;lt;/s&amp;gt;&lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## &amp;lt;s&amp;gt;Automated conversion with pandoc&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;adt-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;brief-yoctoprojectqs&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;dev-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;kernel-dev&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;profile-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;sdk-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;toaster-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;test-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;bitbake-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
## fix up all manuals for:&lt;br /&gt;
### links&lt;br /&gt;
### &amp;lt;s&amp;gt;figures&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;headings&amp;lt;/s&amp;gt;&lt;br /&gt;
### notes&lt;br /&gt;
### code blocks&lt;br /&gt;
### global substitutions variables&lt;br /&gt;
## Use current docs CSS file to create proper theme&lt;br /&gt;
### &amp;lt;s&amp;gt;initial import&amp;lt;/s&amp;gt;&lt;br /&gt;
### tuning/optimization&lt;br /&gt;
## How to deal with each docbook &#039;first&#039; page (license and TOC) (In progress RP and ndec looking at that)&lt;br /&gt;
## &amp;lt;s&amp;gt;Implement glossary&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&amp;lt;/s&amp;gt;&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated. (In progress, Michael on it)&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# &amp;lt;s&amp;gt;Do we want to backport to dunfell LTS? (RP: Yes!)&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;RP: Can we create a single page manual for ease of searching (some users need this and I personally use it a lot that way, I&#039;m unlikely alone)&amp;lt;/s&amp;gt;&lt;br /&gt;
# RP: Glossary headings don&#039;t appear to be externally linkable?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76756</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76756"/>
		<updated>2020-09-11T07:40:21Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* intersphinx links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks. All discussions should be made on the [https://lists.yoctoproject.org/g/docs/ Yocto Project Docs mailing list].&lt;br /&gt;
&lt;br /&gt;
== Sphinx migration for Yocto Project Documentation ==&lt;br /&gt;
&lt;br /&gt;
The Sphinx migration is planned for 3.2 release, and the development is done in [https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/log/?h=sphinx this branch], which produces the following [https://docs.yoctoproject.org/ HTML documentation]. Until the branch gets merged , patches should be sent against this branch.&lt;br /&gt;
&lt;br /&gt;
A lot of work was already done to convert all the docbook files, but there is still some significant of work left to be done.&lt;br /&gt;
&lt;br /&gt;
To use the proof of concept, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
    pip3 install sphinx&lt;br /&gt;
    # to use the non default theme&lt;br /&gt;
    pip3 install sphinx_rtd_theme&lt;br /&gt;
&lt;br /&gt;
And then:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.yoctoproject.org/git/yocto-docs -b sphinx&lt;br /&gt;
    cd yocto-docs/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
The resulting HTML index page will be _build/html/index.html.&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept for Bitbake Documentation ==&lt;br /&gt;
&lt;br /&gt;
A similar branch exists for the Bitbake documentation as well. The branch is available on [https://git.openembedded.org/bitbake/log/?h=sphinx here], and produces the following [https://people.linaro.org/~nicolas.dechesne/bitbake-docs/html/ HTML documentation].&lt;br /&gt;
&lt;br /&gt;
To build the Bitbake documentation with Sphinx:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.openembedded.org/bitbake -b sphinx&lt;br /&gt;
    cd bitbake/doc&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
However, there are serious shortcomings with Sphinx built-in, for example they can be used/nested inside code-block sections. Another mechanism was implemented so that we can continue to use &#039;variables&#039; within our documentation. A Sphinx extension was implemented to support variable substitutions while &amp;quot;parsing&amp;quot; the .rst files. The pattern for variables substitutions is: &#039;&#039;{VAR}&#039;&#039;. The implementation of the extension can be found here:&lt;br /&gt;
https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/tree/documentation/sphinx/yocto-vars.py?h=sphinx. All variables are set in a file call poky.yaml, which was generated from poky.ent: https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/tree/documentation/poky.yaml?h=sphinx. For example, the following .rst content will produce the &#039;expected&#039; content:&lt;br /&gt;
&lt;br /&gt;
    .. code-block:: &lt;br /&gt;
        $ mkdir ~/poky-{DISTRO}&lt;br /&gt;
        or &lt;br /&gt;
        $ git clone {YOCTO_GIT_URL}/git/poky -b {DISTRO_NAME_NO_CAP}&lt;br /&gt;
&lt;br /&gt;
Variables can be nested, like it was the case for DocBook.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
=== Links and References ===&lt;br /&gt;
&lt;br /&gt;
Please read: https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html&lt;br /&gt;
&lt;br /&gt;
You can include links to other locations in the same document, to locations in other documents and to external websites.&lt;br /&gt;
&lt;br /&gt;
==== references ====&lt;br /&gt;
&lt;br /&gt;
We enable this extension by default: [https://www.sphinx-doc.org/en/master/usage/extensions/autosectionlabel.html. sphinx.ext.autosectionlabel].&lt;br /&gt;
&lt;br /&gt;
You can link from text to a heading in any other part of the document by using the :ref: command with the heading text as the parameter. For example, this text in another part of this document would link to this section:&lt;br /&gt;
    :ref:`Cross-References to Locations in the Same Document`&lt;br /&gt;
&lt;br /&gt;
We can use Custom link text or create custom anchor instead of using the section text:&lt;br /&gt;
    Please check this :ref:`section &amp;lt;Cross-References to Locations in the Same Document&amp;gt;`&lt;br /&gt;
&lt;br /&gt;
You can also create links/references in another .rst file, using the file name:&lt;br /&gt;
    :ref:`overview-manual/overview-manual-development-environment:yocto project source repositories`&lt;br /&gt;
&lt;br /&gt;
or with a custom link text:&lt;br /&gt;
    :ref:`here &amp;lt;overview-manual/overview-manual-development-environment:yocto project source repositories&amp;gt;`&lt;br /&gt;
&lt;br /&gt;
Here is a &#039;&#039;&#039;good tip&#039;&#039;&#039;: You can use the following command to get Sphinx to dump all the references that exist:&lt;br /&gt;
    python -msphinx.ext.intersphinx &amp;lt;path to build folder&amp;gt;/html/objects.inv&lt;br /&gt;
&lt;br /&gt;
In this dump, you will find all links and for each link you will get the default &amp;quot;Link Text&amp;quot; that Sphinx will use. If the default link text is not appropriate, you can provide a custom link text in the &#039;&#039;:ref:&#039;&#039; link. &lt;br /&gt;
&lt;br /&gt;
==== external links ====&lt;br /&gt;
We enable the &#039;[https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html#use-the-external-links-extension extlinks]&#039; extension by default, and it&#039;s configured with the following ``extlinks``:&lt;br /&gt;
&lt;br /&gt;
    &#039;yocto_home&#039;: (&#039;https://yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_wiki&#039;: (&#039;https://wiki.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_dl&#039;: (&#039;https://downloads.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_lists&#039;: (&#039;https://lists.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_bugs&#039;: (&#039;https://bugzilla.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_ab&#039;: (&#039;https://autobuilder.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_docs&#039;: (&#039;https://docs.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_git&#039;: (&#039;https://git.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;oe_home&#039;: (&#039;https://www.openembedded.org%s&#039;, None),&lt;br /&gt;
    &#039;oe_lists&#039;: (&#039;https://lists.openembedded.org%s&#039;, None),&lt;br /&gt;
&lt;br /&gt;
In the documentation rst files, we can then do:&lt;br /&gt;
&lt;br /&gt;
    Please check this :yocto_wiki:`wiki page &amp;lt;/Weekly_Status&amp;gt;`&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== intersphinx links ====&lt;br /&gt;
&lt;br /&gt;
We also enable the [https://www.sphinx-doc.org/en/master/usage/extensions/intersphinx.html intersphinx extension] so that we can cross reference content from the bitbake manual for example. When building the YP docs, Sphinx will first download the objects.inv file from the Bitbake manual, so that it knows all the existing references/links set in the bitbake documentation. Then references to the bitbake manual can be done like this:&lt;br /&gt;
&lt;br /&gt;
    See the &amp;quot;:ref:`-D &amp;lt;bitbake:bitbake-user-manual/bitbake-user-manual-intro:usage and syntax&amp;gt;`&amp;quot; option&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
    :term:`bitbake:BB_NUMBER_PARSE_THREADS`&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## &amp;lt;s&amp;gt;Update initial patches with yocto-docs recent changes &amp;lt;/s&amp;gt;&lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## &amp;lt;s&amp;gt;Automated conversion with pandoc&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;adt-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;brief-yoctoprojectqs&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;dev-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;kernel-dev&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;profile-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;sdk-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;toaster-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;test-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;bitbake-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
## fix up all manuals for:&lt;br /&gt;
### links&lt;br /&gt;
### &amp;lt;s&amp;gt;figures&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;headings&amp;lt;/s&amp;gt;&lt;br /&gt;
### notes&lt;br /&gt;
### code blocks&lt;br /&gt;
### global substitutions variables&lt;br /&gt;
## Use current docs CSS file to create proper theme&lt;br /&gt;
### &amp;lt;s&amp;gt;initial import&amp;lt;/s&amp;gt;&lt;br /&gt;
### tuning/optimization&lt;br /&gt;
## How to deal with each docbook &#039;first&#039; page (license and TOC) (In progress RP and ndec looking at that)&lt;br /&gt;
## &amp;lt;s&amp;gt;Implement glossary&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&amp;lt;/s&amp;gt;&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated. (In progress, Michael on it)&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# &amp;lt;s&amp;gt;Do we want to backport to dunfell LTS? (RP: Yes!)&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;RP: Can we create a single page manual for ease of searching (some users need this and I personally use it a lot that way, I&#039;m unlikely alone)&amp;lt;/s&amp;gt;&lt;br /&gt;
# RP: Glossary headings don&#039;t appear to be externally linkable?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76755</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76755"/>
		<updated>2020-09-11T07:40:07Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Links and References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks. All discussions should be made on the [https://lists.yoctoproject.org/g/docs/ Yocto Project Docs mailing list].&lt;br /&gt;
&lt;br /&gt;
== Sphinx migration for Yocto Project Documentation ==&lt;br /&gt;
&lt;br /&gt;
The Sphinx migration is planned for 3.2 release, and the development is done in [https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/log/?h=sphinx this branch], which produces the following [https://docs.yoctoproject.org/ HTML documentation]. Until the branch gets merged , patches should be sent against this branch.&lt;br /&gt;
&lt;br /&gt;
A lot of work was already done to convert all the docbook files, but there is still some significant of work left to be done.&lt;br /&gt;
&lt;br /&gt;
To use the proof of concept, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
    pip3 install sphinx&lt;br /&gt;
    # to use the non default theme&lt;br /&gt;
    pip3 install sphinx_rtd_theme&lt;br /&gt;
&lt;br /&gt;
And then:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.yoctoproject.org/git/yocto-docs -b sphinx&lt;br /&gt;
    cd yocto-docs/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
The resulting HTML index page will be _build/html/index.html.&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept for Bitbake Documentation ==&lt;br /&gt;
&lt;br /&gt;
A similar branch exists for the Bitbake documentation as well. The branch is available on [https://git.openembedded.org/bitbake/log/?h=sphinx here], and produces the following [https://people.linaro.org/~nicolas.dechesne/bitbake-docs/html/ HTML documentation].&lt;br /&gt;
&lt;br /&gt;
To build the Bitbake documentation with Sphinx:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.openembedded.org/bitbake -b sphinx&lt;br /&gt;
    cd bitbake/doc&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
However, there are serious shortcomings with Sphinx built-in, for example they can be used/nested inside code-block sections. Another mechanism was implemented so that we can continue to use &#039;variables&#039; within our documentation. A Sphinx extension was implemented to support variable substitutions while &amp;quot;parsing&amp;quot; the .rst files. The pattern for variables substitutions is: &#039;&#039;{VAR}&#039;&#039;. The implementation of the extension can be found here:&lt;br /&gt;
https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/tree/documentation/sphinx/yocto-vars.py?h=sphinx. All variables are set in a file call poky.yaml, which was generated from poky.ent: https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/tree/documentation/poky.yaml?h=sphinx. For example, the following .rst content will produce the &#039;expected&#039; content:&lt;br /&gt;
&lt;br /&gt;
    .. code-block:: &lt;br /&gt;
        $ mkdir ~/poky-{DISTRO}&lt;br /&gt;
        or &lt;br /&gt;
        $ git clone {YOCTO_GIT_URL}/git/poky -b {DISTRO_NAME_NO_CAP}&lt;br /&gt;
&lt;br /&gt;
Variables can be nested, like it was the case for DocBook.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
=== Links and References ===&lt;br /&gt;
&lt;br /&gt;
Please read: https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html&lt;br /&gt;
&lt;br /&gt;
You can include links to other locations in the same document, to locations in other documents and to external websites.&lt;br /&gt;
&lt;br /&gt;
==== references ====&lt;br /&gt;
&lt;br /&gt;
We enable this extension by default: [https://www.sphinx-doc.org/en/master/usage/extensions/autosectionlabel.html. sphinx.ext.autosectionlabel].&lt;br /&gt;
&lt;br /&gt;
You can link from text to a heading in any other part of the document by using the :ref: command with the heading text as the parameter. For example, this text in another part of this document would link to this section:&lt;br /&gt;
    :ref:`Cross-References to Locations in the Same Document`&lt;br /&gt;
&lt;br /&gt;
We can use Custom link text or create custom anchor instead of using the section text:&lt;br /&gt;
    Please check this :ref:`section &amp;lt;Cross-References to Locations in the Same Document&amp;gt;`&lt;br /&gt;
&lt;br /&gt;
You can also create links/references in another .rst file, using the file name:&lt;br /&gt;
    :ref:`overview-manual/overview-manual-development-environment:yocto project source repositories`&lt;br /&gt;
&lt;br /&gt;
or with a custom link text:&lt;br /&gt;
    :ref:`here &amp;lt;overview-manual/overview-manual-development-environment:yocto project source repositories&amp;gt;`&lt;br /&gt;
&lt;br /&gt;
Here is a &#039;&#039;&#039;good tip&#039;&#039;&#039;: You can use the following command to get Sphinx to dump all the references that exist:&lt;br /&gt;
    python -msphinx.ext.intersphinx &amp;lt;path to build folder&amp;gt;/html/objects.inv&lt;br /&gt;
&lt;br /&gt;
In this dump, you will find all links and for each link you will get the default &amp;quot;Link Text&amp;quot; that Sphinx will use. If the default link text is not appropriate, you can provide a custom link text in the &#039;&#039;:ref:&#039;&#039; link. &lt;br /&gt;
&lt;br /&gt;
==== external links ====&lt;br /&gt;
We enable the &#039;[https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html#use-the-external-links-extension extlinks]&#039; extension by default, and it&#039;s configured with the following ``extlinks``:&lt;br /&gt;
&lt;br /&gt;
    &#039;yocto_home&#039;: (&#039;https://yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_wiki&#039;: (&#039;https://wiki.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_dl&#039;: (&#039;https://downloads.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_lists&#039;: (&#039;https://lists.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_bugs&#039;: (&#039;https://bugzilla.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_ab&#039;: (&#039;https://autobuilder.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_docs&#039;: (&#039;https://docs.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;yocto_git&#039;: (&#039;https://git.yoctoproject.org%s&#039;, None),&lt;br /&gt;
    &#039;oe_home&#039;: (&#039;https://www.openembedded.org%s&#039;, None),&lt;br /&gt;
    &#039;oe_lists&#039;: (&#039;https://lists.openembedded.org%s&#039;, None),&lt;br /&gt;
&lt;br /&gt;
In the documentation rst files, we can then do:&lt;br /&gt;
&lt;br /&gt;
    Please check this :yocto_wiki:`wiki page &amp;lt;/Weekly_Status&amp;gt;`&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== intersphinx links ====&lt;br /&gt;
&lt;br /&gt;
We also enable the [https://www.sphinx-doc.org/en/master/usage/extensions/intersphinx.html intersphinx extension] so that we can cross reference content from the bitbake manual for example. When building the YP docs, Sphinx will first download the objects.inv file from the Bitbake manual, so that it knows all the existing references/links set in the bitbake documentation. Then references to the bitbake manual can be done like this:&lt;br /&gt;
&lt;br /&gt;
    See the &amp;quot;:ref:`-D &amp;lt;bitbake:bitbake-user-manual/bitbake-user-manual-intro:usage and syntax&amp;gt;`&amp;quot; option&lt;br /&gt;
&lt;br /&gt;
    or&lt;br /&gt;
&lt;br /&gt;
    :term:`bitbake:BB_NUMBER_PARSE_THREADS`&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## &amp;lt;s&amp;gt;Update initial patches with yocto-docs recent changes &amp;lt;/s&amp;gt;&lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## &amp;lt;s&amp;gt;Automated conversion with pandoc&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;adt-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;brief-yoctoprojectqs&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;dev-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;kernel-dev&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;profile-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;sdk-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;toaster-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;test-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;bitbake-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
## fix up all manuals for:&lt;br /&gt;
### links&lt;br /&gt;
### &amp;lt;s&amp;gt;figures&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;headings&amp;lt;/s&amp;gt;&lt;br /&gt;
### notes&lt;br /&gt;
### code blocks&lt;br /&gt;
### global substitutions variables&lt;br /&gt;
## Use current docs CSS file to create proper theme&lt;br /&gt;
### &amp;lt;s&amp;gt;initial import&amp;lt;/s&amp;gt;&lt;br /&gt;
### tuning/optimization&lt;br /&gt;
## How to deal with each docbook &#039;first&#039; page (license and TOC) (In progress RP and ndec looking at that)&lt;br /&gt;
## &amp;lt;s&amp;gt;Implement glossary&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&amp;lt;/s&amp;gt;&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated. (In progress, Michael on it)&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# &amp;lt;s&amp;gt;Do we want to backport to dunfell LTS? (RP: Yes!)&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;RP: Can we create a single page manual for ease of searching (some users need this and I personally use it a lot that way, I&#039;m unlikely alone)&amp;lt;/s&amp;gt;&lt;br /&gt;
# RP: Glossary headings don&#039;t appear to be externally linkable?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76754</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76754"/>
		<updated>2020-09-11T07:24:02Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Global substitutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks. All discussions should be made on the [https://lists.yoctoproject.org/g/docs/ Yocto Project Docs mailing list].&lt;br /&gt;
&lt;br /&gt;
== Sphinx migration for Yocto Project Documentation ==&lt;br /&gt;
&lt;br /&gt;
The Sphinx migration is planned for 3.2 release, and the development is done in [https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/log/?h=sphinx this branch], which produces the following [https://docs.yoctoproject.org/ HTML documentation]. Until the branch gets merged , patches should be sent against this branch.&lt;br /&gt;
&lt;br /&gt;
A lot of work was already done to convert all the docbook files, but there is still some significant of work left to be done.&lt;br /&gt;
&lt;br /&gt;
To use the proof of concept, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
    pip3 install sphinx&lt;br /&gt;
    # to use the non default theme&lt;br /&gt;
    pip3 install sphinx_rtd_theme&lt;br /&gt;
&lt;br /&gt;
And then:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.yoctoproject.org/git/yocto-docs -b sphinx&lt;br /&gt;
    cd yocto-docs/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
The resulting HTML index page will be _build/html/index.html.&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept for Bitbake Documentation ==&lt;br /&gt;
&lt;br /&gt;
A similar branch exists for the Bitbake documentation as well. The branch is available on [https://git.openembedded.org/bitbake/log/?h=sphinx here], and produces the following [https://people.linaro.org/~nicolas.dechesne/bitbake-docs/html/ HTML documentation].&lt;br /&gt;
&lt;br /&gt;
To build the Bitbake documentation with Sphinx:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.openembedded.org/bitbake -b sphinx&lt;br /&gt;
    cd bitbake/doc&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
However, there are serious shortcomings with Sphinx built-in, for example they can be used/nested inside code-block sections. Another mechanism was implemented so that we can continue to use &#039;variables&#039; within our documentation. A Sphinx extension was implemented to support variable substitutions while &amp;quot;parsing&amp;quot; the .rst files. The pattern for variables substitutions is: &#039;&#039;{VAR}&#039;&#039;. The implementation of the extension can be found here:&lt;br /&gt;
https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/tree/documentation/sphinx/yocto-vars.py?h=sphinx. All variables are set in a file call poky.yaml, which was generated from poky.ent: https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/tree/documentation/poky.yaml?h=sphinx. For example, the following .rst content will produce the &#039;expected&#039; content:&lt;br /&gt;
&lt;br /&gt;
    .. code-block:: &lt;br /&gt;
        $ mkdir ~/poky-{DISTRO}&lt;br /&gt;
        or &lt;br /&gt;
        $ git clone {YOCTO_GIT_URL}/git/poky -b {DISTRO_NAME_NO_CAP}&lt;br /&gt;
&lt;br /&gt;
Variables can be nested, like it was the case for DocBook.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
=== Links and References ===&lt;br /&gt;
From: https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html&lt;br /&gt;
&lt;br /&gt;
You can include links to other locations in the same document, to locations in other documents and to external websites.&lt;br /&gt;
&lt;br /&gt;
You can link from text to a heading in any other part of the document by using the :ref: command with the heading text as the parameter. For example, this text in another part of this document would link to this section:&lt;br /&gt;
    :ref:`Cross-References to Locations in the Same Document`&lt;br /&gt;
&lt;br /&gt;
For that to work, we need sphinx.ext.autosectionlabel to be enabled in conf.py.&lt;br /&gt;
&lt;br /&gt;
We can use Custom link text or create custom anchor instead of using the section text.&lt;br /&gt;
&lt;br /&gt;
TODO: study https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html#use-the-external-links-extension, looks like something we could use..&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## &amp;lt;s&amp;gt;Update initial patches with yocto-docs recent changes &amp;lt;/s&amp;gt;&lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## &amp;lt;s&amp;gt;Automated conversion with pandoc&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;adt-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;brief-yoctoprojectqs&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;dev-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;kernel-dev&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;profile-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;sdk-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;toaster-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;test-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;bitbake-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
## fix up all manuals for:&lt;br /&gt;
### links&lt;br /&gt;
### &amp;lt;s&amp;gt;figures&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;headings&amp;lt;/s&amp;gt;&lt;br /&gt;
### notes&lt;br /&gt;
### code blocks&lt;br /&gt;
### global substitutions variables&lt;br /&gt;
## Use current docs CSS file to create proper theme&lt;br /&gt;
### &amp;lt;s&amp;gt;initial import&amp;lt;/s&amp;gt;&lt;br /&gt;
### tuning/optimization&lt;br /&gt;
## How to deal with each docbook &#039;first&#039; page (license and TOC) (In progress RP and ndec looking at that)&lt;br /&gt;
## &amp;lt;s&amp;gt;Implement glossary&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&amp;lt;/s&amp;gt;&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated. (In progress, Michael on it)&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# &amp;lt;s&amp;gt;Do we want to backport to dunfell LTS? (RP: Yes!)&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;RP: Can we create a single page manual for ease of searching (some users need this and I personally use it a lot that way, I&#039;m unlikely alone)&amp;lt;/s&amp;gt;&lt;br /&gt;
# RP: Glossary headings don&#039;t appear to be externally linkable?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76740</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76740"/>
		<updated>2020-09-10T22:00:58Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Sphinx proof of concept for Bitbake Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks. All discussions should be made on the [https://lists.yoctoproject.org/g/docs/ Yocto Project Docs mailing list].&lt;br /&gt;
&lt;br /&gt;
== Sphinx migration for Yocto Project Documentation ==&lt;br /&gt;
&lt;br /&gt;
The Sphinx migration is planned for 3.2 release, and the development is done in [https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/log/?h=sphinx this branch], which produces the following [https://docs.yoctoproject.org/ HTML documentation]. Until the branch gets merged , patches should be sent against this branch.&lt;br /&gt;
&lt;br /&gt;
A lot of work was already done to convert all the docbook files, but there is still some significant of work left to be done.&lt;br /&gt;
&lt;br /&gt;
To use the proof of concept, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
    pip3 install sphinx&lt;br /&gt;
    # to use the non default theme&lt;br /&gt;
    pip3 install sphinx_rtd_theme&lt;br /&gt;
&lt;br /&gt;
And then:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.yoctoproject.org/git/yocto-docs -b sphinx&lt;br /&gt;
    cd yocto-docs/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
The resulting HTML index page will be _build/html/index.html.&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept for Bitbake Documentation ==&lt;br /&gt;
&lt;br /&gt;
A similar branch exists for the Bitbake documentation as well. The branch is available on [https://git.openembedded.org/bitbake/log/?h=sphinx here], and produces the following [https://people.linaro.org/~nicolas.dechesne/bitbake-docs/html/ HTML documentation].&lt;br /&gt;
&lt;br /&gt;
To build the Bitbake documentation with Sphinx:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.openembedded.org/bitbake -b sphinx&lt;br /&gt;
    cd bitbake/doc&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
=== Links and References ===&lt;br /&gt;
From: https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html&lt;br /&gt;
&lt;br /&gt;
You can include links to other locations in the same document, to locations in other documents and to external websites.&lt;br /&gt;
&lt;br /&gt;
You can link from text to a heading in any other part of the document by using the :ref: command with the heading text as the parameter. For example, this text in another part of this document would link to this section:&lt;br /&gt;
    :ref:`Cross-References to Locations in the Same Document`&lt;br /&gt;
&lt;br /&gt;
For that to work, we need sphinx.ext.autosectionlabel to be enabled in conf.py.&lt;br /&gt;
&lt;br /&gt;
We can use Custom link text or create custom anchor instead of using the section text.&lt;br /&gt;
&lt;br /&gt;
TODO: study https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html#use-the-external-links-extension, looks like something we could use..&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## &amp;lt;s&amp;gt;Update initial patches with yocto-docs recent changes &amp;lt;/s&amp;gt;&lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## &amp;lt;s&amp;gt;Automated conversion with pandoc&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;adt-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;brief-yoctoprojectqs&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;dev-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;kernel-dev&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;profile-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;sdk-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;toaster-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;test-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;bitbake-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
## fix up all manuals for:&lt;br /&gt;
### links&lt;br /&gt;
### &amp;lt;s&amp;gt;figures&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;headings&amp;lt;/s&amp;gt;&lt;br /&gt;
### notes&lt;br /&gt;
### code blocks&lt;br /&gt;
### global substitutions variables&lt;br /&gt;
## Use current docs CSS file to create proper theme&lt;br /&gt;
### &amp;lt;s&amp;gt;initial import&amp;lt;/s&amp;gt;&lt;br /&gt;
### tuning/optimization&lt;br /&gt;
## How to deal with each docbook &#039;first&#039; page (license and TOC) (In progress RP and ndec looking at that)&lt;br /&gt;
## &amp;lt;s&amp;gt;Implement glossary&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&amp;lt;/s&amp;gt;&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated. (In progress, Michael on it)&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# &amp;lt;s&amp;gt;Do we want to backport to dunfell LTS? (RP: Yes!)&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;RP: Can we create a single page manual for ease of searching (some users need this and I personally use it a lot that way, I&#039;m unlikely alone)&amp;lt;/s&amp;gt;&lt;br /&gt;
# RP: Glossary headings don&#039;t appear to be externally linkable?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76237</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76237"/>
		<updated>2020-09-05T00:00:19Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks. All discussions should be made on the [https://lists.yoctoproject.org/g/docs/ Yocto Project Docs mailing list].&lt;br /&gt;
&lt;br /&gt;
== Sphinx migration for Yocto Project Documentation ==&lt;br /&gt;
&lt;br /&gt;
The Sphinx migration is planned for 3.2 release, and the development is done in [https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/log/?h=sphinx this branch], which produces the following [https://docs.yoctoproject.org/ HTML documentation]. Until the branch gets merged , patches should be sent against this branch.&lt;br /&gt;
&lt;br /&gt;
A lot of work was already done to convert all the docbook files, but there is still some significant of work left to be done.&lt;br /&gt;
&lt;br /&gt;
To use the proof of concept, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
    pip3 install sphinx&lt;br /&gt;
    # to use the non default theme&lt;br /&gt;
    pip3 install sphinx_rtd_theme&lt;br /&gt;
&lt;br /&gt;
And then:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.yoctoproject.org/git/yocto-docs -b sphinx&lt;br /&gt;
    cd yocto-docs/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
The resulting HTML index page will be _build/html/index.html.&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept for Bitbake Documentation ==&lt;br /&gt;
&lt;br /&gt;
A similar branch exists for the Bitbake documentation as well. The branch is available on [https://git.openembedded.org/bitbake/log/?h=sphinx here], and produces the following [https://people.linaro.org/~nicolas.dechesne/bitbake-docs/html/ HTML documentation].&lt;br /&gt;
&lt;br /&gt;
To build the Bitbake documentation with Sphinx:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.openembedded.org/bitbake -b sphinx&lt;br /&gt;
    cd bitbake/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
=== Links and References ===&lt;br /&gt;
From: https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html&lt;br /&gt;
&lt;br /&gt;
You can include links to other locations in the same document, to locations in other documents and to external websites.&lt;br /&gt;
&lt;br /&gt;
You can link from text to a heading in any other part of the document by using the :ref: command with the heading text as the parameter. For example, this text in another part of this document would link to this section:&lt;br /&gt;
    :ref:`Cross-References to Locations in the Same Document`&lt;br /&gt;
&lt;br /&gt;
For that to work, we need sphinx.ext.autosectionlabel to be enabled in conf.py.&lt;br /&gt;
&lt;br /&gt;
We can use Custom link text or create custom anchor instead of using the section text.&lt;br /&gt;
&lt;br /&gt;
TODO: study https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html#use-the-external-links-extension, looks like something we could use..&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## &amp;lt;s&amp;gt;Update initial patches with yocto-docs recent changes &amp;lt;/s&amp;gt;&lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## &amp;lt;s&amp;gt;Automated conversion with pandoc&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;adt-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;brief-yoctoprojectqs&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;dev-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;kernel-dev&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;profile-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;sdk-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;toaster-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;test-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;bitbake-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
## fix up all manuals for:&lt;br /&gt;
### links&lt;br /&gt;
### &amp;lt;s&amp;gt;figures&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;headings&amp;lt;/s&amp;gt;&lt;br /&gt;
### notes&lt;br /&gt;
### code blocks&lt;br /&gt;
### global substitutions variables&lt;br /&gt;
## Use current docs CSS file to create proper theme&lt;br /&gt;
### &amp;lt;s&amp;gt;initial import&amp;lt;/s&amp;gt;&lt;br /&gt;
### tuning/optimization&lt;br /&gt;
## How to deal with each docbook &#039;first&#039; page (license and TOC) (In progress RP and ndec looking at that)&lt;br /&gt;
## &amp;lt;s&amp;gt;Implement glossary&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&amp;lt;/s&amp;gt;&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated. (In progress, Michael on it)&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# &amp;lt;s&amp;gt;Do we want to backport to dunfell LTS? (RP: Yes!)&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;RP: Can we create a single page manual for ease of searching (some users need this and I personally use it a lot that way, I&#039;m unlikely alone)&amp;lt;/s&amp;gt;&lt;br /&gt;
# RP: Glossary headings don&#039;t appear to be externally linkable?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76236</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76236"/>
		<updated>2020-09-04T23:59:40Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks. All discussions should be made on the [https://lists.yoctoproject.org/g/docs/ Yocto Project Docs mailing list].&lt;br /&gt;
&lt;br /&gt;
== Sphinx migration for Yocto Project Documentation ==&lt;br /&gt;
&lt;br /&gt;
The Sphinx migration is planned for 3.2 release, and the development is done in [https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/log/?h=sphinx this branch], which produces the following [https://docs.yoctoproject.org/ HTML documentation]. Until the branch gets merged , patches should be sent against this branch.&lt;br /&gt;
&lt;br /&gt;
A lot of work was already done to convert all the docbook files, but there is still some significant of work left to be done.&lt;br /&gt;
&lt;br /&gt;
To use the proof of concept, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
    pip3 install sphinx&lt;br /&gt;
    # to use the non default theme&lt;br /&gt;
    pip3 install sphinx_rtd_theme&lt;br /&gt;
&lt;br /&gt;
And then:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.yoctoproject.org/git/yocto-docs -b sphinx&lt;br /&gt;
    cd yocto-docs/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
The resulting HTML index page will be _build/html/index.html.&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept for Bitbake Documentation ==&lt;br /&gt;
&lt;br /&gt;
A similar branch exists for the Bitbake documentation as well. The branch is available on [https://git.openembedded.org/bitbake/log/?h=sphinx here], and produces the following [https://people.linaro.org/~nicolas.dechesne/bitbake-docs/html/ HTML documentation].&lt;br /&gt;
&lt;br /&gt;
To build the Bitbake documentation with Sphinx:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.openembedded.org/bitbake -b sphinx&lt;br /&gt;
    cd bitbake/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
=== Links and References ===&lt;br /&gt;
From: https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html&lt;br /&gt;
&lt;br /&gt;
You can include links to other locations in the same document, to locations in other documents and to external websites.&lt;br /&gt;
&lt;br /&gt;
You can link from text to a heading in any other part of the document by using the :ref: command with the heading text as the parameter. For example, this text in another part of this document would link to this section:&lt;br /&gt;
    :ref:`Cross-References to Locations in the Same Document`&lt;br /&gt;
&lt;br /&gt;
For that to work, we need sphinx.ext.autosectionlabel to be enabled in conf.py.&lt;br /&gt;
&lt;br /&gt;
We can use Custom link text or create custom anchor instead of using the section text.&lt;br /&gt;
&lt;br /&gt;
TODO: study https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html#use-the-external-links-extension, looks like something we could use..&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## &amp;lt;s&amp;gt;Update initial patches with yocto-docs recent changes &amp;lt;/s&amp;gt;&lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## &amp;lt;s&amp;gt;Automated conversion with pandoc&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;adt-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;brief-yoctoprojectqs&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;dev-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;kernel-dev&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;profile-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;sdk-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;toaster-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;test-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;bitbake-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
## fix up all manuals for:&lt;br /&gt;
### links&lt;br /&gt;
### &amp;lt;s&amp;gt;figures&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;headings&amp;lt;/s&amp;gt;&lt;br /&gt;
### notes&lt;br /&gt;
### code blocks&lt;br /&gt;
### global substitutions variables&lt;br /&gt;
## Use current docs CSS file to create proper theme&lt;br /&gt;
### &amp;lt;s&amp;gt;initial import&amp;lt;/s&amp;gt;&lt;br /&gt;
### tuning/optimization&lt;br /&gt;
## How to deal with each docbook &#039;first&#039; page (license and TOC) (In progress RP and ndec looking at that)&lt;br /&gt;
## &amp;lt;s&amp;gt;Implement glossary&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s.Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&amp;lt;/s&amp;gt;&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated. (In progress, Michael on it)&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# &amp;lt;s.Do we want to backport to dunfell LTS? (RP: Yes!)&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;RP: Can we create a single page manual for ease of searching (some users need this and I personally use it a lot that way, I&#039;m unlikely alone)&amp;lt;/s&amp;gt;&lt;br /&gt;
# RP: Glossary headings don&#039;t appear to be externally linkable?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76235</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76235"/>
		<updated>2020-09-04T23:58:53Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks. All discussions should be made on the [https://lists.yoctoproject.org/g/docs/ Yocto Project Docs mailing list].&lt;br /&gt;
&lt;br /&gt;
== Sphinx migration for Yocto Project Documentation ==&lt;br /&gt;
&lt;br /&gt;
The Sphinx migration is planned for 3.2 release, and the development is done in [https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/log/?h=sphinx this branch], which produces the following [https://docs.yoctoproject.org/ HTML documentation]. Until the branch gets merged , patches should be sent against this branch.&lt;br /&gt;
&lt;br /&gt;
A lot of work was already done to convert all the docbook files, but there is still some significant of work left to be done.&lt;br /&gt;
&lt;br /&gt;
To use the proof of concept, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
    pip3 install sphinx&lt;br /&gt;
    # to use the non default theme&lt;br /&gt;
    pip3 install sphinx_rtd_theme&lt;br /&gt;
&lt;br /&gt;
And then:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.yoctoproject.org/git/yocto-docs -b sphinx&lt;br /&gt;
    cd yocto-docs/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
The resulting HTML index page will be _build/html/index.html.&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept for Bitbake Documentation ==&lt;br /&gt;
&lt;br /&gt;
A similar branch exists for the Bitbake documentation as well. The branch is available on [https://git.openembedded.org/bitbake/log/?h=sphinx here], and produces the following [https://people.linaro.org/~nicolas.dechesne/bitbake-docs/html/ HTML documentation].&lt;br /&gt;
&lt;br /&gt;
To build the Bitbake documentation with Sphinx:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.openembedded.org/bitbake -b sphinx&lt;br /&gt;
    cd bitbake/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
=== Links and References ===&lt;br /&gt;
From: https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html&lt;br /&gt;
&lt;br /&gt;
You can include links to other locations in the same document, to locations in other documents and to external websites.&lt;br /&gt;
&lt;br /&gt;
You can link from text to a heading in any other part of the document by using the :ref: command with the heading text as the parameter. For example, this text in another part of this document would link to this section:&lt;br /&gt;
    :ref:`Cross-References to Locations in the Same Document`&lt;br /&gt;
&lt;br /&gt;
For that to work, we need sphinx.ext.autosectionlabel to be enabled in conf.py.&lt;br /&gt;
&lt;br /&gt;
We can use Custom link text or create custom anchor instead of using the section text.&lt;br /&gt;
&lt;br /&gt;
TODO: study https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html#use-the-external-links-extension, looks like something we could use..&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## &amp;lt;s&amp;gt;Update initial patches with yocto-docs recent changes &amp;lt;/s&amp;gt;&lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## &amp;lt;s&amp;gt;Automated conversion with pandoc&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;adt-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;brief-yoctoprojectqs&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;dev-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;kernel-dev&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;profile-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;sdk-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;toaster-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;test-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;bitbake-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
## fix up all manuals for:&lt;br /&gt;
### links&lt;br /&gt;
### &amp;lt;s&amp;gt;figures&amp;lt;/s?&lt;br /&gt;
### &amp;lt;s&amp;gt;headings&amp;lt;/s&amp;gt;&lt;br /&gt;
### notes&lt;br /&gt;
### global substitutions variables&lt;br /&gt;
## Use current docs CSS file to create proper theme&lt;br /&gt;
### &amp;lt;s&amp;gt;initial import&amp;lt;/s&amp;gt;&lt;br /&gt;
### tuning/optimization&lt;br /&gt;
## How to deal with each docbook &#039;first&#039; page (license and TOC) (In progress RP and ndec looking at that)&lt;br /&gt;
## &amp;lt;s&amp;gt;Implement glossary&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s.Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&amp;lt;/s&amp;gt;&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated. (In progress, Michael on it)&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# &amp;lt;s.Do we want to backport to dunfell LTS? (RP: Yes!)&amp;lt;/s&amp;gt;&lt;br /&gt;
# &amp;lt;s&amp;gt;RP: Can we create a single page manual for ease of searching (some users need this and I personally use it a lot that way, I&#039;m unlikely alone)&amp;lt;/s&amp;gt;&lt;br /&gt;
# RP: Glossary headings don&#039;t appear to be externally linkable?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76038</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76038"/>
		<updated>2020-07-01T23:16:35Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Tasks list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks. All discussions should be made on the [https://lists.yoctoproject.org/g/docs/ Yocto Project Docs mailing list].&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept for Yocto Project Documentation ==&lt;br /&gt;
&lt;br /&gt;
An experimental branch with some initial Sphinx support is available on [https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/log/?h=sphinx here], which produces the following [https://people.linaro.org/~nicolas.dechesne/yp-docs/html HTML documentation].&lt;br /&gt;
&lt;br /&gt;
The support is very minimal, and only 3 documents were &#039;&#039;converted&#039;&#039;, but the idea was to share an initial look and feel about both the output and the changes to the documentation source code. There is a large amount of work to accomplish if we want to convert the whole documentation!&lt;br /&gt;
&lt;br /&gt;
To use the proof of concept, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
    pip3 install sphinx&lt;br /&gt;
    # to use the non default theme&lt;br /&gt;
    pip3 install sphinx_rtd_theme&lt;br /&gt;
&lt;br /&gt;
And then:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.yoctoproject.org/git/yocto-docs -b sphinx&lt;br /&gt;
    cd yocto-docs/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
The resulting HTML index page will be _build/html/index.html.&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept for Bitbake Documentation ==&lt;br /&gt;
&lt;br /&gt;
A similar experimental branch exists for the Bitbake documentation as well. The branch is available on [https://git.openembedded.org/bitbake/log/?h=sphinx here], and produces the following [https://people.linaro.org/~nicolas.dechesne/bitbake-docs/html/ HTML documentation].&lt;br /&gt;
&lt;br /&gt;
To build the Bitbake documentation with Sphinx:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.openembedded.org/bitbake -b sphinx&lt;br /&gt;
    cd bitbake/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
=== Links and References ===&lt;br /&gt;
From: https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html&lt;br /&gt;
&lt;br /&gt;
You can include links to other locations in the same document, to locations in other documents and to external websites.&lt;br /&gt;
&lt;br /&gt;
You can link from text to a heading in any other part of the document by using the :ref: command with the heading text as the parameter. For example, this text in another part of this document would link to this section:&lt;br /&gt;
    :ref:`Cross-References to Locations in the Same Document`&lt;br /&gt;
&lt;br /&gt;
For that to work, we need sphinx.ext.autosectionlabel to be enabled in conf.py.&lt;br /&gt;
&lt;br /&gt;
We can use Custom link text or create custom anchor instead of using the section text.&lt;br /&gt;
&lt;br /&gt;
TODO: study https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html#use-the-external-links-extension, looks like something we could use..&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## &amp;lt;s&amp;gt;Update initial patches with yocto-docs recent changes &amp;lt;/s&amp;gt;&lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## Automated conversion with pandoc&lt;br /&gt;
### &amp;lt;s&amp;gt;adt-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;brief-yoctoprojectqs&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;dev-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;kernel-dev&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;profile-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;sdk-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;toaster-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;test-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;bitbake-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
## fix up for links, figures, headings, notes&lt;br /&gt;
### adt-manual&lt;br /&gt;
### brief-yoctoprojectqs&lt;br /&gt;
### bsp-guide&lt;br /&gt;
### dev-manual&lt;br /&gt;
### kernel-dev&lt;br /&gt;
### overview-manual&lt;br /&gt;
### profile-manual&lt;br /&gt;
### ref-manual&lt;br /&gt;
### sdk-manual&lt;br /&gt;
### toaster-manual&lt;br /&gt;
### test-manual&lt;br /&gt;
### bitbake-manual&lt;br /&gt;
## What to do for *.css and *.xsl Docbook files&lt;br /&gt;
## How to deal with each docbook &#039;first&#039; page (license and TOC)&lt;br /&gt;
## Implement global substitutions variables&lt;br /&gt;
## Implement glossary&lt;br /&gt;
# Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&lt;br /&gt;
# Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated.&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# Do we want to backport to dunfell LTS? (RP: Yes!)&lt;br /&gt;
# RP: Can we create a single page manual for ease of searching (some users need this and I personally use it a lot that way, I&#039;m unlikely alone)?&lt;br /&gt;
# RP: Glossary headings don&#039;t appear to be externally linkable?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76037</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76037"/>
		<updated>2020-07-01T23:16:10Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Sphinx proof of concept */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks. All discussions should be made on the [https://lists.yoctoproject.org/g/docs/ Yocto Project Docs mailing list].&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept for Yocto Project Documentation ==&lt;br /&gt;
&lt;br /&gt;
An experimental branch with some initial Sphinx support is available on [https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/log/?h=sphinx here], which produces the following [https://people.linaro.org/~nicolas.dechesne/yp-docs/html HTML documentation].&lt;br /&gt;
&lt;br /&gt;
The support is very minimal, and only 3 documents were &#039;&#039;converted&#039;&#039;, but the idea was to share an initial look and feel about both the output and the changes to the documentation source code. There is a large amount of work to accomplish if we want to convert the whole documentation!&lt;br /&gt;
&lt;br /&gt;
To use the proof of concept, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
    pip3 install sphinx&lt;br /&gt;
    # to use the non default theme&lt;br /&gt;
    pip3 install sphinx_rtd_theme&lt;br /&gt;
&lt;br /&gt;
And then:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.yoctoproject.org/git/yocto-docs -b sphinx&lt;br /&gt;
    cd yocto-docs/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
The resulting HTML index page will be _build/html/index.html.&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept for Bitbake Documentation ==&lt;br /&gt;
&lt;br /&gt;
A similar experimental branch exists for the Bitbake documentation as well. The branch is available on [https://git.openembedded.org/bitbake/log/?h=sphinx here], and produces the following [https://people.linaro.org/~nicolas.dechesne/bitbake-docs/html/ HTML documentation].&lt;br /&gt;
&lt;br /&gt;
To build the Bitbake documentation with Sphinx:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.openembedded.org/bitbake -b sphinx&lt;br /&gt;
    cd bitbake/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
=== Links and References ===&lt;br /&gt;
From: https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html&lt;br /&gt;
&lt;br /&gt;
You can include links to other locations in the same document, to locations in other documents and to external websites.&lt;br /&gt;
&lt;br /&gt;
You can link from text to a heading in any other part of the document by using the :ref: command with the heading text as the parameter. For example, this text in another part of this document would link to this section:&lt;br /&gt;
    :ref:`Cross-References to Locations in the Same Document`&lt;br /&gt;
&lt;br /&gt;
For that to work, we need sphinx.ext.autosectionlabel to be enabled in conf.py.&lt;br /&gt;
&lt;br /&gt;
We can use Custom link text or create custom anchor instead of using the section text.&lt;br /&gt;
&lt;br /&gt;
TODO: study https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html#use-the-external-links-extension, looks like something we could use..&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## &amp;lt;s&amp;gt;Update initial patches with yocto-docs recent changes &amp;lt;/s&amp;gt;&lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## Automated conversion with pandoc&lt;br /&gt;
### &amp;lt;s&amp;gt;adt-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;brief-yoctoprojectqs&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;dev-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;kernel-dev&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;profile-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;sdk-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;toaster-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;test-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### bitbake-manual&lt;br /&gt;
## fix up for links, figures, headings, notes&lt;br /&gt;
### adt-manual&lt;br /&gt;
### brief-yoctoprojectqs&lt;br /&gt;
### bsp-guide&lt;br /&gt;
### dev-manual&lt;br /&gt;
### kernel-dev&lt;br /&gt;
### overview-manual&lt;br /&gt;
### profile-manual&lt;br /&gt;
### ref-manual&lt;br /&gt;
### sdk-manual&lt;br /&gt;
### toaster-manual&lt;br /&gt;
### test-manual&lt;br /&gt;
### bitbake-manual&lt;br /&gt;
## What to do for *.css and *.xsl Docbook files&lt;br /&gt;
## How to deal with each docbook &#039;first&#039; page (license and TOC)&lt;br /&gt;
## Implement global substitutions variables&lt;br /&gt;
## Implement glossary&lt;br /&gt;
# Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&lt;br /&gt;
# Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated.&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# Do we want to backport to dunfell LTS? (RP: Yes!)&lt;br /&gt;
# RP: Can we create a single page manual for ease of searching (some users need this and I personally use it a lot that way, I&#039;m unlikely alone)?&lt;br /&gt;
# RP: Glossary headings don&#039;t appear to be externally linkable?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76019</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76019"/>
		<updated>2020-06-30T18:28:00Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Tasks list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks. All discussions should be made on the [https://lists.yoctoproject.org/g/docs/ Yocto Project Docs mailing list].&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept ==&lt;br /&gt;
&lt;br /&gt;
An experimental branch with some initial Sphinx support is available on [https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/log/?h=sphinx here], which produces the following [https://people.linaro.org/~nicolas.dechesne/yp-docs/html HTML documentation].&lt;br /&gt;
&lt;br /&gt;
The support is very minimal, and only 3 documents were &#039;&#039;converted&#039;&#039;, but the idea was to share an initial look and feel about both the output and the changes to the documentation source code. There is a large amount of work to accomplish if we want to convert the whole documentation!&lt;br /&gt;
&lt;br /&gt;
To use the proof of concept, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
    pip3 install sphinx&lt;br /&gt;
    # to use the non default theme&lt;br /&gt;
    pip3 install sphinx_rtd_theme&lt;br /&gt;
&lt;br /&gt;
And then:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.yoctoproject.org/git/yocto-docs -b sphinx&lt;br /&gt;
    cd sphinx/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
The resulting HTML index page will be _build/html/index.html.&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
=== Links and References ===&lt;br /&gt;
From: https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html&lt;br /&gt;
&lt;br /&gt;
You can include links to other locations in the same document, to locations in other documents and to external websites.&lt;br /&gt;
&lt;br /&gt;
You can link from text to a heading in any other part of the document by using the :ref: command with the heading text as the parameter. For example, this text in another part of this document would link to this section:&lt;br /&gt;
    :ref:`Cross-References to Locations in the Same Document`&lt;br /&gt;
&lt;br /&gt;
For that to work, we need sphinx.ext.autosectionlabel to be enabled in conf.py.&lt;br /&gt;
&lt;br /&gt;
We can use Custom link text or create custom anchor instead of using the section text.&lt;br /&gt;
&lt;br /&gt;
TODO: study https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html#use-the-external-links-extension, looks like something we could use..&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## &amp;lt;s&amp;gt;Update initial patches with yocto-docs recent changes &amp;lt;/s&amp;gt;&lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## Automated conversion with pandoc&lt;br /&gt;
### &amp;lt;s&amp;gt;adt-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;brief-yoctoprojectqs&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;dev-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;kernel-dev&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;profile-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;sdk-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;toaster-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;test-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### bitbake-manual&lt;br /&gt;
## fix up for links, figures, headings, notes&lt;br /&gt;
### adt-manual&lt;br /&gt;
### brief-yoctoprojectqs&lt;br /&gt;
### bsp-guide&lt;br /&gt;
### dev-manual&lt;br /&gt;
### kernel-dev&lt;br /&gt;
### overview-manual&lt;br /&gt;
### profile-manual&lt;br /&gt;
### ref-manual&lt;br /&gt;
### sdk-manual&lt;br /&gt;
### toaster-manual&lt;br /&gt;
### test-manual&lt;br /&gt;
### bitbake-manual&lt;br /&gt;
## What to do for *.css and *.xsl Docbook files&lt;br /&gt;
## How to deal with each docbook &#039;first&#039; page (license and TOC)&lt;br /&gt;
## Implement global substitutions variables&lt;br /&gt;
## Implement glossary&lt;br /&gt;
# Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&lt;br /&gt;
# Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated.&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# Do we want to backport to dunfell LTS? (RP: Yes!)&lt;br /&gt;
# RP: Can we create a single page manual for ease of searching (some users need this and I personally use it a lot that way, I&#039;m unlikely alone)?&lt;br /&gt;
# RP: Glossary headings don&#039;t appear to be externally linkable?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76013</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76013"/>
		<updated>2020-06-26T11:10:18Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Sphinx proof of concept */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks. All discussions should be made on the [https://lists.yoctoproject.org/g/docs/ Yocto Project Docs mailing list].&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept ==&lt;br /&gt;
&lt;br /&gt;
An experimental branch with some initial Sphinx support is available on [https://git.yoctoproject.org/cgit/cgit.cgi/yocto-docs/log/?h=sphinx here], which produces the following [https://people.linaro.org/~nicolas.dechesne/yp-docs/html HTML documentation].&lt;br /&gt;
&lt;br /&gt;
The support is very minimal, and only 3 documents were &#039;&#039;converted&#039;&#039;, but the idea was to share an initial look and feel about both the output and the changes to the documentation source code. There is a large amount of work to accomplish if we want to convert the whole documentation!&lt;br /&gt;
&lt;br /&gt;
To use the proof of concept, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
    pip3 install sphinx&lt;br /&gt;
    # to use the non default theme&lt;br /&gt;
    pip3 install sphinx_rtd_theme&lt;br /&gt;
&lt;br /&gt;
And then:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.yoctoproject.org/git/yocto-docs -b sphinx&lt;br /&gt;
    cd sphinx/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
The resulting HTML index page will be _build/html/index.html.&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
=== Links and References ===&lt;br /&gt;
From: https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html&lt;br /&gt;
&lt;br /&gt;
You can include links to other locations in the same document, to locations in other documents and to external websites.&lt;br /&gt;
&lt;br /&gt;
You can link from text to a heading in any other part of the document by using the :ref: command with the heading text as the parameter. For example, this text in another part of this document would link to this section:&lt;br /&gt;
    :ref:`Cross-References to Locations in the Same Document`&lt;br /&gt;
&lt;br /&gt;
For that to work, we need sphinx.ext.autosectionlabel to be enabled in conf.py.&lt;br /&gt;
&lt;br /&gt;
We can use Custom link text or create custom anchor instead of using the section text.&lt;br /&gt;
&lt;br /&gt;
TODO: study https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html#use-the-external-links-extension, looks like something we could use..&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## Update initial patches with yocto-docs recent changes &lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## Automated conversion with pandoc&lt;br /&gt;
### &amp;lt;s&amp;gt;adt-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;brief-yoctoprojectqs&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;dev-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;kernel-dev&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;profile-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;sdk-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;toaster-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### test-manual&lt;br /&gt;
### bitbake-manual&lt;br /&gt;
## fix up for links, figures, headings, notes&lt;br /&gt;
### adt-manual&lt;br /&gt;
### brief-yoctoprojectqs&lt;br /&gt;
### bsp-guide&lt;br /&gt;
### dev-manual&lt;br /&gt;
### kernel-dev&lt;br /&gt;
### overview-manual&lt;br /&gt;
### profile-manual&lt;br /&gt;
### ref-manual&lt;br /&gt;
### sdk-manual&lt;br /&gt;
### toaster-manual&lt;br /&gt;
### test-manual&lt;br /&gt;
### bitbake-manual&lt;br /&gt;
## What to do for *.css and *.xsl Docbook files&lt;br /&gt;
## How to deal with each docbook &#039;first&#039; page (license and TOC)&lt;br /&gt;
## Implement global substitutions variables&lt;br /&gt;
## Implement glossary&lt;br /&gt;
# Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&lt;br /&gt;
# Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated.&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# Do we want to backport to dunfell LTS? (RP: Yes!)&lt;br /&gt;
# RP: Can we create a single page manual for ease of searching (some users need this and I personally use it a lot that way, I&#039;m unlikely alone)?&lt;br /&gt;
# RP: Glossary headings don&#039;t appear to be externally linkable?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76003</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76003"/>
		<updated>2020-06-19T17:04:47Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Design ideas / principles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks. All discussions should be made on the [https://lists.yoctoproject.org/g/docs/ Yocto Project Docs mailing list].&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept ==&lt;br /&gt;
&lt;br /&gt;
An experimental branch with some initial Sphinx support was published [https://git.linaro.org/people/nicolas.dechesne/yocto-docs.git/log/?h=sphinx here], which produces the following [https://people.linaro.org/~nicolas.dechesne/yp-docs/html HTML documentation].&lt;br /&gt;
&lt;br /&gt;
The support is very minimal, and only 3 documents were &#039;&#039;converted&#039;&#039;, but the idea was to share an initial look and feel about both the output and the changes to the documentation source code. There is a large amount of work to accomplish if we want to convert the whole documentation!&lt;br /&gt;
&lt;br /&gt;
To use the proof of concept, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
    pip3 install sphinx&lt;br /&gt;
    # to use the non default theme&lt;br /&gt;
    pip3 install sphinx_rtd_theme&lt;br /&gt;
&lt;br /&gt;
And then:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.linaro.org/people/nicolas.dechesne/yocto-docs.git -b sphinx&lt;br /&gt;
    cd sphinx/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
The resulting HTML index page will be _build/html/index.html.&lt;br /&gt;
&lt;br /&gt;
Note: the branch https://git.linaro.org/people/nicolas.dechesne/yocto-docs.git/log/?h=sphinx2 is a rewrite of the initial branch with additional changes.&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
=== Links and References ===&lt;br /&gt;
From: https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html&lt;br /&gt;
&lt;br /&gt;
You can include links to other locations in the same document, to locations in other documents and to external websites.&lt;br /&gt;
&lt;br /&gt;
You can link from text to a heading in any other part of the document by using the :ref: command with the heading text as the parameter. For example, this text in another part of this document would link to this section:&lt;br /&gt;
    :ref:`Cross-References to Locations in the Same Document`&lt;br /&gt;
&lt;br /&gt;
For that to work, we need sphinx.ext.autosectionlabel to be enabled in conf.py.&lt;br /&gt;
&lt;br /&gt;
We can use Custom link text or create custom anchor instead of using the section text.&lt;br /&gt;
&lt;br /&gt;
TODO: study https://sublime-and-sphinx-guide.readthedocs.io/en/latest/references.html#use-the-external-links-extension, looks like something we could use..&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## Update initial patches with yocto-docs recent changes &lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## Automated conversion with pandoc&lt;br /&gt;
### &amp;lt;s&amp;gt;adt-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;brief-yoctoprojectqs&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;dev-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;kernel-dev&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;profile-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;sdk-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;toaster-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### test-manual&lt;br /&gt;
### bitbake-manual&lt;br /&gt;
## fix up for links, figures, headings, notes&lt;br /&gt;
### adt-manual&lt;br /&gt;
### brief-yoctoprojectqs&lt;br /&gt;
### bsp-guide&lt;br /&gt;
### dev-manual&lt;br /&gt;
### kernel-dev&lt;br /&gt;
### overview-manual&lt;br /&gt;
### profile-manual&lt;br /&gt;
### ref-manual&lt;br /&gt;
### sdk-manual&lt;br /&gt;
### toaster-manual&lt;br /&gt;
### test-manual&lt;br /&gt;
### bitbake-manual&lt;br /&gt;
## What to do for *.css and *.xsl Docbook files&lt;br /&gt;
## How to deal with each docbook &#039;first&#039; page (license and TOC)&lt;br /&gt;
## Implement global substitutions variables&lt;br /&gt;
## Implement glossary&lt;br /&gt;
# Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&lt;br /&gt;
# Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated.&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# Do we want to backport to dunfell LTS? (RP: Yes!)&lt;br /&gt;
# RP: Can we create a single page manual for ease of searching (some users need this and I personally use it a lot that way, I&#039;m unlikely alone)?&lt;br /&gt;
# RP: Glossary headings don&#039;t appear to be externally linkable?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76001</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76001"/>
		<updated>2020-06-17T16:46:59Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Tasks list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks. All discussions should be made on the [https://lists.yoctoproject.org/g/docs/ Yocto Project Docs mailing list].&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept ==&lt;br /&gt;
&lt;br /&gt;
An experimental branch with some initial Sphinx support was published [https://git.linaro.org/people/nicolas.dechesne/yocto-docs.git/log/?h=sphinx here], which produces the following [https://people.linaro.org/~nicolas.dechesne/yp-docs/html HTML documentation].&lt;br /&gt;
&lt;br /&gt;
The support is very minimal, and only 3 documents were &#039;&#039;converted&#039;&#039;, but the idea was to share an initial look and feel about both the output and the changes to the documentation source code. There is a large amount of work to accomplish if we want to convert the whole documentation!&lt;br /&gt;
&lt;br /&gt;
To use the proof of concept, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
    pip3 install sphinx&lt;br /&gt;
    # to use the non default theme&lt;br /&gt;
    pip3 install sphinx_rtd_theme&lt;br /&gt;
&lt;br /&gt;
And then:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.linaro.org/people/nicolas.dechesne/yocto-docs.git -b sphinx&lt;br /&gt;
    cd sphinx/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
The resulting HTML index page will be _build/html/index.html.&lt;br /&gt;
&lt;br /&gt;
Note: the branch https://git.linaro.org/people/nicolas.dechesne/yocto-docs.git/log/?h=sphinx2 is a rewrite of the initial branch with additional changes.&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## Update initial patches with yocto-docs recent changes &lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## Automated conversion with pandoc&lt;br /&gt;
### &amp;lt;s&amp;gt;adt-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;brief-yoctoprojectqs&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;dev-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;kernel-dev&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;profile-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;sdk-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;toaster-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### test-manual&lt;br /&gt;
### bitbake-manual&lt;br /&gt;
## fix up for links, figures, headings, notes&lt;br /&gt;
### adt-manual&lt;br /&gt;
### brief-yoctoprojectqs&lt;br /&gt;
### bsp-guide&lt;br /&gt;
### dev-manual&lt;br /&gt;
### kernel-dev&lt;br /&gt;
### overview-manual&lt;br /&gt;
### profile-manual&lt;br /&gt;
### ref-manual&lt;br /&gt;
### sdk-manual&lt;br /&gt;
### toaster-manual&lt;br /&gt;
### test-manual&lt;br /&gt;
### bitbake-manual&lt;br /&gt;
## What to do for *.css and *.xsl Docbook files&lt;br /&gt;
## How to deal with each docbook &#039;first&#039; page (license and TOC)&lt;br /&gt;
## Implement global substitutions variables&lt;br /&gt;
## Implement glossary&lt;br /&gt;
# Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&lt;br /&gt;
# Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated.&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# Do we want to backport to dunfell LTS? (RP: Yes!)&lt;br /&gt;
# RP: Can we create a single page manual for ease of searching (some users need this and I personally use it a lot that way, I&#039;m unlikely alone)?&lt;br /&gt;
# RP: Glossary headings don&#039;t appear to be externally linkable?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76000</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=76000"/>
		<updated>2020-06-17T15:39:07Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Tasks list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks. All discussions should be made on the [https://lists.yoctoproject.org/g/docs/ Yocto Project Docs mailing list].&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept ==&lt;br /&gt;
&lt;br /&gt;
An experimental branch with some initial Sphinx support was published [https://git.linaro.org/people/nicolas.dechesne/yocto-docs.git/log/?h=sphinx here], which produces the following [https://people.linaro.org/~nicolas.dechesne/yp-docs/html HTML documentation].&lt;br /&gt;
&lt;br /&gt;
The support is very minimal, and only 3 documents were &#039;&#039;converted&#039;&#039;, but the idea was to share an initial look and feel about both the output and the changes to the documentation source code. There is a large amount of work to accomplish if we want to convert the whole documentation!&lt;br /&gt;
&lt;br /&gt;
To use the proof of concept, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
    pip3 install sphinx&lt;br /&gt;
    # to use the non default theme&lt;br /&gt;
    pip3 install sphinx_rtd_theme&lt;br /&gt;
&lt;br /&gt;
And then:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.linaro.org/people/nicolas.dechesne/yocto-docs.git -b sphinx&lt;br /&gt;
    cd sphinx/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
The resulting HTML index page will be _build/html/index.html.&lt;br /&gt;
&lt;br /&gt;
Note: the branch https://git.linaro.org/people/nicolas.dechesne/yocto-docs.git/log/?h=sphinx2 is a rewrite of the initial branch with additional changes.&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## Update initial patches with yocto-docs recent changes &lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## Automated conversion with pandoc&lt;br /&gt;
### &amp;lt;s&amp;gt;adt-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;brief-yoctoprojectqs&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;dev-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;kernel-dev&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;profile-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;sdk-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### &amp;lt;s&amp;gt;toaster-manual&amp;lt;/s&amp;gt;&lt;br /&gt;
### test-manual&lt;br /&gt;
## fix up for links, figures, headings, notes&lt;br /&gt;
### adt-manual&lt;br /&gt;
### brief-yoctoprojectqs&lt;br /&gt;
### bsp-guide&lt;br /&gt;
### dev-manual&lt;br /&gt;
### kernel-dev&lt;br /&gt;
### overview-manual&lt;br /&gt;
### profile-manual&lt;br /&gt;
### ref-manual&lt;br /&gt;
### sdk-manual&lt;br /&gt;
### toaster-manual&lt;br /&gt;
### test-manual&lt;br /&gt;
## What to do for *.css and *.xsl Docbook files&lt;br /&gt;
## How to deal with each docbook &#039;first&#039; page (license and TOC)&lt;br /&gt;
## Implement global substitutions variables&lt;br /&gt;
## Implement glossary&lt;br /&gt;
# Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&lt;br /&gt;
# Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated.&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# Do we want to backport to dunfell LTS? (RP: Yes!)&lt;br /&gt;
# RP: Can we create a single page manual for ease of searching (some users need this and I personally use it a lot that way, I&#039;m unlikely alone)?&lt;br /&gt;
# RP: Glossary headings don&#039;t appear to be externally linkable?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=75999</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=75999"/>
		<updated>2020-06-17T15:35:39Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Sphinx proof of concept */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks. All discussions should be made on the [https://lists.yoctoproject.org/g/docs/ Yocto Project Docs mailing list].&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept ==&lt;br /&gt;
&lt;br /&gt;
An experimental branch with some initial Sphinx support was published [https://git.linaro.org/people/nicolas.dechesne/yocto-docs.git/log/?h=sphinx here], which produces the following [https://people.linaro.org/~nicolas.dechesne/yp-docs/html HTML documentation].&lt;br /&gt;
&lt;br /&gt;
The support is very minimal, and only 3 documents were &#039;&#039;converted&#039;&#039;, but the idea was to share an initial look and feel about both the output and the changes to the documentation source code. There is a large amount of work to accomplish if we want to convert the whole documentation!&lt;br /&gt;
&lt;br /&gt;
To use the proof of concept, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
    pip3 install sphinx&lt;br /&gt;
    # to use the non default theme&lt;br /&gt;
    pip3 install sphinx_rtd_theme&lt;br /&gt;
&lt;br /&gt;
And then:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.linaro.org/people/nicolas.dechesne/yocto-docs.git -b sphinx&lt;br /&gt;
    cd sphinx/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
The resulting HTML index page will be _build/html/index.html.&lt;br /&gt;
&lt;br /&gt;
Note: the branch https://git.linaro.org/people/nicolas.dechesne/yocto-docs.git/log/?h=sphinx2 is a rewrite of the initial branch with additional changes.&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## Update initial patches with yocto-docs recent changes &lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## Automated conversion with pandoc&lt;br /&gt;
### adt-manual&lt;br /&gt;
### brief-yoctoprojectqs&lt;br /&gt;
### dev-manual&lt;br /&gt;
### kernel-dev&lt;br /&gt;
### profile-manual&lt;br /&gt;
### sdk-manual&lt;br /&gt;
### toaster-manual&lt;br /&gt;
### test-manual&lt;br /&gt;
## fix up for links, figures, headings, notes&lt;br /&gt;
### adt-manual&lt;br /&gt;
### brief-yoctoprojectqs&lt;br /&gt;
### bsp-guide&lt;br /&gt;
### dev-manual&lt;br /&gt;
### kernel-dev&lt;br /&gt;
### overview-manual&lt;br /&gt;
### profile-manual&lt;br /&gt;
### ref-manual&lt;br /&gt;
### sdk-manual&lt;br /&gt;
### toaster-manual&lt;br /&gt;
### test-manual&lt;br /&gt;
## What to do for *.css and *.xsl Docbook files&lt;br /&gt;
## How to deal with each docbook &#039;first&#039; page (license and TOC)&lt;br /&gt;
## Implement global substitutions variables&lt;br /&gt;
## Implement glossary&lt;br /&gt;
# Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&lt;br /&gt;
# Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated.&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# Do we want to backport to dunfell LTS? (RP: Yes!)&lt;br /&gt;
# RP: Can we create a single page manual for ease of searching (some users need this and I personally use it a lot that way, I&#039;m unlikely alone)?&lt;br /&gt;
# RP: Glossary headings don&#039;t appear to be externally linkable?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=75997</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=75997"/>
		<updated>2020-06-17T15:26:50Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Sphinx proof of concept */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks. All discussions should be made on the [https://lists.yoctoproject.org/g/docs/ Yocto Project Docs mailing list].&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept ==&lt;br /&gt;
&lt;br /&gt;
An experimental branch with some initial Sphinx support was published [https://git.linaro.org/people/nicolas.dechesne/yocto-docs.git/log/?h=sphinx here], which produces the following [https://people.linaro.org/~nicolas.dechesne/yp-docs/ HTML documentation].&lt;br /&gt;
&lt;br /&gt;
The support is very minimal, and only 3 documents were &#039;&#039;converted&#039;&#039;, but the idea was to share an initial look and feel about both the output and the changes to the documentation source code. There is a large amount of work to accomplish if we want to convert the whole documentation!&lt;br /&gt;
&lt;br /&gt;
To use the proof of concept, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
    pip3 install sphinx&lt;br /&gt;
    # to use the non default theme&lt;br /&gt;
    pip3 install sphinx_rtd_theme&lt;br /&gt;
&lt;br /&gt;
And then:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.linaro.org/people/nicolas.dechesne/yocto-docs.git -b sphinx&lt;br /&gt;
    cd sphinx/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
The resulting HTML index page will be _build/html/index.html.&lt;br /&gt;
&lt;br /&gt;
Note: the branch https://git.linaro.org/people/nicolas.dechesne/yocto-docs.git/log/?h=sphinx2 is a rewrite of the initial branch with additional changes.&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## Update initial patches with yocto-docs recent changes &lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## Automated conversion with pandoc&lt;br /&gt;
### adt-manual&lt;br /&gt;
### brief-yoctoprojectqs&lt;br /&gt;
### dev-manual&lt;br /&gt;
### kernel-dev&lt;br /&gt;
### profile-manual&lt;br /&gt;
### sdk-manual&lt;br /&gt;
### toaster-manual&lt;br /&gt;
## fix up for links, figures, headings, notes&lt;br /&gt;
### adt-manual&lt;br /&gt;
### brief-yoctoprojectqs&lt;br /&gt;
### bsp-guide&lt;br /&gt;
### dev-manual&lt;br /&gt;
### kernel-dev&lt;br /&gt;
### overview-manual&lt;br /&gt;
### profile-manual&lt;br /&gt;
### ref-manual&lt;br /&gt;
### sdk-manual&lt;br /&gt;
### toaster-manual&lt;br /&gt;
## What to do for *.css and *.xsl Docbook files&lt;br /&gt;
## How to deal with each docbook &#039;first&#039; page (license and TOC)&lt;br /&gt;
## Implement global substitutions variables&lt;br /&gt;
## Implement glossary&lt;br /&gt;
# Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&lt;br /&gt;
# Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated.&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# Do we want to backport to dunfell LTS?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Project_Users&amp;diff=75868</id>
		<title>Project Users</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Project_Users&amp;diff=75868"/>
		<updated>2020-06-04T18:29:29Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It&#039;s hard to know which companies or projects use the Yocto Project since there is no requirement to tell us. This list is here to informally collate the companies, projects and products that use the Yocto Project in some way.&lt;br /&gt;
&lt;br /&gt;
= Companies using the Yocto Project =&lt;br /&gt;
&lt;br /&gt;
== Semiconductor Vendors ==&lt;br /&gt;
* AMD (Silver Member)&lt;br /&gt;
* ARM (Platinum Member)&lt;br /&gt;
* Intel (Platinum Member)&lt;br /&gt;
* Microchip&lt;br /&gt;
* NXP (Silver Member)&lt;br /&gt;
* Qualcomm&lt;br /&gt;
* Renesas (Gold Member)&lt;br /&gt;
* STMicroelectronics (Silver Member)&lt;br /&gt;
* Texas Instruments (Platinum Member)&lt;br /&gt;
* Xilinx (Platinum Member)&lt;br /&gt;
&lt;br /&gt;
== Operating System Vendors ==&lt;br /&gt;
* ENEA (Silver Member)&lt;br /&gt;
* Linaro (Silver Member)&lt;br /&gt;
* Lineo (Silver Member)&lt;br /&gt;
* Mentor Graphics (Gold Member)&lt;br /&gt;
* Montavista (Silver Member)&lt;br /&gt;
* Wind River (Gold Member)&lt;br /&gt;
&lt;br /&gt;
== Others ==&lt;br /&gt;
* Cisco (Platinum Member)&lt;br /&gt;
* Comcast (Platinum Member)&lt;br /&gt;
* Dell (Silver Member)&lt;br /&gt;
* Facebook (Platinum Member)&lt;br /&gt;
* Juniper (Gold Member)&lt;br /&gt;
* [https://koansoftware.com/ KOAN sas]&lt;br /&gt;
* Lexmark&lt;br /&gt;
* LG (Silver Member)&lt;br /&gt;
* Microsoft&lt;br /&gt;
* StreamUnlimited Engineering GmbH&lt;br /&gt;
* Fujitsu&lt;br /&gt;
* BMW&lt;br /&gt;
* BMW Car IT&lt;br /&gt;
* National Instruments&lt;br /&gt;
* Dynamic Devices&lt;br /&gt;
* Axis&lt;br /&gt;
* Atlas Copco&lt;br /&gt;
* Kodak&lt;br /&gt;
* Smile&lt;br /&gt;
* General Electric&lt;br /&gt;
* [https://www.witekio.com/values-expertise/ Witekio]&lt;br /&gt;
&lt;br /&gt;
= Products that use the Yocto Project =&lt;br /&gt;
&lt;br /&gt;
* BMW cars&lt;br /&gt;
* Comcast set top boxes&lt;br /&gt;
* LG TVs&lt;br /&gt;
* Lexmark Printers&lt;br /&gt;
* [https://www.streamunlimited.com/hardware-modules/ StreamUnlimited hardware modules for voice assistants and connected speakers]&lt;br /&gt;
* Vernier LabQuest&lt;br /&gt;
&lt;br /&gt;
= Projects that use the Yocto Project =&lt;br /&gt;
&lt;br /&gt;
* [https://www.automotivelinux.org/ Automotive Grade Linux (AGL)]&lt;br /&gt;
* Comcast RDK&lt;br /&gt;
* OpenBMC&lt;br /&gt;
* Windows Subsystem Linux (v1+v2)&lt;br /&gt;
* [https://oryx-linux.org/ Oryx Linux]&lt;br /&gt;
* [https://www.streamunlimited.com/stream-sdk/ StreamSDK for voice assistants and connected speakers]&lt;br /&gt;
* Nvidia vibrante SDK [https://docs.nvidia.com/drive/archive/4.1.8.0L/nvoss_docs/index.html]&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=75237</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=75237"/>
		<updated>2020-05-26T17:07:27Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Tasks list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks. All discussions should be made on the [https://lists.yoctoproject.org/g/docs/ Yocto Project Docs mailing list].&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept ==&lt;br /&gt;
&lt;br /&gt;
An experimental branch with some initial Sphinx support was published [https://git.linaro.org/people/nicolas.dechesne/yocto-docs.git/log/?h=sphinx here], which produces the following [https://people.linaro.org/~nicolas.dechesne/yp-docs/ HTML documentation].&lt;br /&gt;
&lt;br /&gt;
The support is very minimal, and only 3 documents were &#039;&#039;converted&#039;&#039;, but the idea was to share an initial look and feel about both the output and the changes to the documentation source code. There is a large amount of work to accomplish if we want to convert the whole documentation!&lt;br /&gt;
&lt;br /&gt;
To use the proof of concept, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
    pip3 install sphinx&lt;br /&gt;
    # to use the non default theme&lt;br /&gt;
    pip3 install sphinx_rtd_theme&lt;br /&gt;
&lt;br /&gt;
And then:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.linaro.org/people/nicolas.dechesne/yocto-docs.git -b sphinx&lt;br /&gt;
    cd sphinx/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
The resulting HTML index page will be _build/html/index.html.&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## Update initial patches with yocto-docs recent changes &lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## Automated conversion with pandoc&lt;br /&gt;
### adt-manual&lt;br /&gt;
### brief-yoctoprojectqs&lt;br /&gt;
### dev-manual&lt;br /&gt;
### kernel-dev&lt;br /&gt;
### profile-manual&lt;br /&gt;
### sdk-manual&lt;br /&gt;
### toaster-manual&lt;br /&gt;
## fix up for links, figures, headings, notes&lt;br /&gt;
### adt-manual&lt;br /&gt;
### brief-yoctoprojectqs&lt;br /&gt;
### bsp-guide&lt;br /&gt;
### dev-manual&lt;br /&gt;
### kernel-dev&lt;br /&gt;
### overview-manual&lt;br /&gt;
### profile-manual&lt;br /&gt;
### ref-manual&lt;br /&gt;
### sdk-manual&lt;br /&gt;
### toaster-manual&lt;br /&gt;
## What to do for *.css and *.xsl Docbook files&lt;br /&gt;
## How to deal with each docbook &#039;first&#039; page (license and TOC)&lt;br /&gt;
## Implement global substitutions variables&lt;br /&gt;
## Implement glossary&lt;br /&gt;
# Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&lt;br /&gt;
# Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated.&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# Do we want to backport to dunfell LTS?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=75232</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=75232"/>
		<updated>2020-05-26T14:53:23Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Sphinx proof of concept */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks. All discussions should be made on the [https://lists.yoctoproject.org/g/docs/ Yocto Project Docs mailing list].&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept ==&lt;br /&gt;
&lt;br /&gt;
An experimental branch with some initial Sphinx support was published [https://git.linaro.org/people/nicolas.dechesne/yocto-docs.git/log/?h=sphinx here], which produces the following [https://people.linaro.org/~nicolas.dechesne/yp-docs/ HTML documentation].&lt;br /&gt;
&lt;br /&gt;
The support is very minimal, and only 3 documents were &#039;&#039;converted&#039;&#039;, but the idea was to share an initial look and feel about both the output and the changes to the documentation source code. There is a large amount of work to accomplish if we want to convert the whole documentation!&lt;br /&gt;
&lt;br /&gt;
To use the proof of concept, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
    pip3 install sphinx&lt;br /&gt;
    # to use the non default theme&lt;br /&gt;
    pip3 install sphinx_rtd_theme&lt;br /&gt;
&lt;br /&gt;
And then:&lt;br /&gt;
&lt;br /&gt;
    git clone https://git.linaro.org/people/nicolas.dechesne/yocto-docs.git -b sphinx&lt;br /&gt;
    cd sphinx/documentation&lt;br /&gt;
    make -f Makefile.sphinx html&lt;br /&gt;
&lt;br /&gt;
The resulting HTML index page will be _build/html/index.html.&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## Update initial patches with yocto-docs recent changes &lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## Automated conversion with pandoc&lt;br /&gt;
### adt-manual&lt;br /&gt;
### brief-yoctoprojectqs&lt;br /&gt;
### dev-manual&lt;br /&gt;
### kernel-dev&lt;br /&gt;
### profile-manual&lt;br /&gt;
### sdk-manual&lt;br /&gt;
### toaster-manual&lt;br /&gt;
## fix up for links, figures, headings, notes&lt;br /&gt;
### adt-manual&lt;br /&gt;
### brief-yoctoprojectqs&lt;br /&gt;
### bsp-guide&lt;br /&gt;
### dev-manual&lt;br /&gt;
### kernel-dev&lt;br /&gt;
### overview-manual&lt;br /&gt;
### profile-manual&lt;br /&gt;
### ref-manual&lt;br /&gt;
### sdk-manual&lt;br /&gt;
### toaster-manual&lt;br /&gt;
## Implement global substitutions variables&lt;br /&gt;
## Implement glossary&lt;br /&gt;
# Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&lt;br /&gt;
# Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated.&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# Do we want to backport to dunfell LTS?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=75227</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=75227"/>
		<updated>2020-05-26T09:32:28Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks. All discussions should be made on the [https://lists.yoctoproject.org/g/docs/ Yocto Project Docs mailing list].&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept ==&lt;br /&gt;
&lt;br /&gt;
An experimental branch with some initial Sphinx support was published [https://git.linaro.org/people/nicolas.dechesne/yocto-docs.git/log/?h=sphinx here], which produces the following [https://people.linaro.org/~nicolas.dechesne/yp-docs/ HTML documentation].&lt;br /&gt;
&lt;br /&gt;
The support is very minimal, and only 3 documents were &#039;&#039;converted&#039;&#039;, but the idea was to share an initial look and feel about both the output and the changes to the documentation source code. There is a large amount of work to accomplish if we want to convert the whole documentation!&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## Update initial patches with yocto-docs recent changes &lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## Automated conversion with pandoc&lt;br /&gt;
### adt-manual&lt;br /&gt;
### brief-yoctoprojectqs&lt;br /&gt;
### dev-manual&lt;br /&gt;
### kernel-dev&lt;br /&gt;
### profile-manual&lt;br /&gt;
### sdk-manual&lt;br /&gt;
### toaster-manual&lt;br /&gt;
## fix up for links, figures, headings, notes&lt;br /&gt;
### adt-manual&lt;br /&gt;
### brief-yoctoprojectqs&lt;br /&gt;
### bsp-guide&lt;br /&gt;
### dev-manual&lt;br /&gt;
### kernel-dev&lt;br /&gt;
### overview-manual&lt;br /&gt;
### profile-manual&lt;br /&gt;
### ref-manual&lt;br /&gt;
### sdk-manual&lt;br /&gt;
### toaster-manual&lt;br /&gt;
## Implement global substitutions variables&lt;br /&gt;
## Implement glossary&lt;br /&gt;
# Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&lt;br /&gt;
# Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated.&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# Do we want to backport to dunfell LTS?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=75226</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=75226"/>
		<updated>2020-05-26T09:31:35Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks.&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept ==&lt;br /&gt;
&lt;br /&gt;
An experimental branch with some initial Sphinx support was published [https://git.linaro.org/people/nicolas.dechesne/yocto-docs.git/log/?h=sphinx here], which produces the following [https://people.linaro.org/~nicolas.dechesne/yp-docs/ HTML documentation].&lt;br /&gt;
&lt;br /&gt;
The support is very minimal, and only 3 documents were &#039;&#039;converted&#039;&#039;, but the idea was to share an initial look and feel about both the output and the changes to the documentation source code. There is a large amount of work to accomplish if we want to convert the whole documentation!&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
=== Note directive ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a builtin &#039;&#039;note&#039;&#039; directive that produces clean Note section in the output file. There are various types of directives such as &amp;quot;attention&amp;quot;, &amp;quot;caution&amp;quot;, &amp;quot;danger&amp;quot;, &amp;quot;error&amp;quot;, &amp;quot;hint&amp;quot;, &amp;quot;important&amp;quot;, &amp;quot;tip&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;admonition&amp;quot; that are supported, and additional directive can be added as Sphinx extension if needed.&lt;br /&gt;
&lt;br /&gt;
=== Figures ===&lt;br /&gt;
&lt;br /&gt;
Our documentation has many figures/images. Somehow Pandoc has completely ignored all images during the conversion. It might be worth investigating why, even though it might take more time than manually fixing all documents... Sphinx as a &#039;&#039;figure&#039;&#039; directive which is straight forward to use. To include a figure in the body of the documentation:&lt;br /&gt;
&lt;br /&gt;
    .. image:: figures/YP-flow-diagram.png&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;br /&gt;
&lt;br /&gt;
Here is an initial tasks list for the migration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Proof of concept&lt;br /&gt;
## &amp;lt;s&amp;gt;Initial proof of concept patches&amp;lt;/s&amp;gt;&lt;br /&gt;
## Merge initial patch set in master, along with Docbook&lt;br /&gt;
## Update initial patches with yocto-docs recent changes &lt;br /&gt;
# Convert all YP manuals&lt;br /&gt;
## Automated conversion with pandoc&lt;br /&gt;
### adt-manual&lt;br /&gt;
### brief-yoctoprojectqs&lt;br /&gt;
### dev-manual&lt;br /&gt;
### kernel-dev&lt;br /&gt;
### profile-manual&lt;br /&gt;
### sdk-manual&lt;br /&gt;
### toaster-manual&lt;br /&gt;
## fix up for links, figures, headings, notes&lt;br /&gt;
### adt-manual&lt;br /&gt;
### brief-yoctoprojectqs&lt;br /&gt;
### bsp-guide&lt;br /&gt;
### dev-manual&lt;br /&gt;
### kernel-dev&lt;br /&gt;
### overview-manual&lt;br /&gt;
### profile-manual&lt;br /&gt;
### ref-manual&lt;br /&gt;
### sdk-manual&lt;br /&gt;
### toaster-manual&lt;br /&gt;
## Implement global substitutions variables&lt;br /&gt;
## Implement glossary&lt;br /&gt;
# Decide how to manage the mega manual. Should we create a single doc (index.rst) file per documentat, or a single one which ultimately would become the mega manual&lt;br /&gt;
# Custom Sphinx theme. The whole output can be themed using CSS and custom theme. We need to implement something that &#039;looks like&#039; the Yocto Project and create beautiful rendering of our documentation&lt;br /&gt;
# How to publish HTML online (per branch, latest, current, ...)? The whole process must be automated.&lt;br /&gt;
# How to create PDF files?&lt;br /&gt;
# What&#039;s the impact of Google search and referencing?&lt;br /&gt;
# Do we want to backport to dunfell LTS?&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=75225</id>
		<title>Documentation Sphinx</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Documentation_Sphinx&amp;diff=75225"/>
		<updated>2020-05-26T09:01:16Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: Created page with &amp;quot;== Yocto Project Documentation: Sphinx migration ==   The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) fo...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Yocto Project Documentation: Sphinx migration == &lt;br /&gt;
&lt;br /&gt;
The Yocto Project developers are currently investigating whether to move from Docbook to Sphinx (or any similar tools) for the project&#039;s documentation. The initial discussion can be found [https://lists.yoctoproject.org/g/docs/message/165 here]. &lt;br /&gt;
&lt;br /&gt;
    Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, written by Georg Brandl and licensed under the BSD license. It was originally created for the Python documentation.&lt;br /&gt;
&lt;br /&gt;
See more on [https://www.sphinx-doc.org/en/master/ Sphinx website]. Furthermore Sphinx is designed to be [https://www.sphinx-doc.org/en/master/extdev/index.html extensible], and we can implement our own custom extensions, as Python modules, which will be executed during the generation of the documentation. This is a rather advance use of Sphinx, but could be very useful in the future.&lt;br /&gt;
&lt;br /&gt;
This wiki page can be used as a working document to assist the discussions and/or the tasks.&lt;br /&gt;
&lt;br /&gt;
== Sphinx proof of concept ==&lt;br /&gt;
&lt;br /&gt;
An experimental branch with some initial Sphinx support was published [https://git.linaro.org/people/nicolas.dechesne/yocto-docs.git/log/?h=sphinx here], which produces the following [https://people.linaro.org/~nicolas.dechesne/yp-docs/ HTML documentation].&lt;br /&gt;
&lt;br /&gt;
The support is very minimal, and only 3 documents were &#039;&#039;converted&#039;&#039;, but the idea was to share an initial look and feel about both the output and the changes to the documentation source code. There is a large amount of work to accomplish if we want to convert the whole documentation!&lt;br /&gt;
&lt;br /&gt;
== Design ideas / principles == &lt;br /&gt;
&lt;br /&gt;
=== Automated conversion ===&lt;br /&gt;
&lt;br /&gt;
The initial Docbook to Sphinx migration can be done with automated tools such as [https://pandoc.org/ pandoc]. While the conversion is far from being perfect, it produces some clean output markdown text file. After the initial automated conversion developers will need to fix up at least headings, images and links. In addition Sphinx has built in mechanisms (directives) that should be used to replace similar functions implemented in Docbook such as glossary, variables substitutions, notes, ... &lt;br /&gt;
&lt;br /&gt;
To illustrate how Pandoc can be used, the initial conversion for bsp-guide, ref-manual and overview-manual was done with the following commands:&lt;br /&gt;
    &lt;br /&gt;
    for i in *.xml; do pandoc -f docbook -t rst $i -o $i.rst; done&lt;br /&gt;
&lt;br /&gt;
=== Headings ===&lt;br /&gt;
 &lt;br /&gt;
The layout of the Yocto Project manuals is organized as follows&lt;br /&gt;
&lt;br /&gt;
    Book&lt;br /&gt;
      Chapter&lt;br /&gt;
        Section&lt;br /&gt;
          Section&lt;br /&gt;
            Section&lt;br /&gt;
&lt;br /&gt;
During the conversion with Pandoc, some of the headings are not converted properly and need to be fixed manually. Let&#039;s propose to use the following headings styles:&lt;br /&gt;
&lt;br /&gt;
    Book              =&amp;gt; overline ===&lt;br /&gt;
      Chapter         =&amp;gt; overline ***&lt;br /&gt;
        Section       =&amp;gt; ====&lt;br /&gt;
          Section     =&amp;gt; ----&lt;br /&gt;
            Section   =&amp;gt; ^^^^&lt;br /&gt;
              Section =&amp;gt; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At least with this proposal, we keep the same TOCs with Sphinx and Docbook.&lt;br /&gt;
&lt;br /&gt;
=== Built in glossary ===&lt;br /&gt;
&lt;br /&gt;
Sphinx has a [https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#glossary glossary directive]. From the documentation:&lt;br /&gt;
&lt;br /&gt;
    This directive must contain a reST definition list with terms and definitions. The definitions will then be referencable with the [https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-term &#039;term&#039; role].&lt;br /&gt;
&lt;br /&gt;
So anywhere in *any* manual, we can do :term:`VAR` to refer to an item from the glossary, and a link is created.&lt;br /&gt;
&lt;br /&gt;
=== Global substitutions ===&lt;br /&gt;
&lt;br /&gt;
The Yocto Project documentation makes heavy use of &#039;global&#039; variables. In Docbook these &#039;variables&#039; are stored in the file [http://git.yoctoproject.org/cgit.cgi/yocto-docs/tree/documentation/poky.ent poky.ent]. This Docbook feature is not handled automatically with Pandoc. Sphinx has builtin support for [https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#substitutions substitutions] however they are local to each reST file by default. They can be made global by using &#039;&#039;rst_prolog&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog&lt;br /&gt;
        A string of reStructuredText that will be included at the beginning of every source file that is read.&lt;br /&gt;
&lt;br /&gt;
As such we will keep a documentation configuration file with all global substitutions, similar to &#039;&#039;poky.ent&#039;&#039;. Here is a sample code to define variables:&lt;br /&gt;
&lt;br /&gt;
    rst_prolog = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    .. |DISTRO| replace:: 3.1&lt;br /&gt;
    .. |DISTRO_COMPRESSED| replace:: 31&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP| replace:: dunfell&lt;br /&gt;
    .. |DISTRO_NAME| replace:: Dunfell&lt;br /&gt;
    .. |DISTRO_NAME_NO_CAP_MINUS_ONE| replace:: zeus&lt;br /&gt;
    .. |DISTRO_NAME_MINUS_ONE| replace:: Zeus&lt;br /&gt;
    .. |YOCTO_DOC_VERSION| replace:: 3.1&lt;br /&gt;
    .. |YOCTO_DOC_VERSION_MINUS_ONE| replace:: 3.0.2&lt;br /&gt;
    .. |DISTRO_REL_TAG| replace:: yocto-3.1&lt;br /&gt;
    .. |METAINTELVERSION| replace:: 12.0&lt;br /&gt;
    .. |REL_MONTH_YEAR| replace:: April 2020&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and use them:&lt;br /&gt;
&lt;br /&gt;
    This is the manual for version: |DISTRO|, aka |DISTRO_NAME|.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tasks list ==&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Project_Users&amp;diff=74549</id>
		<title>Project Users</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Project_Users&amp;diff=74549"/>
		<updated>2020-05-15T06:35:05Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Companies using the Yocto Project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It&#039;s hard to know which companies or projects use the Yocto Project since there is no requirement to tell us. This list is here to informally collate the companies, projects and products that use the Yocto Project in some way.&lt;br /&gt;
&lt;br /&gt;
= Companies using the Yocto Project =&lt;br /&gt;
&lt;br /&gt;
== Semiconductor Vendors ==&lt;br /&gt;
* AMD (Silver Member)&lt;br /&gt;
* ARM (Platinum Member)&lt;br /&gt;
* Intel (Platinum Member)&lt;br /&gt;
* Microchip&lt;br /&gt;
* NXP (Silver Member)&lt;br /&gt;
* Qualcomm&lt;br /&gt;
* Renesas (Gold Member)&lt;br /&gt;
* STMicroelectronics (Silver Member)&lt;br /&gt;
* Texas Instruments (Platinum Member)&lt;br /&gt;
* Xilinx (Platinum Member)&lt;br /&gt;
&lt;br /&gt;
== Operating System Vendors ==&lt;br /&gt;
* ENEA (Silver Member)&lt;br /&gt;
* Linaro (Silver Member)&lt;br /&gt;
* Lineo (Silver Member)&lt;br /&gt;
* Mentor Graphics (Gold Member)&lt;br /&gt;
* Montavista (Silver Member)&lt;br /&gt;
* Wind River (Gold Member)&lt;br /&gt;
&lt;br /&gt;
== Others ==&lt;br /&gt;
* Cisco (Platinum Member)&lt;br /&gt;
* Comcast (Platinum Member)&lt;br /&gt;
* Dell (Silver Member)&lt;br /&gt;
* Facebook (Platinum Member)&lt;br /&gt;
* Juniper (Gold Member)&lt;br /&gt;
* [https://koansoftware.com/ KOAN sas]&lt;br /&gt;
* Lexmark&lt;br /&gt;
* LG (Silver Member)&lt;br /&gt;
* Microsoft&lt;br /&gt;
* StreamUnlimited Engineering GmbH&lt;br /&gt;
* Fujitsu&lt;br /&gt;
* BMW&lt;br /&gt;
* BMW Car IT&lt;br /&gt;
* National Instruments&lt;br /&gt;
* Dynamic Devices&lt;br /&gt;
* Axis&lt;br /&gt;
* Atlas Copco&lt;br /&gt;
* Kodak&lt;br /&gt;
* Smile&lt;br /&gt;
* General Electric&lt;br /&gt;
* Witekio&lt;br /&gt;
&lt;br /&gt;
= Products that use the Yocto Project =&lt;br /&gt;
&lt;br /&gt;
* BMW cars&lt;br /&gt;
* Comcast set top boxes&lt;br /&gt;
* LG TVs&lt;br /&gt;
* Lexmark Printers&lt;br /&gt;
* [https://www.streamunlimited.com/hardware-modules/ StreamUnlimited hardware modules for voice assistants and connected speakers]&lt;br /&gt;
* Vernier LabQuest&lt;br /&gt;
&lt;br /&gt;
= Projects that use the Yocto Project =&lt;br /&gt;
&lt;br /&gt;
* [https://www.automotivelinux.org/ Automotive Grade Linux (AGL)]&lt;br /&gt;
* Comcast RDK&lt;br /&gt;
* OpenBMC&lt;br /&gt;
* Windows Subsystem Linux (v1+v2)&lt;br /&gt;
* [https://oryx-linux.org/ Oryx Linux]&lt;br /&gt;
* [https://www.streamunlimited.com/stream-sdk/ StreamSDK for voice assistants and connected speakers]&lt;br /&gt;
* Nvidia vibrante SDK [https://docs.nvidia.com/drive/archive/4.1.8.0L/nvoss_docs/index.html]&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=SeasonOfDocs&amp;diff=73325</id>
		<title>SeasonOfDocs</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=SeasonOfDocs&amp;diff=73325"/>
		<updated>2020-04-29T11:47:25Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Yocto Project Season of Docs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Yocto Project Season of Docs =&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
The [http://yoctoproject.org Yocto Project] is an open-source project that delivers a set of tools that create operating system images for embedded Linux systems. The Yocto Project tools are based on the [http://www.openembedded.org/wiki/Main_Page OpenEmbedded] (OE) project, which uses the BitBake build tool, to construct complete Linux images. BitBake and OE are combined to form a reference build host known as Poky which includes the following [[Core Components|core components]]. This [https://www.youtube.com/watch?v=utZpKM7i5Z4 video] will help explain what it&#039;s all about.&lt;br /&gt;
&lt;br /&gt;
Richard Purdie, the Yocto Project&#039;s lead developer and Linux Foundation Fellow, considers documentation to be one of the cornerstones of this project. The quality and breadth of the documentation is one of the aspects of the project which is appreciated by and commented upon by our users. One of the very first members of that team to work on what became the Yocto Project 10 years ago was Scott Rifenbark, the project&#039;s tech writer. Sadly, Scott passed away early this year. The project is therefore at a cross roads with its documentation and with a need of new contributors and with that, the potential for new ideas and direction.&lt;br /&gt;
&lt;br /&gt;
==Google Season of Docs==&lt;br /&gt;
The Yocto Project is applying to the 2020 Google Season of Docs campaign. The deadline for the application is May 4th, 2020, and the results will be announced on May 11th, 2020. See https://developers.google.com/season-of-docs for additional information about this project.&lt;br /&gt;
&lt;br /&gt;
The following mailing list was created to discuss about the Season of Docs project: https://lists.yoctoproject.org/g/season-of-docs/.&lt;br /&gt;
&lt;br /&gt;
==Ideas==&lt;br /&gt;
&lt;br /&gt;
===Format Overhaul===&lt;br /&gt;
Currently the project&#039;s documentation is written in docbook, which is a natural choice for a documentation writer, but less so for, say, a developer. To make it as easy as possible for everyone to contribute to the documentation going forward, it would be a good time to convert the raw format of the documentation into a more modern format that is easier to learn. Hopefully this will encourage people who don&#039;t usually write project documentation to submit patches and updates. An experimentation has started to evaluate using Sphinx, see https://bugzilla.yoctoproject.org/show_bug.cgi?id=12970. In particular, there is significant potential to improve the way different versions of the manuals for different releases is handled and displayed to users through the website as what is there today is not working for users.&lt;br /&gt;
&lt;br /&gt;
===One Voice===&lt;br /&gt;
Previously the project&#039;s documentation was written with one voice. Contributors would suggest updates, and Scott would make sure the flow had a certain uniformity; as though it had all been written in one go, by one person. Moving forward, it&#039;s likely the project&#039;s documentation updates will likely come from many contributors. It would be great to have someone review the current documentation and future updates with an eye towards maintaining one voice. The project has no documentation of the style of the documentation so establishing some written guidelines for that &#039;voice&#039; may be part of this too.&lt;br /&gt;
&lt;br /&gt;
===Organization===&lt;br /&gt;
Currently the project&#039;s documentation is spread out in several places and formats. There are a number of manuals, some tutorials, a collection of wiki pages, and more. It would be great to see all this information collected together and organized in such a way as to make it easier for people new or experienced with the project to find exactly what they&#039;re looking for, quickly. Classify all existing documentation according to various attributes to identify areas that have weak or missing documentation. Fill any gaps in the documentation by creating new docs targeting specific users, tasks, or experience levels; or help motivate the right people to help generate the content. Work with the project&#039;s webmaster to present a unified location for all documentation.&lt;br /&gt;
&lt;br /&gt;
===Tips and Tricks===&lt;br /&gt;
The project started a [[TipsAndTricks]] project which generated a significant amount of ideas and the start of content which it would be great to turn into sections in the manuals and better document some of these topics. Since the manual sections were never generated, the project stalled but could be restarted and the community would be keen to help with content and ideas.&lt;br /&gt;
&lt;br /&gt;
===Update/Release Process===&lt;br /&gt;
Currently the documentation generation and updating process is quite manual. We believe that integration into our CI and release process is desirable and would be the best way to handle this going forward.&lt;br /&gt;
&lt;br /&gt;
===How-to/Tasks Documentation===&lt;br /&gt;
There was work started to convert some of the manual to a more task oriented/&#039;how-to&#039; approach. https://bugzilla.yoctoproject.org/show_bug.cgi?id=11630 has some details but there is potential to significantly expand the task information. It would be great to see the manuals reach this goal of having a much more complete &amp;quot;how-to&amp;quot; task section.&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=SeasonOfDocs&amp;diff=73324</id>
		<title>SeasonOfDocs</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=SeasonOfDocs&amp;diff=73324"/>
		<updated>2020-04-29T11:47:05Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Yocto Project Season of Docs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Yocto Project Season of Docs =&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
The [http://yoctoproject.org Yocto Project] is an open-source project that delivers a set of tools that create operating system images for embedded Linux systems. The Yocto Project tools are based on the [http://www.openembedded.org/wiki/Main_Page OpenEmbedded] (OE) project, which uses the BitBake build tool, to construct complete Linux images. BitBake and OE are combined to form a reference build host known as Poky which includes the following [[Core Components|core components]]. This [https://www.youtube.com/watch?v=utZpKM7i5Z4 video] will help explain what it&#039;s all about.&lt;br /&gt;
&lt;br /&gt;
Richard Purdie, the Yocto Project&#039;s lead developer and Linux Foundation Fellow, considers documentation to be one of the cornerstones of this project. The quality and breadth of the documentation is one of the aspects of the project which is appreciated by and commented upon by our users. One of the very first members of that team to work on what became the Yocto Project 10 years ago was Scott Rifenbark, the project&#039;s tech writer. Sadly, Scott passed away early this year. The project is therefore at a cross roads with its documentation and with a need of new contributors and with that, the potential for new ideas and direction.&lt;br /&gt;
&lt;br /&gt;
==Google Season of Docs==&lt;br /&gt;
The Yocto Project is applying to the 2020 Google Season of Docs campaign. The deadline for the application is May 4th, 2020, and the results will be announced on May 11th, 2020. See https://developers.google.com/season-of-docs for additional information about this project.&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
The following mailing list was created to discuss about the Season of Docs project: https://lists.yoctoproject.org/g/season-of-docs/.&lt;br /&gt;
&lt;br /&gt;
==Ideas==&lt;br /&gt;
&lt;br /&gt;
===Format Overhaul===&lt;br /&gt;
Currently the project&#039;s documentation is written in docbook, which is a natural choice for a documentation writer, but less so for, say, a developer. To make it as easy as possible for everyone to contribute to the documentation going forward, it would be a good time to convert the raw format of the documentation into a more modern format that is easier to learn. Hopefully this will encourage people who don&#039;t usually write project documentation to submit patches and updates. An experimentation has started to evaluate using Sphinx, see https://bugzilla.yoctoproject.org/show_bug.cgi?id=12970. In particular, there is significant potential to improve the way different versions of the manuals for different releases is handled and displayed to users through the website as what is there today is not working for users.&lt;br /&gt;
&lt;br /&gt;
===One Voice===&lt;br /&gt;
Previously the project&#039;s documentation was written with one voice. Contributors would suggest updates, and Scott would make sure the flow had a certain uniformity; as though it had all been written in one go, by one person. Moving forward, it&#039;s likely the project&#039;s documentation updates will likely come from many contributors. It would be great to have someone review the current documentation and future updates with an eye towards maintaining one voice. The project has no documentation of the style of the documentation so establishing some written guidelines for that &#039;voice&#039; may be part of this too.&lt;br /&gt;
&lt;br /&gt;
===Organization===&lt;br /&gt;
Currently the project&#039;s documentation is spread out in several places and formats. There are a number of manuals, some tutorials, a collection of wiki pages, and more. It would be great to see all this information collected together and organized in such a way as to make it easier for people new or experienced with the project to find exactly what they&#039;re looking for, quickly. Classify all existing documentation according to various attributes to identify areas that have weak or missing documentation. Fill any gaps in the documentation by creating new docs targeting specific users, tasks, or experience levels; or help motivate the right people to help generate the content. Work with the project&#039;s webmaster to present a unified location for all documentation.&lt;br /&gt;
&lt;br /&gt;
===Tips and Tricks===&lt;br /&gt;
The project started a [[TipsAndTricks]] project which generated a significant amount of ideas and the start of content which it would be great to turn into sections in the manuals and better document some of these topics. Since the manual sections were never generated, the project stalled but could be restarted and the community would be keen to help with content and ideas.&lt;br /&gt;
&lt;br /&gt;
===Update/Release Process===&lt;br /&gt;
Currently the documentation generation and updating process is quite manual. We believe that integration into our CI and release process is desirable and would be the best way to handle this going forward.&lt;br /&gt;
&lt;br /&gt;
===How-to/Tasks Documentation===&lt;br /&gt;
There was work started to convert some of the manual to a more task oriented/&#039;how-to&#039; approach. https://bugzilla.yoctoproject.org/show_bug.cgi?id=11630 has some details but there is potential to significantly expand the task information. It would be great to see the manuals reach this goal of having a much more complete &amp;quot;how-to&amp;quot; task section.&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=SeasonOfDocs&amp;diff=73323</id>
		<title>SeasonOfDocs</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=SeasonOfDocs&amp;diff=73323"/>
		<updated>2020-04-29T11:42:21Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Yocto Project Season of Docs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Yocto Project Season of Docs =&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
The [http://yoctoproject.org Yocto Project] is an open-source project that delivers a set of tools that create operating system images for embedded Linux systems. The Yocto Project tools are based on the [http://www.openembedded.org/wiki/Main_Page OpenEmbedded] (OE) project, which uses the BitBake build tool, to construct complete Linux images. BitBake and OE are combined to form a reference build host known as Poky which includes the following [[Core Components|core components]]. This [https://www.youtube.com/watch?v=utZpKM7i5Z4 video] will help explain what it&#039;s all about.&lt;br /&gt;
&lt;br /&gt;
Richard Purdie, the Yocto Project&#039;s lead developer and Linux Foundation Fellow, considers documentation to be one of the cornerstones of this project. The quality and breadth of the documentation is one of the aspects of the project which is appreciated by and commented upon by our users. One of the very first members of that team to work on what became the Yocto Project 10 years ago was Scott Rifenbark, the project&#039;s tech writer. Sadly, Scott passed away early this year. The project is therefore at a cross roads with its documentation and with a need of new contributors and with that, the potential for new ideas and direction.&lt;br /&gt;
&lt;br /&gt;
==Contact==&lt;br /&gt;
The following mailing list was created to discuss about the Season of Docs project: https://lists.yoctoproject.org/g/season-of-docs/.&lt;br /&gt;
&lt;br /&gt;
==Ideas==&lt;br /&gt;
&lt;br /&gt;
===Format Overhaul===&lt;br /&gt;
Currently the project&#039;s documentation is written in docbook, which is a natural choice for a documentation writer, but less so for, say, a developer. To make it as easy as possible for everyone to contribute to the documentation going forward, it would be a good time to convert the raw format of the documentation into a more modern format that is easier to learn. Hopefully this will encourage people who don&#039;t usually write project documentation to submit patches and updates. An experimentation has started to evaluate using Sphinx, see https://bugzilla.yoctoproject.org/show_bug.cgi?id=12970. In particular, there is significant potential to improve the way different versions of the manuals for different releases is handled and displayed to users through the website as what is there today is not working for users.&lt;br /&gt;
&lt;br /&gt;
===One Voice===&lt;br /&gt;
Previously the project&#039;s documentation was written with one voice. Contributors would suggest updates, and Scott would make sure the flow had a certain uniformity; as though it had all been written in one go, by one person. Moving forward, it&#039;s likely the project&#039;s documentation updates will likely come from many contributors. It would be great to have someone review the current documentation and future updates with an eye towards maintaining one voice. The project has no documentation of the style of the documentation so establishing some written guidelines for that &#039;voice&#039; may be part of this too.&lt;br /&gt;
&lt;br /&gt;
===Organization===&lt;br /&gt;
Currently the project&#039;s documentation is spread out in several places and formats. There are a number of manuals, some tutorials, a collection of wiki pages, and more. It would be great to see all this information collected together and organized in such a way as to make it easier for people new or experienced with the project to find exactly what they&#039;re looking for, quickly. Classify all existing documentation according to various attributes to identify areas that have weak or missing documentation. Fill any gaps in the documentation by creating new docs targeting specific users, tasks, or experience levels; or help motivate the right people to help generate the content. Work with the project&#039;s webmaster to present a unified location for all documentation.&lt;br /&gt;
&lt;br /&gt;
===Tips and Tricks===&lt;br /&gt;
The project started a [[TipsAndTricks]] project which generated a significant amount of ideas and the start of content which it would be great to turn into sections in the manuals and better document some of these topics. Since the manual sections were never generated, the project stalled but could be restarted and the community would be keen to help with content and ideas.&lt;br /&gt;
&lt;br /&gt;
===Update/Release Process===&lt;br /&gt;
Currently the documentation generation and updating process is quite manual. We believe that integration into our CI and release process is desirable and would be the best way to handle this going forward.&lt;br /&gt;
&lt;br /&gt;
===How-to/Tasks Documentation===&lt;br /&gt;
There was work started to convert some of the manual to a more task oriented/&#039;how-to&#039; approach. https://bugzilla.yoctoproject.org/show_bug.cgi?id=11630 has some details but there is potential to significantly expand the task information. It would be great to see the manuals reach this goal of having a much more complete &amp;quot;how-to&amp;quot; task section.&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=SeasonOfDocs&amp;diff=73315</id>
		<title>SeasonOfDocs</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=SeasonOfDocs&amp;diff=73315"/>
		<updated>2020-04-29T07:30:33Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Format Overhaul */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Yocto Project Season of Docs =&lt;br /&gt;
&lt;br /&gt;
==About==&lt;br /&gt;
The [http://yoctoproject.org Yocto Project] is an open-source project that delivers a set of tools that create operating system images for embedded Linux systems. The Yocto Project tools are based on the [http://www.openembedded.org/wiki/Main_Page OpenEmbedded] (OE) project, which uses the BitBake build tool, to construct complete Linux images. BitBake and OE are combined to form a reference build host known as Poky which includes the following [[Core Components|core components]]. This [https://www.youtube.com/watch?v=utZpKM7i5Z4 video] will help explain what it&#039;s all about.&lt;br /&gt;
&lt;br /&gt;
Richard Purdie, the Yocto Project&#039;s lead developer and Linux Foundation Fellow, considers documentation to be one of the cornerstones of this project. One of the very first members of that team to work on what became the Yocto Project 10 years ago was Scott Rifenbark, the project&#039;s tech writer. Sadly, Scott passed away early this year.&lt;br /&gt;
&lt;br /&gt;
==Ideas==&lt;br /&gt;
&lt;br /&gt;
===Format Overhaul===&lt;br /&gt;
Currently the project&#039;s documentation is written in docbook, which is a natural choice for a documentation writer, but less so for, say, a developer. To make it as easy as possible for everyone to contribute to the documentation going forward, it would be a good time to convert the raw format of the documentation into a more modern format that is easier to learn. Hopefully this will encourage people who don&#039;t usually write project documentation to submit patches and updates. An experimentation has started to evaluate using Sphinx, see https://bugzilla.yoctoproject.org/show_bug.cgi?id=12970.&lt;br /&gt;
&lt;br /&gt;
===One Voice===&lt;br /&gt;
Previously the project&#039;s documentation was written with one voice. Contributors would suggest updates, and Scott would make sure the flow had a certain uniformity; as though it had all been written in one go, by one person. Moving forward, it&#039;s likely the project&#039;s documentation updates will likely come from many contributors. It would be great to have someone review the current documentation and future updates with an eye towards maintaining one voice.&lt;br /&gt;
&lt;br /&gt;
===Organization===&lt;br /&gt;
Currently the project&#039;s documentation is spread out in several places and formats. There are a number of manuals, some tutorials, a collection of wiki pages, and more. It would be great to see all this information collected together and organized in such a way as to make it easier for people new or experienced with the project to find exactly what they&#039;re looking for, quickly. Classify all existing documentation according to various attributes to identify areas that have weak or missing documentation. Fill any gaps in the documentation by creating new docs targeting specific users, tasks, or experience levels; or help motivate the right people to help generate the content. Work with the project&#039;s webmaster to present a unified location for all documentation.&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=SeasonOfDocs&amp;diff=73279</id>
		<title>SeasonOfDocs</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=SeasonOfDocs&amp;diff=73279"/>
		<updated>2020-04-28T21:15:52Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: Created page with &amp;quot;= Yocto Project Season of Code =&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Yocto Project Season of Code =&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=User_talk:Joshua_Watt&amp;diff=68487</id>
		<title>User talk:Joshua Watt</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=User_talk:Joshua_Watt&amp;diff=68487"/>
		<updated>2020-02-05T17:45:49Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to &#039;&#039;Yocto Project&#039;&#039;!&#039;&#039;&#039;&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [[Help:Contents|help pages]].&lt;br /&gt;
Again, welcome and have fun! [[User:Nicolas Dechesne|Nicolas Dechesne]] ([[User talk:Nicolas Dechesne|talk]]) 09:45, 5 February 2020 (PST)&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=User:Joshua_Watt&amp;diff=68486</id>
		<title>User:Joshua Watt</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=User:Joshua_Watt&amp;diff=68486"/>
		<updated>2020-02-05T17:45:49Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: Creating user page for new user.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Embedded Software Engineer working for Garmin&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=User_talk:Mcfrisk&amp;diff=68485</id>
		<title>User talk:Mcfrisk</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=User_talk:Mcfrisk&amp;diff=68485"/>
		<updated>2020-02-05T17:45:30Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to &#039;&#039;Yocto Project&#039;&#039;!&#039;&#039;&#039;&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [[Help:Contents|help pages]].&lt;br /&gt;
Again, welcome and have fun! [[User:Nicolas Dechesne|Nicolas Dechesne]] ([[User talk:Nicolas Dechesne|talk]]) 09:45, 5 February 2020 (PST)&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=User:Mcfrisk&amp;diff=68484</id>
		<title>User:Mcfrisk</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=User:Mcfrisk&amp;diff=68484"/>
		<updated>2020-02-05T17:45:30Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: Creating user page for new user.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Embedded SW developer. Contributor to Yocto Project.&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=GSoC&amp;diff=68431</id>
		<title>GSoC</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=GSoC&amp;diff=68431"/>
		<updated>2020-02-04T22:00:20Z</updated>

		<summary type="html">&lt;p&gt;Nicolas Dechesne: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Yocto Project Summer of Code =&lt;br /&gt;
This is the Yocto Project specific page for [https://summerofcode.withgoogle.com/ Google Summer of Code].  The Yocto Project is applying to be a mentoring organization for 2020 and is recruiting mentors and students.&lt;br /&gt;
&lt;br /&gt;
Prospective mentors are requested to assist with the ideas page, add themselves to the list, join the dedicated [https://lists.yoctoproject.org/g/gsoc/ mailing list] and contact Nicolas Dechesne to be invited to be a mentor on Google&#039;s tool.&lt;br /&gt;
&lt;br /&gt;
Students are requested to engage possible mentors and may begin submitting applications for Yocto Project related projects starting now. This is the first time the project is engaging with Google Summer Of Code, and we are hoping it will be successful attempt. We recommend all students to engage with us now to help make your application strong!&lt;br /&gt;
&lt;br /&gt;
Here are some links to help students with their applications:&lt;br /&gt;
* [https://summerofcode.withgoogle.com/ GSoC home]&lt;br /&gt;
* [TBD Yocto Project GSoC page]&lt;br /&gt;
* [http://drupal.org/node/59037 Guide from drupal.org]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
* Current ideas page: [[GSoC/Ideas|Project Ideas for 2020]]&lt;br /&gt;
* [https://lists.yoctoproject.org/g/gsoc/ Yocto Project GSoC Mailing list]&lt;br /&gt;
&lt;br /&gt;
== Key Dates for 2020 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| January 14 19:00 UTC || Mentoring organizations can begin submitting applications to Google&lt;br /&gt;
|-&lt;br /&gt;
| February 5 19:00 UTC || Mentoring organization application deadline&lt;br /&gt;
|-&lt;br /&gt;
| February 5 - February 19 || Google program administrators review organization applications&lt;br /&gt;
|-&lt;br /&gt;
| February 20 18:00 UTC || List of accepted mentoring organizations published&lt;br /&gt;
|-&lt;br /&gt;
| February 20 - March 16 || Potential student participants discuss application ideas with mentoring organizations&lt;br /&gt;
|-&lt;br /&gt;
| March 16 18:00 UTC || Student application period begins&lt;br /&gt;
|-&lt;br /&gt;
| March 31 18:00 UTC || Student application deadline&lt;br /&gt;
|-&lt;br /&gt;
| April 14 18:00 UTC || Student slot requests due from Org Admins&lt;br /&gt;
|-&lt;br /&gt;
| April 23 18:00 UTC || Student Project selections due from Org Admins&lt;br /&gt;
|-&lt;br /&gt;
| April 27 18:00 UTC || Accepted student projects announced&lt;br /&gt;
|-&lt;br /&gt;
| Community Bonding Period || Students get to know mentors, read documentation, get up to speed to begin working on their projects&lt;br /&gt;
|-&lt;br /&gt;
| May 18 || Coding officially begins!&lt;br /&gt;
|-&lt;br /&gt;
| June 15 18:00 UTC || Mentors and students can begin submitting Phase 1 evaluations&lt;br /&gt;
|-&lt;br /&gt;
| June 19 18:00 UTC || Phase 1 Evaluation deadline&lt;br /&gt;
|-&lt;br /&gt;
| Work Period || Students work on their project with guidance from Mentors&lt;br /&gt;
|-&lt;br /&gt;
| July 13 18:00 UTC || Mentors and students can begin submitting Phase 2 evaluations&lt;br /&gt;
|-&lt;br /&gt;
| July 17 18:00 UTC || Phase 2 Evaluation deadline&lt;br /&gt;
|-&lt;br /&gt;
| Work Period || Students continue working on their project with guidance from Mentors&lt;br /&gt;
|-&lt;br /&gt;
| August 10 - 17 18:00 UTC || Final week: Students submit their final work product and their final mentor evaluation&lt;br /&gt;
|-&lt;br /&gt;
| August 17 - 24 18:00 UTC || Mentors submit final student evaluations&lt;br /&gt;
|-&lt;br /&gt;
| August 25 || Final results of Google Summer of Code 2020 announced&lt;br /&gt;
|-&lt;br /&gt;
| October || Mentor Summit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://lists.yoctoproject.org/g/gsoc/ Yocto Project GSoC Mailing list]&lt;br /&gt;
* [[GSoC/Ideas|Summer of Code Ideas]]&lt;br /&gt;
* [[GSoC/Application|Our project proposal guidelines]]&lt;br /&gt;
* Our application to become a mentoring organization. [[GSoC/Application/2020|Application]]&lt;br /&gt;
* [http://video.fosdem.org/2009/maintracks/google_soc.xvid.avi FOSDEM video from 2009 about the Summer of Code]&lt;/div&gt;</summary>
		<author><name>Nicolas Dechesne</name></author>
	</entry>
</feed>