-
Notifications
You must be signed in to change notification settings - Fork 3k
Description
Hey 👋, I heard of the plan of integrating libpod into cri-o and want to support that. So I started digging through the libpods' sources and am now wondering where to start and especially how. Both projects seem to have a common foundation of functionality but have diverged over time.
One example would be comparing both files cri-o/pkg/storage/runtime.go and libpod/libpod/storage.go. In cri-o we already have this nice RuntimeServer interface, which is great for abstraction and testing, so it would be useful for libpod, too. On the other side the RuntimeContainerMetadata as well as the implementation for RuntimeServer already contains information about Pods, which happens in libpod on a higher level. To get the best (and working) out of both we would have to touch both projects nearly in parallel which makes it quite complicated in my point of view.
How to achieve this without breaking anything? One way would be leave libpod nearly untouched and glue it together on the cri-o side, but this seems to have negative implications for cri-o especially from a performance perspective. Another way could be to plan the migration on top of both projects and put the code used by both (like containers/{image,storage}) in a dedicated repository. I guess this was already the intention of libpod right?
I'm wondering If you already have a big plan on mind or written down somewhere. :)
Edit: meant runtime.go and not image.go. 🤦♂️