Contribute - nyurik/vega GitHub Wiki

This wiki documents Vega version 2. For Vega 3 documentation, see vega.github.io/vega.

Interested in helping to improve Vega? This page provides a (non-comprehensive) list of ways to contribute. If you're thinking about taking on a sizable project, please post to Vega discussion group so that we can coordinate.

  • Find a bug? Report it, or better yet, fix it and send a pull request! Bug reports should be submitted as issues on GitHub. Please include sufficient details that others can reproduce the bug.

  • Contribute additional unit tests and improve test coverage.

  • Review, and where necessary, improve the documentation here on the Vega wiki. For example, ensure that all transform descriptions are up-to-date with the current Vega 2.x options.

  • Develop new examples. Build out a corpus of stand-alone examples (both old and new) hosted through bl.ocks.org.

  • Wrap Vega with Electron to make opening Vega and [Vega-Lite] visualizations offline easier.

  • Implement new data transforms (or improve existing ones). For example, D3 includes a number of layouts (hierarchies, chord diagrams, etc) that Vega does not yet support.

  • Improve damage-redraw for Canvas rendering in vega-scenegraph. When the CanvasRenderer is handed a list of modified ("dirty") items, it simply unions their bounding boxes to determine the redraw region. A smarter approach might (efficiently!) identify disjoint regions and re-render them separately. How might this improve rendering performance?

  • Extend the specification of datasets to supporting polling API endpoints periodically, a la Cubism.js.

  • Develop a module system for Vega specifications. Several of the examples reuse similar interaction techniques (e.g., brushing, panning, zooming) or dataset and mark definitions (e.g., crossfilter). A module system could reduce the amount of duplication within a specification by enabling reuse and remixing of snippets of Vega specifications.

  • Develop a WebGL renderer for the Vega scenegraph.

  • Add more efficient handling of loaded data files. Currently, a file is loaded for every request made, even if the same file has been previously loaded. First run tests to see how effective browser-level caching is at servicing duplicate requests. If warranted, build a Vega-specific data manager that prevents unnecessary duplicate loads.