Patrick Georgi has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/31127
Change subject: Documentation: describe coreboot on the dev site's landing page ......................................................................
Documentation: describe coreboot on the dev site's landing page
Get some content on the documentation site's front page. Some links still need to be filled in with content yet to be written, but we need to start somewhere.
Change-Id: I7f36234ef783e041a44590858bb75a69b96ee668 Signed-off-by: Patrick Georgi pgeorgi@google.com --- M Documentation/index.md 1 file changed, 134 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/27/31127/1
diff --git a/Documentation/index.md b/Documentation/index.md index 9fdb0dc..7498caa 100644 --- a/Documentation/index.md +++ b/Documentation/index.md @@ -5,6 +5,140 @@ [Documentation](https://review.coreboot.org/cgit/coreboot.git/tree/Documentation) directory in the source code.
+## Purpose of coreboot + +coreboot is a project to develop open source firmware for various +architectures. Its design philosophy is to do the bare minimum necessary to +ensure that hardware is usable and then pass control to a different program +that called the _payload_. + +### Separation of concerns + +The payload can then provide user interfaces, file system drivers, +various policies etc. to load the OS. Through this separation of concerns +coreboot maximizes reusability of the complicated and fundamental hardware +initialization routines across many different use cases, no matter if +they provide standard interfaces or entirely custom boot flows. + +Popular [payloads]() in use with coreboot are SeaBIOS, which provides PCBIOS +services, Tianocore, which provides UEFI services, GRUB2, the bootloader +used by many Linux distributions, or depthcharge, a custom boot loader +on Chromebooks. + +### No resident services (if possible) + +Ideally coreboot completely hands over control to the payload with no +piece of coreboot remaining resident in the system, or even available +for callback. Given the reality of contemporary computer design, +there's often a small piece that survives for the whole runtime of +the computer. It runs in a highly privileged CPU mode (eg SMM on x86) +and provides some limited amount of services to the OS. But here, too, +coreboot aims to keep everything at the minimum possible, both in scope +(eg. services provided) and code size. + +### No specification of its own + +coreboot uses a very minimal interface to the payload, and otherwise +doesn't impose any standards on the ecosystem. This is made possible by +separating out concerns (interfaces and resident services are delegated +to the payload), but it's also a value that is deeply ingrained in the +project. We fearlessly rip out parts of the architecture and remodel it +when a better way of doing the same was identified. + +### One tree for everything + +Another difference to various other firmware projects is that we try +to avoid fragmentation: the traditional development model of firmware +is one of "set and forget" in which some code base is copied, adapted +for the purpose at hands, shipped and only touched again if there's an +important fix to do. + +All newer development happens on another copy of some code base without +flowing back to any older copy, and so normally there's a huge amount +of fragmentation. + +In coreboot, we try to keep everything in a single source tree, and +lift up older devices when we change something fundamentally. That way, +new and old devices benefit alike from new development in the common parts. + +There's a downside to that: Some devices might have no maintainer anymore +who could ensure that coreboot is still functional for them after a big +rework, or maybe a rework even requires knowledge that doesn't exist +anymore within the project (for example because the developer moved on +to do something else). + +In this case, we announce the deprecation of the device and defer the big +rework until the deprecation period passed, typically 6-12 months. This +gives interested developers a chance to step in and bring devices up to +latest standards. + +While without this deprecation mechanism we could inflate the number +of supported devices (probably 300+), only a tiny fraction of them +would even work, which helps nobody. + +## Scope of the coreboot project + +coreboot as a project is closer to the Linux kernel than to most +user level programs. One place where this becomes apparent is the +distribution mechanism: The project itself only provides source code +(plus redistributable binaries for parts that we haven't managed to open +up) and does not ship ready-to-install coreboot-based firmware binaries. + +There are various [distributions](), some shipping coreboot with their hardware +(eg. Purism or Chromebooks), others providing after-market images for +various devices (eg. Libreboot, MrChromebox). + +If you want to use coreboot on your system, that's great! + +Please note that the infrastructure around coreboot.org is built for +development purposes. We gladly help out users through our communication +channels, but we also expect a "firmware developer mindset": If compiling +your own firmware and, at some point, recovering from a bad flash by +hooking wires onto chips in your computer sounds scary to you, you're +right, as it is. + +If that's _way_ beyond your comfort zone, consider looking into the +various distributions, as they typically provide pre-tested binaries +which massively reduces the risk that the binary you write to flash is +one that won't boot the system (with the consequence that to get it to work +again, you'll need to attach various tools to various chips) + +## The coreboot community + +If you're interested in getting your hands dirty (incl. potentially wiring +up an external flasher to your computer), you've come to the right place! + +We have various [virtual sites]() where we discuss and coordinate +our activities, review patches, and help out each other. To +help promote a positive atmosphere, we established a [Code of +Conduct](code_of_conduct.md). We invested a lot of time to balance it out, +so please keep it in mind when engaging with the coreboot community. + +Every now and then, coreboot is present in one way or another at +[conferences](). If you're around, come and say hello! + +## Getting the source code + +coreboot is primarily developed in the +[git](https://review.coreboot.org/cgit/coreboot.git) DSCM, using +[Gerrit](https://review.coreboot.org) to manage contributions and +code review. + +In general we try to keep the `master` branch in the repository functional +for all hardware we support. So far, the only guarantee we can make is +that the master branch will (nearly) always build for all boards in a +standard configuration. + +However we're continually working on improvements to our infrastructure to +get better in that respect, eg by setting up boot testing facilities. This +is obviously more complex than regular integration testing, so progress +is slow. + +We also schedule two source code releases every year, around April and +October. These releases see some very limited testing and mostly serve +as synchronization points for deprecation notices and for other projects +such as external distributions. + Contents:
* [Getting Started](getting_started/index.md)
Patrick Rudolph has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/31127 )
Change subject: Documentation: describe coreboot on the dev site's landing page ......................................................................
Patch Set 2: Code-Review+1
(1 comment)
https://review.coreboot.org/#/c/31127/2/Documentation/index.md File Documentation/index.md:
https://review.coreboot.org/#/c/31127/2/Documentation/index.md@10 PS2, Line 10: coreboot is a project to develop open source firmware for various boot firmware or firmware for early hardware initialization
Angel Pons has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/31127 )
Change subject: Documentation: describe coreboot on the dev site's landing page ......................................................................
Patch Set 2: Code-Review+1
(5 comments)
Looks good, save for a few nits.
https://review.coreboot.org/#/c/31127/2/Documentation/index.md File Documentation/index.md:
https://review.coreboot.org/#/c/31127/2/Documentation/index.md@13 PS2, Line 13: that Please remove
https://review.coreboot.org/#/c/31127/2/Documentation/index.md@23 PS2, Line 23: PCBIOS Um?
https://review.coreboot.org/#/c/31127/2/Documentation/index.md@25 PS2, Line 25: loader : on maybe "loader *used on* Chromebooks"
https://review.coreboot.org/#/c/31127/2/Documentation/index.md@123 PS2, Line 123: DSCM What does this mean? Distributed Source Code Management?
https://review.coreboot.org/#/c/31127/2/Documentation/index.md@138 PS2, Line 138: These releases see some very limited testing and mostly serve : as synchronization points for deprecation notices and for other projects : such as external distributions. I really like this sentence.
Patrick Georgi has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/31127 )
Change subject: Documentation: describe coreboot on the dev site's landing page ......................................................................
Patch Set 2:
(6 comments)
This doc needs more revision, and more docs to accompany it. For example it's pointing to non-existing payload docs
https://review.coreboot.org/#/c/31127/2/Documentation/index.md File Documentation/index.md:
https://review.coreboot.org/#/c/31127/2/Documentation/index.md@10 PS2, Line 10: coreboot is a project to develop open source firmware for various
boot firmware […]
Done
https://review.coreboot.org/#/c/31127/2/Documentation/index.md@13 PS2, Line 13: that
Please remove
Done
https://review.coreboot.org/#/c/31127/2/Documentation/index.md@23 PS2, Line 23: PCBIOS
Um?
or IBMBIOS. "The x86 software interrupt hardware abstraction layer that looks like CP/M's" ;) If you have any more descriptive shorthand, I'm all ears!
https://review.coreboot.org/#/c/31127/2/Documentation/index.md@25 PS2, Line 25: loader : on
maybe "loader *used on* Chromebooks"
Done
https://review.coreboot.org/#/c/31127/2/Documentation/index.md@123 PS2, Line 123: DSCM
What does this mean? Distributed Source Code Management?
yes
https://review.coreboot.org/#/c/31127/2/Documentation/index.md@138 PS2, Line 138: These releases see some very limited testing and mostly serve : as synchronization points for deprecation notices and for other projects : such as external distributions.
I really like this sentence.
I'm curious: why?
Hello Patrick Rudolph, Angel Pons, build bot (Jenkins),
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/31127
to look at the new patch set (#3).
Change subject: Documentation: describe coreboot on the dev site's landing page ......................................................................
Documentation: describe coreboot on the dev site's landing page
Get some content on the documentation site's front page. Some links still need to be filled in with content yet to be written, but we need to start somewhere.
Change-Id: I7f36234ef783e041a44590858bb75a69b96ee668 Signed-off-by: Patrick Georgi pgeorgi@google.com --- M Documentation/index.md 1 file changed, 134 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/27/31127/3
Angel Pons has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/31127 )
Change subject: Documentation: describe coreboot on the dev site's landing page ......................................................................
Patch Set 3: Code-Review+1
(3 comments)
https://review.coreboot.org/#/c/31127/2/Documentation/index.md File Documentation/index.md:
https://review.coreboot.org/#/c/31127/2/Documentation/index.md@23 PS2, Line 23: PCBIOS
or IBMBIOS. "The x86 software interrupt hardware abstraction layer that looks like CP/M's" ;) […]
Ack, I'm not used to seeing it written in a single word
https://review.coreboot.org/#/c/31127/2/Documentation/index.md@123 PS2, Line 123: DSCM
yes
Ack
https://review.coreboot.org/#/c/31127/2/Documentation/index.md@138 PS2, Line 138: These releases see some very limited testing and mostly serve : as synchronization points for deprecation notices and for other projects : such as external distributions.
I'm curious: why?
<IMHO> It shows how our concept of "release" differs from the usual meaning. Most of the releases I see on the internet are (or try to be) stable versions for anyone to use, whereas master is considered unstable. Here, however, the releases are merely a tag on a specific commit, and there's no further development on them. So, if a problem is discovered after a release has been done, it is either not corrected at all on said release (usually for minor bugs) or, if a bug is severe, the release has to be redone (see v4.8.1). coreboot master may see breakage from time to time, but it usually works. </IMHO>
I may have written nonsense above. If so, please let me know. Thanks.
Hello Patrick Rudolph, Angel Pons, build bot (Jenkins),
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/31127
to look at the new patch set (#4).
Change subject: Documentation: describe coreboot on the dev site's landing page ......................................................................
Documentation: describe coreboot on the dev site's landing page
Get some content on the documentation site's front page. Some links still need to be filled in with content yet to be written, but we need to start somewhere.
Change-Id: I7f36234ef783e041a44590858bb75a69b96ee668 Signed-off-by: Patrick Georgi pgeorgi@google.com --- M Documentation/index.md 1 file changed, 136 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/27/31127/4
Patrick Rudolph has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/31127 )
Change subject: Documentation: describe coreboot on the dev site's landing page ......................................................................
Patch Set 4: Code-Review+2
Hello Patrick Rudolph, Angel Pons, build bot (Jenkins),
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/31127
to look at the new patch set (#6).
Change subject: Documentation: describe coreboot on the dev site's landing page ......................................................................
Documentation: describe coreboot on the dev site's landing page
Get some content on the documentation site's front page. Some links still need to be filled in with content yet to be written, but we need to start somewhere.
Change-Id: I7f36234ef783e041a44590858bb75a69b96ee668 Signed-off-by: Patrick Georgi pgeorgi@google.com --- M Documentation/index.md 1 file changed, 143 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/27/31127/6
Patrick Georgi has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/31127 )
Change subject: Documentation: describe coreboot on the dev site's landing page ......................................................................
Patch Set 6:
(1 comment)
https://review.coreboot.org/#/c/31127/2/Documentation/index.md File Documentation/index.md:
https://review.coreboot.org/#/c/31127/2/Documentation/index.md@138 PS2, Line 138: These releases see some very limited testing and mostly serve : as synchronization points for deprecation notices and for other projects : such as external distributions.
<IMHO> […]
That's a good point. I put that part in a separate section and expanded a bit on that topic.
Angel Pons has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/31127 )
Change subject: Documentation: describe coreboot on the dev site's landing page ......................................................................
Patch Set 6: Code-Review+1
(4 comments)
Looks pretty good.
https://review.coreboot.org/#/c/31127/6/Documentation/index.md File Documentation/index.md:
https://review.coreboot.org/#/c/31127/6/Documentation/index.md@23 PS6, Line 23: payloads Missing reference/file?
https://review.coreboot.org/#/c/31127/6/Documentation/index.md@37 PS6, Line 37: eg. e.g.
https://review.coreboot.org/#/c/31127/6/Documentation/index.md@134 PS6, Line 134: Maybe add a comma
https://review.coreboot.org/#/c/31127/6/Documentation/index.md@135 PS6, Line 135: eg e.g.
Paul Menzel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/31127 )
Change subject: Documentation: describe coreboot on the dev site's landing page ......................................................................
Patch Set 6: Code-Review+1
(5 comments)
Nice write-up.
https://review.coreboot.org/#/c/31127/6/Documentation/index.md File Documentation/index.md:
https://review.coreboot.org/#/c/31127/6/Documentation/index.md@23 PS6, Line 23: payloads
Missing reference/file?
Reading the commit message, it still needs to be written in follow-up commits.
https://review.coreboot.org/#/c/31127/6/Documentation/index.md@34 PS6, Line 34: eg e.g.
https://review.coreboot.org/#/c/31127/6/Documentation/index.md@88 PS6, Line 88: eg. e.g.
https://review.coreboot.org/#/c/31127/6/Documentation/index.md@89 PS6, Line 89: eg. e.g.
https://review.coreboot.org/#/c/31127/6/Documentation/index.md@125 PS6, Line 125: DSCM I’d spell it out.
Hello Patrick Rudolph, Angel Pons, Paul Menzel, build bot (Jenkins),
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/31127
to look at the new patch set (#7).
Change subject: Documentation: describe coreboot on the dev site's landing page ......................................................................
Documentation: describe coreboot on the dev site's landing page
Get some content on the documentation site's front page.
Change-Id: I7f36234ef783e041a44590858bb75a69b96ee668 Signed-off-by: Patrick Georgi pgeorgi@google.com --- M Documentation/index.md 1 file changed, 143 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/27/31127/7
Patrick Georgi has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/31127 )
Change subject: Documentation: describe coreboot on the dev site's landing page ......................................................................
Patch Set 7:
(8 comments)
Many thanks for the reviews!
https://review.coreboot.org/#/c/31127/6/Documentation/index.md File Documentation/index.md:
https://review.coreboot.org/#/c/31127/6/Documentation/index.md@23 PS6, Line 23: payloads
Reading the commit message, it still needs to be written in follow-up commits.
That's right, but I added something now (and removed the blurb from the commit message).
https://review.coreboot.org/#/c/31127/6/Documentation/index.md@34 PS6, Line 34: eg
e.g.
Done
https://review.coreboot.org/#/c/31127/6/Documentation/index.md@37 PS6, Line 37: eg.
e.g.
Done
https://review.coreboot.org/#/c/31127/6/Documentation/index.md@88 PS6, Line 88: eg.
e.g.
Done
https://review.coreboot.org/#/c/31127/6/Documentation/index.md@89 PS6, Line 89: eg.
e.g.
Done
https://review.coreboot.org/#/c/31127/6/Documentation/index.md@125 PS6, Line 125: DSCM
I’d spell it out.
I went for "version control system" - too many names for that kind of software :-)
https://review.coreboot.org/#/c/31127/6/Documentation/index.md@134 PS6, Line 134:
Maybe add a comma
Done
https://review.coreboot.org/#/c/31127/6/Documentation/index.md@135 PS6, Line 135: eg
e.g.
Done
Hello Patrick Rudolph, Angel Pons, Paul Menzel, build bot (Jenkins),
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/31127
to look at the new patch set (#8).
Change subject: Documentation: describe coreboot on the dev site's landing page ......................................................................
Documentation: describe coreboot on the dev site's landing page
Get some content on the documentation site's front page.
Change-Id: I7f36234ef783e041a44590858bb75a69b96ee668 Signed-off-by: Patrick Georgi pgeorgi@google.com --- M Documentation/index.md 1 file changed, 144 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/27/31127/8
Angel Pons has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/31127 )
Change subject: Documentation: describe coreboot on the dev site's landing page ......................................................................
Patch Set 8: Code-Review+1
Arthur Heymans has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/31127 )
Change subject: Documentation: describe coreboot on the dev site's landing page ......................................................................
Patch Set 9: Code-Review+1
(1 comment)
Very nice!
https://review.coreboot.org/#/c/31127/9/Documentation/index.md File Documentation/index.md:
https://review.coreboot.org/#/c/31127/9/Documentation/index.md@84 PS9, Line 84: plus redistributable binaries maybe emphasize that those are strictly speaking not part of the project, but that we do maintain a convenient way of obtaining them?
Hello Patrick Rudolph, Angel Pons, Arthur Heymans, Paul Menzel, build bot (Jenkins),
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/31127
to look at the new patch set (#10).
Change subject: Documentation: describe coreboot on the dev site's landing page ......................................................................
Documentation: describe coreboot on the dev site's landing page
Get some content on the documentation site's front page.
Change-Id: I7f36234ef783e041a44590858bb75a69b96ee668 Signed-off-by: Patrick Georgi pgeorgi@google.com --- M Documentation/index.md 1 file changed, 153 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/27/31127/10
Patrick Georgi has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/31127 )
Change subject: Documentation: describe coreboot on the dev site's landing page ......................................................................
Patch Set 10:
(1 comment)
https://review.coreboot.org/#/c/31127/9/Documentation/index.md File Documentation/index.md:
https://review.coreboot.org/#/c/31127/9/Documentation/index.md@84 PS9, Line 84: plus redistributable binaries
maybe emphasize that those are strictly speaking not part of the project, but that we do maintain a […]
I revised it. Better?
Arthur Heymans has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/31127 )
Change subject: Documentation: describe coreboot on the dev site's landing page ......................................................................
Patch Set 10: Code-Review+2
Angel Pons has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/31127 )
Change subject: Documentation: describe coreboot on the dev site's landing page ......................................................................
Patch Set 10: Code-Review+2
Patrick Georgi has submitted this change and it was merged. ( https://review.coreboot.org/c/coreboot/+/31127 )
Change subject: Documentation: describe coreboot on the dev site's landing page ......................................................................
Documentation: describe coreboot on the dev site's landing page
Get some content on the documentation site's front page.
Change-Id: I7f36234ef783e041a44590858bb75a69b96ee668 Signed-off-by: Patrick Georgi pgeorgi@google.com Reviewed-on: https://review.coreboot.org/c/31127 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Arthur Heymans arthur@aheymans.xyz Reviewed-by: Angel Pons th3fanbus@gmail.com --- M Documentation/index.md 1 file changed, 153 insertions(+), 0 deletions(-)
Approvals: build bot (Jenkins): Verified Arthur Heymans: Looks good to me, approved Angel Pons: Looks good to me, approved
diff --git a/Documentation/index.md b/Documentation/index.md index c5bfa9b..433edfa 100644 --- a/Documentation/index.md +++ b/Documentation/index.md @@ -5,6 +5,159 @@ [Documentation](https://review.coreboot.org/cgit/coreboot.git/tree/Documentation) directory in the source code.
+## Purpose of coreboot + +coreboot is a project to develop open source boot firmware for various +architectures. Its design philosophy is to do the bare minimum necessary to +ensure that hardware is usable and then pass control to a different program +called the _payload_. + +### Separation of concerns + +The payload can then provide user interfaces, file system drivers, +various policies etc. to load the OS. Through this separation of concerns +coreboot maximizes reusability of the complicated and fundamental hardware +initialization routines across many different use cases, no matter if +they provide standard interfaces or entirely custom boot flows. + +Popular [payloads](payloads.md) in use with coreboot are SeaBIOS, +which provides PCBIOS services, Tianocore, which provides UEFI services, +GRUB2, the bootloader used by many Linux distributions, or depthcharge, +a custom boot loader used on Chromebooks. + +### No resident services (if possible) + +Ideally coreboot completely hands over control to the payload with no +piece of coreboot remaining resident in the system, or even available +for callback. Given the reality of contemporary computer design, +there's often a small piece that survives for the whole runtime of +the computer. It runs in a highly privileged CPU mode (e.g. SMM on x86) +and provides some limited amount of services to the OS. But here, too, +coreboot aims to keep everything at the minimum possible, both in scope +(e.g. services provided) and code size. + +### No specification of its own + +coreboot uses a very minimal interface to the payload, and otherwise +doesn't impose any standards on the ecosystem. This is made possible by +separating out concerns (interfaces and resident services are delegated +to the payload), but it's also a value that is deeply ingrained in the +project. We fearlessly rip out parts of the architecture and remodel it +when a better way of doing the same was identified. + +### One tree for everything + +Another difference to various other firmware projects is that we try +to avoid fragmentation: the traditional development model of firmware +is one of "set and forget" in which some code base is copied, adapted +for the purpose at hands, shipped and only touched again if there's an +important fix to do. + +All newer development happens on another copy of some code base without +flowing back to any older copy, and so normally there's a huge amount +of fragmentation. + +In coreboot, we try to keep everything in a single source tree, and +lift up older devices when we change something fundamentally. That way, +new and old devices benefit alike from new development in the common parts. + +There's a downside to that: Some devices might have no maintainer anymore +who could ensure that coreboot is still functional for them after a big +rework, or maybe a rework even requires knowledge that doesn't exist +anymore within the project (for example because the developer moved on +to do something else). + +In this case, we announce the deprecation of the device and defer the big +rework until the deprecation period passed, typically 6-12 months. This +gives interested developers a chance to step in and bring devices up to +latest standards. + +While without this deprecation mechanism we could inflate the number +of supported devices (probably 300+), only a tiny fraction of them +would even work, which helps nobody. + +## Scope of the coreboot project + +coreboot as a project is closer to the Linux kernel than to most +user level programs. One place where this becomes apparent is the +distribution mechanism: The project itself only provides source code +and does not ship ready-to-install coreboot-based firmware binaries. + +What the project distributes, even if - strictly speaking - it's not +part of the project, is a collection of vendor binaries (that we call +"blobs") that are redistributable. They cover the parts of hardware init +that we haven't managed to open up, and while some hardware requires them, +there's still hardware that can boot without any such binary components. + +The build system can integrate them into the build automatically if +required, but that requires explicit opt-in and downloads a separate +repository to ensure that the distinction remains clear. + +There are various [distributions](distributions.md), some shipping +coreboot with their hardware (e.g. Purism or Chromebooks), others +providing after-market images for various devices (e.g. Libreboot, +MrChromebox). + +If you want to use coreboot on your system, that's great! + +Please note that the infrastructure around coreboot.org is built for +development purposes. We gladly help out users through our communication +channels, but we also expect a "firmware developer mindset": If compiling +your own firmware and, at some point, recovering from a bad flash by +hooking wires onto chips in your computer sounds scary to you, you're +right, as it is. + +If that's _way_ beyond your comfort zone, consider looking into the +various distributions, as they typically provide pre-tested binaries +which massively reduces the risk that the binary you write to flash is +one that won't boot the system (with the consequence that to get it to work +again, you'll need to attach various tools to various chips) + +## The coreboot community + +If you're interested in getting your hands dirty (incl. potentially wiring +up an external flasher to your computer), you've come to the right place! + +We have various [forums](community/forums.md) where we discuss and coordinate +our activities, review patches, and help out each other. To +help promote a positive atmosphere, we established a [Code of +Conduct](community/code_of_conduct.md). We invested a lot of time +to balance it out, so please keep it in mind when engaging with the +coreboot community. + +Every now and then, coreboot is present in one way or another at +[conferences](community/conferences.md). If you're around, come and +say hello! + +## Getting the source code + +coreboot is primarily developed in the +[git](https://review.coreboot.org/cgit/coreboot.git) version control +system, using [Gerrit](https://review.coreboot.org) to manage +contributions and code review. + +In general we try to keep the `master` branch in the repository functional +for all hardware we support. So far, the only guarantee we can make is +that the master branch will (nearly) always build for all boards in a +standard configuration. + +However, we're continually working on improvements to our infrastructure to +get better in that respect, e.g. by setting up boot testing facilities. This +is obviously more complex than regular integration testing, so progress +is slow. + +### What our releases mean + +We also schedule two source code releases every year, around April and +October. These releases see some very limited testing and mostly serve +as synchronization points for deprecation notices and for other projects +such as external distributions. + +This approach and terminology differs somewhat from how other projects handle +releases where releases are well-tested artifacts and the development +repository tends to be unstable. The "rolling release" model of some projects, +for example OpenBSD, is probably the closest cousin of our approach. + Contents:
* [Getting Started](getting_started/index.md)