{
    "version": "https://jsonfeed.org/version/1",
    "title": "The Omphalos Project",
    "description": "",
    "home_page_url": "https://omphalos-project.org",
    "feed_url": "https://omphalos-project.org/feed.json",
    "user_comment": "",
    "icon": "https://omphalos-project.org/media/website/omphalos.png",
    "author": {
        "name": "Glenn Dufke"
    },
    "items": [
        {
            "id": "https://omphalos-project.org/the-greatest-innovations-come-in-small-packages.html",
            "url": "https://omphalos-project.org/the-greatest-innovations-come-in-small-packages.html",
            "title": "The greatest innovations come in small packages",
            "summary": "<p>The Conan package manager, well known in the C/C++ community for managing C/C++ dependencies, is a powerhouse of features and flexibility.<br>After many years of internal use and refinement, I'm happy to announce support for managing dependencies in RAD Studio using Conan is coming!</p>\n",
            "content_html": "<p>The Conan package manager, well known in the C/C++ community for managing C/C++ dependencies, is a powerhouse of features and flexibility.<br>After many years of internal use and refinement, I'm happy to announce support for managing dependencies in RAD Studio using Conan is coming!</p>\n\n<div class=\"post__toc\">\n<h3>Table of Contents</h3>\n<ul>\n<li><a href=\"#mcetoc_1itii5fsl3h\">Introduction</a></li>\n<li><a href=\"#mcetoc_1itii5fsl3i\">Why is Conan the best option for RAD Studio and why should you care?</a></li>\n<li><a href=\"#mcetoc_1iu33oerm3t\">Cool, but how does it work?</a></li>\n<li><a href=\"#mcetoc_1iu33u6b046\">I've heard about Conan Center Index - Can I use this in C++Builder?</a></li>\n<li><a href=\"#mcetoc_1iu34218h4c\">What about a central place for Delphi packages?</a></li>\n<li><a href=\"#mcetoc_1iu43ep9m5j\">Hang on a second, what about per-project bpl and library dependencies?</a></li>\n<li><a href=\"#mcetoc_1iu43ep9m5k\">Alright, this sounds cool and I'm hooked - are there more?</a></li>\n</ul>\n</div>\n<h4 id=\"mcetoc_1itii5fsl3g\"></h4>\n<h4 id=\"mcetoc_1itii5fsl3h\">Introduction</h4>\n<p>I chose Conan as the basis for package management in RAD Studio, because it has existing feature overlap in the C/C++ space, and because the Conan team have already crafted effective solutions to many package management problems, instead of trying to invent <strong><em>yet-another-package-manager</em></strong>.</p>\n<p>Package management in the RAD Studio ecosystem has been a hot topic - and challenge, for a long time. Besides from the built-in Getit system managed by Embarcadero, several third parties have tried to solve the same problem as well.<br>Unfortunately neither of the available third party solutions are feasible in the context of RAD Studio for many reasons (Lack of source code &amp; binary only, vendor tied in, YAML hell, unmaintainable code base, overengineered and major design flaws, lack of foresight, not supporting C++Builder, unable to produce SBOMs or perform audits, does not integrate well into a CI pipeline or with other compilers and the list could go on).<br>I'm not here to throw them under the bus, merely a statement of fact from analyzing and working with the currently available solutions. I commend their efforts and wish them the best.</p>\n<h4 id=\"mcetoc_1itii5fsl3i\"><em><strong>Why is Conan the best option for RAD Studio and why should you care?</strong></em></h4>\n<p>While Conan is marketed as an open source package manager for the C/C++ ecosystem - and has been around for a long time, don't let this fool you when we're talking RAD Studio.<br>Conan is designed in a way it makes it easy to integrate many different compilers - and even languages. Given the straightforward design of package recipes, you have the flexibility to accurately describe what you want to do, when targeting a specific platform or compiler and making sure the environment &amp; dependencies are available.<br>Other package managers for RAD Studio simply cannot offer the same level of flexibility - which is needed for the wide variety of libraries that exists both on the C++ side but also for Delphi.<br>Another important factor, with the increasing focus on SOC2 and NIS2 compliance in software development, being able to produce accurate SBOMs of dependencies, perfoming audits for known vulnerabilities and visibility into your software supply chain is paramount, Conan have support for these features too, helping you stay compliant for your customers.</p>\n<h4 id=\"mcetoc_1iu33oerm3t\">Cool, but how does it work?</h4>\n<p>Initially, generation and invocation of CMake and MSBuild compatible build scripts are supported for C++Builder, and MSBuild only for Delphi.<br>I'm working on direct command line wrappers for both the C++Builder and Delphi command line compilers, allowing you complete control over the compilers directly, in cases where you need fine grained control - for instance, if you build a modified runtime library or VCL.<br>This will take some time to develop, so don't expect this to be available in the preview.</p>\n<p>Documentation on how to set up your environment and getting started with Conan is well underway and we're nearing the first pre-release soon.</p>\n<h4 id=\"mcetoc_1iu33u6b046\">I've heard about Conan Center Index - Can I use this in C++Builder?</h4>\n<p>I'm working with the Conan team to make sure you can consume the C++ packages available in the Conan Center Index - at least those who are either CMake or MSBuild enabled. An annoucement will be made later.<br>For those who are not familiar, Conan Center Index is the open source package repository for many great open source C/C++ libraries which are widely used.<br>Given the Clang updates in C++Builder, this means we now have a more standards compliant compiler and we can take advantage of the vast amount of libraries without resorting to special modifications.</p>\n<h4 id=\"mcetoc_1iu34218h4c\">What about a central place for Delphi packages?</h4>\n<p>For Delphi and specific C++Builder packages there will be a public index available soon. Getting the infrastructure up to speed and there are still a few decisions to be made as they will decide the direction for future Conan powered projects.</p>\n<h4 id=\"mcetoc_1iu43ep9m5j\">Hang on a second, what about per-project bpl and library dependencies?</h4>\n<p>The great thing about Conan and its design allows us to perform a fine grained dependency management down to a per-project level.<br>As I'm implementing the IDE support for Conan, this will allow for a per-project loading &amp; unloading of versioned bpls with components and setting up the environment for the IDE, Compiler and LSP server can resolve all dependencies consistently, before the rest of the project loads.</p>\n<h4 id=\"mcetoc_1iu43ep9m5k\">Alright, this sounds cool and I'm hooked - are there more?</h4>\n<p>There are a couple of features which won't be part of the preview release, as I'm still working out daunting details (Not related to code).<br>The goal here is to greatly improve the way RAD Studio developers (That is, regardless if you only use Delphi or C++Builder respectively) are dealing with reproducible builds and other goodies which has been notorious for being complicated in the RAD Studio ecosystem.<br>More to come, so stay tuned!</p>",
            "author": {
                "name": "Glenn Dufke"
            },
            "tags": [
                   "Package Management",
                   "News",
                   "Developer Tools",
                   "Conan",
                   "Blog"
            ],
            "date_published": "2025-05-18T04:18:00+02:00",
            "date_modified": "2025-06-20T00:17:36+02:00"
        }
    ]
}
