I think a problem here is Canned YAML isn't a library, it's an application. It reads schemas and generates C++ code. It is not itself linked in to anything. We could actually use it completely outside of ATS and only check in the generated code. However, the generated code depends on what is effectively libswoc++. Because of that, and because those utilities are useful in situations other than supporting Canned YAML, it's a separate project that provides the library and are in fact used both in the ATS core and plugins. In essence, libswoc++ is the Canned YAML library. I think this is the cleanest approach.
P.S. It would be possible to make Canned YAML a web app, where you paste in your schema, it generates the code, and then you put that result in your project, never downloading or building Canned YAML at all.