I'm Samuel Verschelde. I started working full-time on XCP-ng on the 18th or June, so little more than one week ago. It's a pleasure to join your community and to devote my time to this free software project.
Obviously, my first mission targets the release of XCP-ng 7.5. So I figured I'd write a status update post to let you know what's been done, what is being done and what remains to be done. It's easy to get carried away by technical work and to forget to communicate, and I'll try not to fall in this trap. Since I'm still quite new to XCP-ng, please forgive me in advance any approximation or mistake in what I'll write. Just don't hesitate to point any mistake I might be doing, or any omission.
What needs to be done
So, basically the process of releasing the new version of XCP-ng, at the moment (this will evolve), is as follows:
- Get the installation and source ISOs from XenServer 7.5.
- Rebrand to XCP-ng and remove trademarked material (Citrix name, XenServer name, Citrix logo, splash screen...).
- Modify the licensing system to remove the restrictions for features that depend on free software.
- Remove proprietary software components from Citrix that we aren't allowed to redistribute.
- Fix a few known bugs
- Create an update repository for transitioning from 7.4
- Build the installation ISO
- Test (internally at first, but we'll quickly involve the community)
- (ideally, because we're a free software project after all) Provide source RPMs.
So were are we at this stage?
Rebrand to XCP-ng and remove trademarked material
We do this for legal reasons, and Citrix obviously doesn't want its name (or XenServer) to be associated with XCP-ng.
Amusingly, though, they added their name in the description of several packages in 7.5. Some of these additions are clarifications, so that's good to help us detect proprietary software or trademarked material among the free software components.
But some other are suprising, such as what they did to the linux kernel package: they added a Citrix logo image in the package (which otherwise contains free software), and then changed the package license from
Portions GPL, Portions Non-Redistributable (See description). And description of the package now contains:
Citrix, the Citrix logo, Xen, XenServer, and certain other marks appearing
herein are proprietary trademarks of Citrix Systems, Inc., and are
registered in the U.S. and other countries. You may not redistribute this
package, nor display or otherwise use any Citrix trademarks or any marks
that incorporate Citrix trademarks without the express prior written
authorization of Citrix. Nothing herein shall restrict your rights, if
any, in the software contained within this package under an applicable
open source license.
Portions of this package are 2017 Citrix Systems, Inc. For other
copyright and licensing information see the relevant source RPM.
A lot of claims for an added logo.
Since the kernel contained by this package is free software, we made a new package without the added claims and without that added logo, so that we can redistribute it.
Modify the licensing system to remove the restrictions for features that depend on free software
We hoped we could simply reuse our package from 7.4.1 but it seems it's not sufficient. Investigations by @johnelse are in progress. Maybe they changed the protocol, maybe we just need a rebuild against latest xapi.
Remove proprietary software components from Citrix that we aren't allowed to redistribute
Some are easy to remove, such as the ParaVirtualization (PV) tools for Windows, which are proprietary. I've been told that Xen Orchestra has support for installing them easily, so we shouldn't miss them too much.
There's one that's giving @johnelse trouble, though:
This closed-source component is tightly coupled to other free software core components. Since I know little about it, I'll let John explain:
emu-manager is a layer between xenopsd (the host-level domain management daemon) and xenguest (which deals with the creation of xen domains) and vgpu (which does the graphics emulation for vGPU)
It is invoked when VMs are suspended, resumed or migrated
To put things in a few words: there's a close-source component that we can't remove without losing suspend, resume and migrate features. So we have to replace it with a free-software component of our own, and that's a hard work: the interfaces are public but not the internals. And we'll lose the vGPU migration ability in the process.
We expect to finish this in two weeks from now, but that may slip. If you think you can help, contact @johnelse or come discuss on the #xcp-ng-dev IRC channel on freenode (we both are on a European timezone).
Fix a few known bugs
- Broken link to XCP-ng center in the HTML welcome page: fixed for 7.5.
- Missing /etc/shadow and other files in install.img: will be fixed when building the new ISO images.
- Fix xcp-python-libs bug mentioned at https://xcp-ng.org/forum/topic/79/configure-dom0-memory-not-work
- Maybe more? I'm not sure this list is exhaustive.
Create an update repository for transitioning from 7.4
Build the installation ISO, Test, Release
Depends on the above other tasks.
Now that I'm available almost all the time, it should become easier to include contributers from the community. We don't have the target infrastructure for that yet, but it's already possible to help at various stages. So don't hesitate to discuss it on this forum, to contact me ( firstname.lastname@example.org ) or to come to chat on freenode's #xcp-ng-dev IRC channel.
And if you read all of this, thanks!