Choices, choices, choices
There are many components to Liquid Metal and all touch on a different area of tech. So whether you have a strength to play to or a knowledge gap you want to fill, there will be something for everyone.
Our project board is publicly viewable, so check that out first to see what is currently being worked on, and if there is anything scheduled which you like the look of.
Or take a look at the table below to find something specific to your interests or skillset.
Repo | Languages | Role in Liquid Metal | Good for those who like... |
---|---|---|---|
capmvm |
| A CAPI provider which schedules kubernetes nodes on microvms. |
|
flintlock |
| A service which creates microvms on bare metal devices. |
|
microvm-operator |
| A kubernetes operator which creates microvms on bare metal devices. |
|
controller-pkg |
| A library for tolls common to LM controllers/operator. |
|
image-builder |
| A pipeline to build container images which are used as kernels and OSes in microvms. |
|
site |
| This docs site you are reading right now! |
|
fl and hammertime |
| CLI tools for flintlock with different aims and usecases. |
|
LMATS |
| The Liquid Metal Acceptance test suite |
|
terraform-equinix-liquidmetal |
| A terraform module for provisioning flintlock hosts in Equinix. |
|
microvm-action-runner |
| A service for creating ad-hoc Github action runners in microvms. |
|
If you are not ready to write code yet, but you see something which can be improved or have an idea, feel free to open an issue. Not all contributions come in the form of code, and we appreciate anyone using and reporting on the project to help make it better.
We also encourage people to review others' PRs and help streamline the submission process.
Languages
All system components are written in Go. The flintlock component wraps firecracker and cloud hypervisor, which are both written in Rust and occasionally require debugging. We anticipate needing to contribute in those projects in the future.
This website is built using Docusaurus and, while it is mostly plug-and-play markdown, it allows customisation with ReactJS and CSS. We have no front-end engineers on the core team, so any contributions in this area would be very highly valued ✨.
Issue labelling and prioritisation
Each project uses the same labelling system. You can use these to help you pick out the best issue for your experience level.
Issues labelled
good first issue
should be accessible to folks new to the repo, as well as to open source in general. They are likely to be non-urgent, so you can take your time to work on your solution.These issues should present a low/non-existent barrier to entry with a thorough description, easy-to-follow reproduction (if relevant) and enough context for anyone to pick up. The objective should be clear, possibly with a suggested solution or some pseudocode. If anything similar has been done, that work should be linked.
If you have come across an issue tagged with
good first issue
which you think you would like to claim but isn't 100% clear, please ask for more info! When people write issues there is a lot of assumed knowledge which is very often taken for granted. This is something we could all get better at, so don't be shy in asking for what you need to do great work 😄.help wanted
issues are for those a little more familiar with the code base, but should still be accessible enough to newcomers, with thorough descriptions and clear outcomes.
All other issues without those labels are also up for grabs, but are likely to
require a fair amount of context. Along with various kind/x
(e.g. kind/feature
)
labels we have priority/x
markers. These indicate the urgency with which a solution
should be submitted.
priority/critical
: These are time sensitive issues which should be picked up immediately. If an issue labelled critical is not assigned or being actively worked on, someone is expected to drop what they're doing immediately to work on it. This usually means the core team, but community members are welcome to claim issues at any priority level if they get there first. However, given the pressing timeframe, should a non-core contributor request to be assigned to a critical issue, they will be paired with a core team-member to manage the tracking, communication and release of any fix as well as to assume responsibility of all progess.priority/important-soon
: Must be assigned as soon as capacity becomes available. Ideally something should be delivered in time for the next release, but as we are a small team we are relaxed about this. If you are looking to make a big impact and feel confident enough to do so, grab one of these issues!priority/important-longterm
: Important over the long term, but may not be currently staffed and/or may require multiple releases to complete.priotity/backlog
: There appears to be general agreement that this would be good to have, but we may not have anyone available to work on it right now or in the immediate future. PRs are still very welcome, although it might take a while to get them reviewed if reviewers are fully occupied with higher priority issues.needs-investigation
: There is currently insufficient information to either categorize properly, or to understand and implement a solution. This could be because the issue opener did not provide enough relevant information, or because more in-depth research is required before work can begin. If you would like to do the work to provide the required information and get a ticket bumped to actionable, please go for it!
These priority categories have been inspired by the Kubernetes contributing guide.
Getting assigned
Once you have found something which you'd like to tackle, tag a member of the team on the issue and ask for it to be assigned to you.
We should respond pretty quickly to this, so you can get started right away. If you don't open a PR within a couple of weeks we may ping you on the issue to find out how things are going. This is not to put pressure on you to "work faster" (please work at your own pace!) but so that we can check that you are still on the case and whether you need any help. If you no longer have time for the issue, we can have it reassigned.