mirror of
https://github.com/ipxe/ipxe.git
synced 2026-04-22 22:21:23 +02:00
116 lines
4.4 KiB
Markdown
116 lines
4.4 KiB
Markdown
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
|
|
<vendor-support@ipxe.org>, 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
|