• 0 Posts
  • 24 Comments
Joined 1 year ago
cake
Cake day: August 2nd, 2023

help-circle




  • This is a gross misunderstanding and misrepresentation of CMake.

    You lead with this, but all I see in your reply is an explanation of why it works exactly the way I described. That explanation apparently it is: “because not everyone in the ecosystem acts the way CMake developers would want them to”, which I read as “CMakes design for external dependencies is broken.” The fact is, where we are right now, today, the find_package/config script design in CMake frequently makes resolving external dependencies far more painful than it already is without that complication.

    That sounds like a lot of repetitive work, doesn’t it? So why not provide CMake-provided scripts with the distribution?

    I believe my previous reply gives a very clearly answer: because we get stuck in a situation with multiple competing providers of ‘scripts’ that compete against each other and may apparently all change in backwards breaking ways between releases of CMake, releases of the library in question, and releases of package managers like vcpkg who have taken on themselves to fill in missing scripts.

    In the end, it is me who have to dig deep into someone else’s mess of CMakeLists.txt:s to try to unravel the mystery of what feature identifiers they expect from that external depedency and how they expect them to work in the find_package/config script the developers happened to use at the time, so I can then go on an archaeological expedition through all possible providers of that config - including older versions of CMake itself to track it down. Multiply with the number of dependencies - which sometimes is up in the hundreds - and it should be clear why this is a horrible, horrible design of a build system.

    If we had to stay with CMake’s broken design for this, at the very least it would need some form of declaration of dependency config scripts with a provider name and a semantic version. That way the problem would at least be solvable.

    However, it is more or less only CMake that has this issue in its attempt to be so ‘meta’ about everything. Libraries already come with a build-system independent way to specify features: they are split over several library files and software using that dependency choose which ones to link with - using file names. This works well in nearly every other build system. I don’t get the motivation to try to abstract this into an interface that (for the reasons we’ve discussed above) introduces another intermediate dependency layer.

    If the worst point you can make about CMake is the cmake config scripts it bundles, then I’m afraid you are very opinionated over irrelevant details that are immaterial to the discussion.

    IMO the main task of a build system is to manage inter- and intradependencies to build the software correctly. So, to me, this failure is truly a fundamental strike against it. If I cannot build your software because I cannot sort out your undeclared, unversioned implicit ‘config’ dependencies, I don’t have much use for other features your build system may or may not provide.



  • I really could not disagree more. CMake is a terribly designed build system.

    One of the most crucial things for a build system is to find and link dependency libraries. How does CMake do this?

    Each CMake release distributes its own set of library-specific (!) find_package modules. These change between releases, sometimes in backwards breaking ways. Providers of some of these libraries don’t always like how the central CMake find_package module work, the options they provide, etc. and thus provide their own, incompatible, find_package modules. On top of this, some software package systems, e.g. vcpkg ALSO provides competing find_package modules, also incompatible and sometimes with exactly the same name. And, of course, sometimes no such module is available, and the developers of the software using the library provide their own, or just side-step the find_package system .

    The end result is a total mess that can sometimes be nearly impossible to untangle without knowing exactly what environment the developers themselves use. Furthermore, you want to build older releases? Forget that, unless you are prepared to hunt down the exact versions of cmake, vcpkg, and libraries that the developers used at that point in time to get hold of the magical combination of find_package modules that actually builds the package. This is work of far higher complexity than matching semantic version strings, which is what we typically do with other build systems.

    My impression is that the only people who like CMake are people who use it to build their own software and thus never run into this issue since it obviously works in their own environment that they’ve adapted the CMake build rules to. But, put someone else’s complex multi-dependency CMake project in their hands and ask them to build a 4 year old version and (1) watch them give up and (2) observe them then claim those “other” CMake developers just don’t know what they are doing. (When, in reality, the exact same problem applies also to their own software).

    I have many more gripes with CMake than this, but I guess this rant is already long.









  • There’s an old saying in Tennessee — I know it’s in Texas, probably in Tennessee — that says, fool me once, shame on — shame on you. Fool me — you can’t get fooled again.

    A few things:

    • Unity is still bleeding money. They have a product that could be the basis for a reasonably profitable company, but spending billions on a microtransaction company means it is not sufficient for their current leadership. It doesn’t seem wise to build your bussniess on the product of a company whose bussniess plan you fundamentally disagree with.

    • It would be the best for the long term health of bussniess-to-bussnies services if we as a community manages to send the message that it doesn’t matter what any contract says - just trying to introduce retroactive fees is unforgivable and a death sentence to the company that tries it.


  • I understand LLaMA and some other models come with instructions that say that they cannot be used commercially. But, unless the creators can show that you have formally accepted a license agreement to that effect, on what legal grounds can that be enforceable?

    If we look at the direction US law is moving, it seems the current legal theory is that AI generated works fall in the public domain. That means restricting their use commercially should be impossible regardless of other circumstances - public domain means that anyone can use them for anything. (But it also means that your commercial use isn’t protected from others likewise using the exact same output).

    If we instead look at what possible legal grounds restrictions on the output of these models could be based on if you didn’t agree to a license agreement to access the model. Copyright don’t restrict use, it restricts redistribution. The creators of LLMs cannot reasonably take the position that output created from their models is a derivative work of the model, when their model itself is created from copyrighted works, many of which they have no right to redistribute. The whole basis of LLMs rest on that “training data” -> “model” produces a model that isn’t encumbered by the copyright of the training data. How can one take that position and simultaneously belive “model” -> “inferred output” produces copyright encumbered output? That would be a fundamentally inconsistent view.

    (Note: the above is not legal advice, only free-form discussion.)




  • Cortana is/was by far the best name of the digital assistants - probably because it was created by sci-fi story writers rather than a marketing department. They should just have upgraded her with the latest AI tech and trained her to show the same kind of sassy personality as in the games and it would have been perfect.

    Who in their right mind thinks “Bing copilot” is a better name? It makes me picture something like the blow-up autopilot from Airplane!