Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Explicitly discuss cmkr's value proposition #170

Open
mrexodia opened this issue Dec 6, 2024 · 0 comments
Open

Explicitly discuss cmkr's value proposition #170

mrexodia opened this issue Dec 6, 2024 · 0 comments
Labels
documentation Improvements or additions to documentation

Comments

@mrexodia
Copy link
Contributor

mrexodia commented Dec 6, 2024

This was a comment on hacker news a while back:

I think Cmkr fails to state its value proposition by focusing on how it works.

Any system like CMake that wraps boatloads of complexity is going to have unexpected interactions and inscrutable failures.

The question for any developer who doesn't want to become a build system guru is whether they can take a happy path far from any gotcha's.

That's when people start defining conventions to solve classes of problems: follow this template to do X, and you'll be fine.

The value of Cmkr lies in being about to define those conventions and happy paths. I should be able to inspect their templates, and if one fits, I'm good to go.

Even nicer would the ability to retrofit my build to a known-working template.

But Cmkr only presents the "beginners" template repo as an aside, and says nothing about whether these templates are tested for various projects on various systems.

By not explicitly identifying the problem it's trying to solve, Cmkr seems to have bumped up against a solution accidentally, and doesn't give me confidence. I believe that could be easily remedied.

This is a very valid criticism. Cmkr is being developed to solve real problems, but the documentation is lacking when it comes to explicitly stating them (mainly because I spend all my time actually using and improving it, not writing documentation).

Claude:

Based on these comments, here's how I would address the main criticisms and concerns about cmkr:

  1. Value Proposition

    • Clearly state that cmkr is not trying to be another build system layer, but rather a declarative interface to CMake
    • Emphasize that it aims to simplify common CMake usage patterns through TOML configuration while maintaining full CMake compatibility
    • Focus on the specific problems it solves: reducing boilerplate, improving readability, and making CMake more approachable
  2. Address the "wrapper" criticism

    • Acknowledge that adding layers can be problematic, but explain that cmkr generates standard CMake files directly
    • Emphasize that it's not an opaque layer - users can always inspect the generated CMake code
    • Highlight that it's self-bootstrapping and doesn't require additional runtime dependencies
  3. Scope and Limitations

    • Be upfront about what cmkr can and cannot do
    • Clearly document the supported CMake features
    • Provide guidance on when users might need to fall back to raw CMake
    • Show examples of how to integrate custom CMake code when needed
  4. Documentation Improvements

    • Add more real-world examples and use cases
    • Document common patterns and best practices
    • Provide clear migration paths from existing CMake projects
    • Include troubleshooting guides for common issues
  5. Testing and Reliability

    • Document which scenarios and platforms are tested
    • Provide example templates that are verified to work across different environments
    • Include integration tests with various build configurations

The key is to position cmkr as a pragmatic tool that simplifies common CMake workflows while being transparent about its limitations and maintaining compatibility with existing CMake functionality.

@mrexodia mrexodia added the documentation Improvements or additions to documentation label Dec 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Development

No branches or pull requests

1 participant