Skip to content
Soham Chowdhury edited this page Feb 11, 2017 · 26 revisions

If you’re interested in contributing to Idris, there are several jobs and mini-projects which would help. For example:

Libraries

  • Adding libraries and functions to the base package.
  • Low level bindings for various C APIs, including, but not limited to:
  • Network sockets
  • libgcrypt,
  • libSDL
  • High level, more dependently typed bindings for the above.

Documentation & Examples

  • Expand the tutorial with detailed examples and exercises (or even writing a new one)
  • Add to the reference documentation.
  • Checking for documentation rot in the Idris libraries (see libs/), and Haskell implementation in src.

Internals

  • Compiler support for "go to definition" in editors
  • Improving the termination and productivity checkers. The current version works in principle, but has a number of issues which need addressing.
  • Proof automation, for example:
  • A Presburger arithmetic solver (in progress here).
  • Commutative ring rewriting (in progress here)

Developer Experience

  • Implement something like Interlisp's DWIM for fixing type errors
  • Generation of project stubs or "skeleton projects" like those produced by, e.g., stack new. Provide support for generation of project stubs for: new backends, Idris library, Idris binary.
  • Flag to generate ignore files for Git and Mercurial.
  • Flag to show paths
  • Improve Idris docs for algebraic data types.

Bug Squashing

  • Investigating and fixing the reports on the issue tracker (low-hanging fruit designates issues that we believe to be easier than others)

Distribution

  • Polishing the packaging system
  • Packaging for Mac, for ease of installation (ideally not requiring a Haskell platform installed)
  • Packaging for Linux distributions

Testing and Benchmarks

  • Create Idris versions of toy programs for the benchmark game
  • Rewrite the test suite to use HSpec or similar to provide nice error reporting, categorization and modular integration of various testing tools.
Clone this wiki locally