# Documentation Ideas This section collects ideas to improve the coreboot documentation and should serve as a pool of ideas for people who want to improve the current documentation status of coreboot. The main purpose of this document is to gather documentation ideas for technical writers of the seasons of docs. Nevertheless anyone who wants to help improving the current documentation situation can take one of the projects. Each entry should outline what would be done, the benefit it brings to the project, the pre-requisites, both in knowledge and parts. They should also list people interested in supporting people who want to work on them. ## Restructure Existing Documentation The goal is to improve the user experience and structure the documentation more logically. The current situation makes it very hard for beginners, but also for experienced developers to find anything in the coreboot documentation. One possible approach to restructure the documentation is to split it up such that we divide the group of users into: * (End-)users Most probably users which _just_ want to use coreboot as fast as possible. This section should include guidelines on how to build coreboot, how to flash coreboot and also which hardware is currently supported. * Developers This section should more focus on the developer side-of-view. This section would include how to get started developing coreboot, explaining the basic concepts of coreboot and also give guideance on how to proceed after the first steps. * Knowledge area This section is very tighlight coupled to the developer section and might be merged into it. The _Knowledge area_ can give a technical deep dive on various drivers, technologies, etc. * Community area This section gives some room for the community: Youtube channels, conferences, meetups, forums, chat, etc. A [first approach](https://review.coreboot.org/c/coreboot/+/40327) has already been made here and might be a basis for the work. Most of the documentation is already there, but scattered around the documentation folder. ### Requirements * Understanding on how a different groups of users might use the documentation area * Basic understanding of how coreboot works (Can be worked out _on-the-fly_) ### Mentors * christian.walter@9elements.com * TBD ## Update Howto/Guides An important part to involve new people in the project, either as developer or as enduser, are guides and how-to's. There are already some guides which need to be updated to work, and could also be extended to multiple platforms, like Fedora or Arch-Linux. Also guidance for setting up coreboot with a Windows environment would be helpful. In addition, the vboot guidance needs an update/extensions, that the security features within coreboot can be used by non-technical people. For developers, how to debug coreboot and various debugging techniques need documentation. ### Requirements * Knowledge of virtual machines, how to install different OSs and set up the toolchain on different operating systems * Knowledge of debugging tools like gdb ### Mentors * christian.walter@9elements.com * TBD ## How to Support a New Board coreboot benefits from running on as many platforms as possible. Therefore we want to encourage new developers on porting existing hardware to coreboot. Guidance for those new developers need to be made such that they are able to take the first steps supporting new mainboards, when the SoC support already exists. There should be a 'how-to' guide for this. Also what are common problems and how to solve those. ### Requirements * Knowledge of how to add support for a new mainboard in coreboot ### Mentors * christian.walter@9elements.com * TBD ## Payloads The current documentation of the payloads is not very effective. There should be more detailed documentation on the payloads that can be selected via the make menuconfig within coreboot. Also the use-cases should be described in more detail: When to use which payload? What are the benefits of using payload X over Y in a specific use-case ? In addition it should be made clear how additional functionality e.g. extend LinuxBoot with more commands, can be achieved. ### Requirements * Basic knowledge of the supported payloads like SeaBIOS, TinanoCore, LinuxBoot, GRUB, Linux, ... ### Mentors * christian.walter@9elements.com * TBD ## coreboot Util Documentation coreboot inherits a variaty of utilities. The current documentation only provides a "one-liner" as an explanation. The list of util should be updated with a more detailed explanation where possible. Also more "in-depths" explanations should be added with examples if possible. ### Requirements * coreboot utilities ### Mentors * christian.walter@9elements.com * TBD ## CBMEM Developer Guide CBMEM is the API that provides memory buffers for the use at OS runtime. It's a core component and thus should be documented. Dos, don'ts and pitfalls when using CBMEM. This "in-depth" guide is clearly for developers. ### Requirements * Deep understanding of coreboot's internals ### Mentors * TBD * TBD ## CBFS Developer Guide CBFS is the in-flash filesystem that is used by coreboot. It's a core component and thus should be documented. Update the existing CBFS.txt that still shows version 1 of the implementation. A [first approach](https://review.coreboot.org/c/coreboot/+/33663/2) has been made here. This "in-depth" guide is clearly for developers. ### Requirements * Deep understanding of coreboot's internals ### Mentors * TBD * TBD ## Region API Developer Guide The region API is used by coreboot when dealing with memory mapped objects that can be split into chunks. It's a core component and thus should be documented. This "in-depth" guide is clearly for developers. ### Requirements * Deep understanding of coreboot's internals ### Mentors * TBD * TBD