ligo/gitlab-pages/docs/contributors/getting-started.md
Matej Šima 628d818163 Revert "Merge with dev"
This reverts commit 6ffe220d928dc3137496bcea0cc0f4d72edc2846.
2019-11-07 23:19:27 +00:00

50 lines
2.8 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: getting-started
title: Getting started
---
## Where
LIGO is big, so it is easier to focus on a specific part of LIGO. As starting suggestions:
* If you want to immediately see the result of your contributions, you might want to start with the Front-End. This is what most people will directly see of LIGO.
* If you want to get into Programming Language Theory, you might want to start with the Middle-End. This is where the Type System and the Language Definition are (the closest thing so far that youll find in a research paper).
* If you want to get into the nitty gritty details of compiling to special targets, focus on the Back-End.
* If you want to develop tooling on top of LIGO (editor integration for instance), look at `Ast_typed/types.ml`. This is where most information that is relevant to devs will be (for now).
* If you want to get a grasp of the whole pipeline, search for issues tagged with “Everything.” Theyll help you look at multiple parts of the code base.
## What
The first issues will most likely be:
* Adding tests
* Extending the languages by adding new operators
* *Adding tests*
* Refactoring
* Writing documentation and tutorials for users
* **_Adding tests_**
* Writing internal documentation when you understand a part of the code base
>Tests are **really** important, we dont have lots of them, and mostly regression ones. This cant be stressed enough. Some features are missing not because we cant add them, but because we dont know as no tests tell us they are missing.
## How
Issues will be added to Gitlab tagged with `On-boarding and Front-End` / `Middle-End` / `Back-End` / `Everything`.
If you try to tackle an issue and you have **any** problem, please tell us by creating a new Gitlab issue, contacting us on Riot, on Discord, or even by mail!
Problems might include:
* Installing the repository or the tools needed to work on it
* OCaml weirdness
* Understanding undocumented parts of the code base
* Understanding documented parts of the code base
**Anything, really.**
---
## FAQ
### I dont know much about OCaml. Where should I start? What should I keep in mind?
Id suggesting going through Real World OCaml to get a feel for the language, to know its features, and to know what to Google when youre lost.
Beyond that, Id say, start hacking! Either on LIGOs code base or on any personal project.
There is a Discord server if you want real-time help (which makes things go way faster than waiting for an answer on StackOverflow or staring mindlessly at the monitor).
### I want to add [X] to LIGO! Where should I begin?
Trying to add a new feature from scratch instead of building on one can be complicated. However, if youre motivated, contact us! Well tell you what we see as the best plan to get the result you want.