proposals/20210119-libraries-contribution.md
Sysdig Inc. intends to donate libsinsp, libscap, the kernel module driver and the eBPF driver sources by moving them to the Falco project.
This means that some parts of the draios/sysdig repository will be moved to a new GitHub repository called falcosecurity/libs.
This plan aims to describe and clarify the terms and goals to get the contribution done.
There are two main OSS projects using the libraries and drivers that we are aware of:
Since the Falco project is a heavy user of the libraries, a lot more than the sysdig cli tool, Sysdig (the company) decided to donate the libraries and the driver to the Falco community.
Sysdig (the command line tool) will continue to use the libraries now provided by the Falco community underneath.
This change is win-win for both parties because of the following reasons:
The Falco community owns the source code of the three most important parts of the software it distributes.
Given the previous point, Sysdig (the command line tool) will benefit from the now extended contributors base
Sysdig (the company) can now focus on the user experience and user space features
Contributions to the libraries and drivers will be easier to spread across the Falco community
By being donated, with their own release process, release artifacts, and documentation, the libraries can now live on their own and possibly be used directly in other projects by becoming fundamental pieces for their success.
There are many sub-projects and each of them interacts in a different way in this contribution.
Let's see the goals per sub-project.
Extract libsinsp from draios/sysdig/userspace/libsinsp (keeping the commit history) into falcosecurity/libs
The migration comes first, then we can do additional PRs for the points below so that we do only one thing at a time and keep the history linear
Keep the same code, refactorings will need to be done in subsequent PRs and approved separately
Adapt the CMake and build files
Install poiana and its workflows on it
Define the OWNERS
When possible, migrate issues and PRs to the new repository
Distribute the libsinsp.so library and headers as an artifact (rpm, deb, tar.gz) following the falcosecurity current process
Distribute the libsinsp.a library and headers as an artifact (rpm, deb, tar.gz) following the falcosecurity current process
Creation of the CI scripts using the Falco CI and Falco Infra
The CI scripts will need to publish the artifacts in the current falcosecurity artifacts repository
Artifacts will be pushed for every tag (release) and for every master merge (development release)
Falco follows a multi-stage model for adopting new projects, in this case we will do an exception since the library is foundational for Falco and it has a very good track record already
This project will go already "Official support" once the contribution is completed
Contributing, Code of Conduct, Governance, Security, and Support will be the same as the rest of the organization, find them here
Every other additional change will need to have its own process with a proposal
Implement the release process as described above
Propose a change to Falco repository to use the artifacts produced by the libsinsp release process for the build
Document the API
Extract libscap from draios/sysdig/userspace/libscap (keeping the commit history) into falcosecurity/libs
The migration comes first, then we can do additional PRs for the points below so that we do only one thing at a time and keep the history linear
Keep the same code, refactorings will need to be done in subsequent PRs and approved separately
Adapt the CMake and build files
Install poiana and its workflows on it
Define the OWNERS
When possible, migrate issues and PRs to the new repository
Distribute the libscap.so library and headers as an artifact (rpm, deb, tar.gz) following the falcosecurity current process
Distribute the libscap.a library and headers as an artifact (rpm, deb, tar.gz) following the falcosecurity current process
Creation of the CI scripts using the Falco CI and Falco Infra
The CI scripts will need to publish the artifacts in the current falcosecurity artifacts repository
Artifacts will be pushed for every tag (release) and for every master merge (development release)
Falco follows a multi-stage model for adopting new projects, in this case we will do an exception since the library is foundational for Falco and it has a very good track record already
This project will go already "Official support" once the contribution is completed
Contributing, Code of Conduct, Governance, Security, and Support will be the same as the rest of the organization, find them here
Every other additional change will need to have its own process with a proposal
Implement the release process as described above
Propose a change to Falco repository to use the artifacts produced by the libscap release process for the build
Document the API
Extract them from draios/sysdig/driver (keeping the commit history) into falcosecurity/libs
The migration comes first, then we can do additional PRs for the point below so that we do only one thing at a time and keep the history linear
Keep the same code, refactorings will need to be done in subsequent PRs and approved separately
Adapt the Makefiles and build files
Install poiana and its workflows on it
Define the OWNERS
When possible, migrate issues and PRs to the new repository
Falco follows a multi-stage model for adopting new projects, in this case we will do an exception since the library is foundational for Falco and it has a very good track record already. We are just changing maintenance ownership
Contributing, Code of Conduct, Governance, Security, and Support will be the same as the rest of the organization, find them here
Every other additional change will need to have its own process with a proposal
The Falco community already ships driver artifacts using driverkit and the test-infra repository
This project will go already "Official support" once the migration is completed.
Adapt the CMake files to point to the new homes for libscap, libsinsp and the drivers
When distributing the deb and rpm, libscap and libsinsp will need to be install dependencies and not anymore compiled into Falco