Skip to content

Consider using cbt as a build tool #93

@jodersky

Description

@jodersky

Do you own your Build Tool or does your Build Tool own you? – readme of cbt

Chris' build tool (cbt) is a build tool for Scala, written in Scala and super easily extendable. Its main advantages over sbt include:

  • Speed
    Startup time is faster than sbt on the first run, and cbt uses nailgun to stay in memory so that subsequent startups are immediate. It also uses Zinc for incremental compilation.

  • Command-line integration
    cbt does not require the use of an interactive shell for reasonable performance. It also plays nicely with stdio, making redirection and piping to other tools trivial.

  • Extensibility
    Plugins can be written as plain Scala files. Settings simply override definitions in parent "build" traits.

There are however also some points that may hold adoption back:

  • External plugins
    cbt's approach to plugins is to "include them all" in its source code. Aside from forking cbt itself, we would need determine if there is a way to port our in-house plugins in such a way that they may be maintained separately from the cbt sources.

  • Stability, versioning and deployment
    cbt's API has officially reached a stable point and there are ways to ensure reproducible builds (see the project's readme), however we would need to further investigate ways to best deploy cbt to developers.

It may be a bit too early to consider cbt as a replacement for sbt, however I think it could be worthwhile in the long term. I'm not hoping for an immediate decision or even discussion, however I do think it is important to keep exploring ways to make our lives easier as developers and hence I'm putting this idea out there.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions