Project Ideas

Tobias Werth edited this page Dec 4, 2017 · 16 revisions

This page list a few project ideas, but we are open to new proposals you might have. Do you have an awesome idea you want to implement for Bazel? Please get in touch with us!

Note: All descriptions below assume some familiarity with Bazel. We encourage you to first read the documentation on our website (bazel.build) and try Bazel on a small project. Additionally, we collected a list of easy to fix bugs that would make for a good first contribution to bazel!

Code completion for .bzl files

  • Description: Standalone binary that provides code completion for Skylark files (.bzl). Input of the binary is a .bzl file and a location. Output is a list of possible completions. The main use-case is to provide completions for editors and IDEs. You can find the code for AST, parser and evaluation here. There is also a standalone interpreter which is a good example of use of the API.
  • Knowledge prerequisite: Experience with Java. Some knowledge of Python is a plus. Some familiarity with the concept of AST.
  • Mentor: laurentlb (at google.com)

Refactoring tools for .bzl files

  • Description: Standalone binary able to do code transformations on Skylark files (.bzl). We can for example build an equivalent of go fix (automatically update old source files to use the new API). We can also build a tool to do custom transformations (e.g. rename symbol foo to bar in a file). This can be used on the command-line, for large changes across a code base, as well as integrated in editors and IDEs. We currently have code to parse and pretty-print BUILD files, see here. We'd like to extend the code to handle all bzl files (in particular function bodies). With this, it should be possible to do AST-based code transformations.
  • Knowledge prerequisite: Experience with Go. Some knowledge of Python is a plus. Some familiarity with the concept of AST.
  • Mentor: laurentlb (at google.com)

Improved visualization of bazel query

  • Background: bazel query is used to query the dependency graph of your build. It is possible to render the graph in an image (see this blog post), but it's a bit limited. In particular, this is not useful for larger graphs.
  • Description: We could build a graphical and/or interactive visualization of the graph. The goal is to provide a representation of the dependency graph, that is useful even for larger graphs. Ideally, this should be cross-platform.
  • Knowledge prerequisite: Experience with Java. Knowledge of graph algorithms. Experience with UI development.
  • Mentor: laurentlb (at google.com)

Support more languages

  • Description: One of the goals of Bazel is to support many languages. It would be great to have a first-class support of new languages and make sure they can mix together (e.g. compile C# and F# together, or use C from OCaml).
  • Knowledge prerequisite: Familiarity with other languages, their compilation model and their best practices.
  • Mentor: laurentlb (at google.com), dslomov (at google.com)

Implement IDE integration

Dynamic thread pool sizing

  • Description: Bazel uses multiple threads to parallelize and speed up builds. Currently, the number of threads is static and set via a command line flag. This project should explore options to dynamically and adaptively set the number of threads depending on the workload, hardware, etc. For more information see the discussion on bazel-discuss.
  • Knowledge prerequisite: Benchmarking, Profiling, Performance Engineering
  • Mentor: buchgr (at google.com), philwo (at google.com)
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.