From 608dde2adfe2216ca6676fa4409d2ccced402ad5 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Tue, 3 Mar 2026 14:21:06 +0000 Subject: [PATCH] [doc] Add contribution guidelines Signed-off-by: Michael Brown --- CONTRIBUTING.md | 115 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..ac0a1bd8d --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,115 @@ +Contributing to iPXE +==================== + +Thank you for wanting to help to improve iPXE! Your contributions can +help to make the software better for everyone. + +iPXE is [licensed][licence] under the GNU GPL and is 100% open source +software. There are no "premium edition" versions, no in-app +advertisements, no hidden costs. The version that you get to download +and use forever for free is the definitive and only version of the +software. + +There are several ways in which you can contribute: + +Bug reports +----------- + +Good quality [bug reports][issues] are always extremely welcome. +Please describe exactly what you are trying to achieve, and the exact +problem that you are encountering. Include a screenshot or a +transcription of the output from iPXE (including the exact text of any +error messages). + +If you are not sure whether or not your issue is due to a bug in iPXE, +please consider creating a [discussion][discussions] instead of an +issue. + +Bug fix pull requests +--------------------- + +Short and simple [pull requests][pulls] that fix a known [bug][issues] +are always welcome. Please ensure that your pull request allows +maintainer edits, since there is a 99% chance that it will need to be +rebased, reworded, or otherwise modified before being merged. + +Minor feature pull requests +--------------------------- + +A small [pull request][pulls] that adds a very minor feature has some +chance of being merged. + +As a bootloader, iPXE is an unusual programming environment: code size +is extremely small (measured in bytes or kilobytes), you absolutely +cannot use any external libraries, heap size is very limited and you +should expect memory allocations to fail, various operations may not +be used in some contexts (e.g. on network fast paths), and cooperative +multitasking is implemented using event-driven non-blocking object +interfaces. You will need to be aware of external interoperability +requirements and firmware quirks dating back to the 1990s. + +In most cases, an [issue report][issues] describing the desired +feature is likely to get a better result than an unsolicited pull +request. + +Major feature pull requests +--------------------------- + +A large [pull request][pulls] that adds a substantial new feature +(e.g. a new device driver, a new cryptographic algorithm, a new script +command, etc) has very little chance of being merged unless an +appropriate level of [funding][funding] is provided to cover the time +required for several rounds of code review. + +Please be aware that thorough code review is generally **more work** +than code creation. The cost to review a major feature will therefore +generally be more expensive than the cost of simply [funding][funding] +the development of the feature instead. + +Any externally developed features are **not eligible** to be signed +for UEFI Secure Boot, and will be automatically excluded from all +Secure Boot builds of iPXE. + +Funding +------- + +Small donations from individual users via [GitHub Sponsors][sponsors] +are always welcome, and help to purchase the coffee that forms the raw +material from which iPXE is made. + +Around half of the development work on iPXE is commercially funded. +Any code that is commercially funded will be pushed to the public iPXE +repository and made immediately available to everyone under the terms +of the GNU GPL. Funded development has included many widely used +features: + + * Support for 64-bit CPUs + * Support for UEFI firmware + * Support for USB NICs + * Support for the Intel 10GbE, 40GbE, and 100GbE NICs + * Support for [iSCSI and other SAN booting methods][sanboot] + * Support for [TLS and HTTPS][crypto] + * Support for [AWS EC2][ec2] and [Google Cloud][gce] public clouds + +As noted above, funding the development of a major feature is +generally cheaper than developing it yourself and then funding the +code review to get it fixed up and merged. + +Any funded development work is automatically eligible to be signed for +UEFI Secure Boot. + +To discuss funding an iPXE development, please send an email to +, or create an [issue][issues] and mention +that you would be interested in providing funding. + + +[crypto]: https://ipxe.org/crypto +[discussions]: https://github.com/ipxe/ipxe/discussions +[ec2]: https://ipxe.org/howto/ec2 +[funding]: #funding +[gce]: https://ipxe.org/howto/gce +[issues]: https://github.com/ipxe/ipxe/issues +[licence]: COPYING +[pulls]: https://github.com/ipxe/ipxe/pulls +[sanboot]: https://ipxe.org/cmd/sanboot +[sponsors]: https://github.com/sponsors/ipxe