Contribute - smclements/vega GitHub Wiki

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.

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

  • 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.