[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [MirageOS-devel] mirageos 3.0 : let's break some APIs
Hi,
On Mon, May 30, 2016 at 1:49 PM, Thomas Leonard <talex5@xxxxxxxxx> wrote: On 18 May 2016 at 17:28, Mindy <mindy@xxxxxxxxxxxxxxxxxxx> wrote: 3. Release tcpip with support for V2. 4. Update the mirage tool to use V2 to connect tcpip to net. One of the things that puts me off making backwards-compatible changes today is that I fear I might not be able to complete the whole thing in one go and I might leave the world in an inconsistent state which then confuses other people and wastes their time. For example if I changed the `V1.NET` in mirage/types, and then didn't manage to finish updating and releasing everything, and then someone else comes along needing to make an urgent change in `mirage-net-xen` to fix a security issue then they might not spot the problem initially and waste time trying to fix and release master. IIRC when I left big unreleased code changes in ocaml-xenstore people kept tripping over them, assuming they had something in common with the current code in opam. I could make the incompatible change to mirage/types and release that and simultaneously add upper-bounds to all the opam packages which depend on the old API. However if I'm thorough and add the bounds to old packages, inevitably I discover some of them fail `opam lint` checks :/ Inevitably I discover some of their dependencies also are missing bounds on other packages which have since been released. The more packages I touch the more the probability of a travis failure (e.g. timeout) tends towards 1 :( The removal of cstruct.syntax took much longer than I initially expected. I think this could be fixed with better tooling around opam -- if I could run the CI checks (including REVDEPS) entirely locally (e.g. in a container), iterate quickly and then supply a transcript of the local CI run in the PR to "prove" it's all fine, that would be much easier. I quite like the idea of being able to implement 2 versions of an interface simultaneously -- it was very convenient that cstruct.1.9.0 supported both camlp4 and ppx at the same time. I wonder whether we should split some of the API definitions out from the mirage/mirage repo. Instead we could depend on: both of which have functions which operate over `BLOCK` and `FLOW`, and provide "enhanced" versions of the signatures e.g. defines extra functions for resizable block devices (useful when dealing with qcow2 or vhd or similar) and block devices which can report sparseness information through `SEEK_HOLE` and `SEEK_DATA`. Perhaps the `BLOCK` API should be versioned with the mirage-block package? WDYT? Cheers, Dave
Dave Scott
_______________________________________________ MirageOS-devel mailing list MirageOS-devel@xxxxxxxxxxxxxxxxxxxx http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |