I'm try to summarize some important notes and questions from issue linked above:
Little introductionGenerally i'm propose move discussion to ceforum, 'cause i'm want:
1. Get little more community-driven "solution"
2. Little more for "official" status
It is important 'cause it is not only about technical questions, but also social: anyone can publish package on nuget feed - it is cool and handy, but in same time - developer will trust only to other developer (maintainer / group of maintainers). When developer see same product which published by different peoples, it is ask for self - what is it? How it is differs from another version / etc.
1. Versioning CEF NuGet Packages (proposition)NuGet package versions is looks like semver, but packages can declare or do not declare semver compatibility. semver did not very good cover cef, so my proposition was:
MAJOR = Chromium major version. I.e. it is not 3. It is something like 40. CEF era (major version = 3) we can include in package name.
MINOR = Should be calculated from API hash.
PATCH = Increments on every new build, if API hash is not changed.
This means, that:
43.0.0 - first build from some branch (release or trunk)
43.0.1 - first bug-fix release, but it is provide same ABI (i.e. API hash for this release same as 43.0.0).
43.1.0 - some release from same branch, which can break ABI compatibility (i.e. API hash for this release are differs from 43.0.1)
... etc
Why this kind versioning is needed?It is 'cause package used for distribute CEF binaries as project dependency.
It is allow to us define dependencies between package including compatible versions.
For example, concrete CefGlue package can define dependency to CEF binary package as [43.0]. This means that 43.0.0, 43.0.1, 43.0.2 is valid dependencies, and them can be updated, but not 43.1. Newer CefGlue version package can define other dependencies. Etc.
Note: that current NuGet 3.0 can't define conditional dependencies as we want, so we will not use this mechanism now. But it is easy for human understanding and machine understanding.
2. Provide packages for every platformIt will be very good to provide builds for Windows, Linux and OSX. Also x64 and x86 (when available).
Now easiest way to do it, it is get packages from
http://cefbuilds.com.
3. Automation for NuGet publishingTo perform automatically publishing packages into nuget, we need able to acquire packages from cefbuilds.com. But to acquire packages we need assistance from cefbuilds.com (automatic monitoring of updates, and automatic binary downloading).
Packages & ContentGenerally nuget packages can be used within C++ projects. So, as i'm understand, package can contains headers / etc.
In this topic we speak only about redistributables - i.e. just binaries. I'm think that we should be aimed now only binaries. I.e no cefclient, no other stuff, no debug build.
Package NamingNuGet used mainly by .NET projects, and created for them.
Only one package name convention is:
Package Id Conventions
Namespace-like names: Package IDs should follow a pattern similar to namespaces in .NET. For example, Ninject.Mvc3 instead of Ninject-Mvc3.
Sample Packages: Use the ".Sample" suffix for a package that provides sample code for your package. This is useful for helping others get started. For example, if your package name is Clay, then a sample of how to use clay would be Clay.Sample. Also, within the content folder, arrange your samples within a root /Samples/PackageID folder structure. For example, the Clay.Sample package would have a folder /Samples/Clay.
I'm think that good names will be:
ChromiumEmbedded.Redist - there is meta-project. Now treat just as reserved name.
ChromiumEmbedded.Redist.Windows.x86
ChromiumEmbedded.Redist.Windows.x64
ChromiumEmbedded.Redist.Linux.x86
ChromiumEmbedded.Redist.Linux.x64
ChromiumEmbedded.Redist.OSX.x64
ChromiumEmbedded - name reserved for "official" .NET wrapper (i'm hope in one day it will be published).
FuturesProvide official in-time CEF builds (at least for windows). cefbuilds.com is great, but looks last time (year?) it is provide builds "lazily". Gap in 2-3 weeks is very high, - i'm not once make private build. And looks that i'm not alone.