Welcome to the LDPL contributors guide, thank you for being here! This guide will tell you all you need to know in order to contribute to the LDPL project.
Anybody can contribute to the LDPL project! As stated on the README.md file, we accept all kinds of contributions anyone can make. From adding statements to the language (that's in fact really easy!) to fixing bugs, adding issues, writing examples, documentation writing some software in LDPL, etc. Anything you consider will make the project grow and better, you are welcome to contribute it. Even a simple drawing or telling your friends about LDPL!
Please take a moment to familiarize yourself with the Code Of Conduct (you are expected and required to behave by this code, tl;dr be nice to others) and the LDPL reference (not really a must per se, but that's where all the language is documented).
C++ knowledge is a must if you want to contribute to the compiler code, and LDPL knowledge is a must if you want to write examples or LDPL software. Drawing is not really a must if you want to submit a drawing, but you may get better results if you know how to draw. We'll love your art anyway, though.
If you want to contribute to LDPL, there are many things you can contribute with. You could add new statements to the LDPL Standard Library, fix bugs and open issues, add issues, write examples, write software in LDPL, etc. If you don't know where to start, be sure to check the Wanted Features & Changes List.
Anything is very welcome! Even telling your friends about LDPL is a very easy and very useful contribution!
We tend to accept most pull requests, unless they break the language in some way or another. In that case, we'll discuss with you what can be done to have it accepted. We wouldn't like your hard made contribution to go to waste!
Please take a moment to understand the LDPL compiler source code if you are submiting a new feature to it. It's made of just three files: ldpl.cpp where the compiler is mostly written, ldpl.h with variable and function definitions (and the occasional struct) and ldpl_lib.cpp that is a library that is included in every binary compiled with the LDPL compiler that includes definitions for many functions used within the language.
LDPL is one big if statement, with one if for every statement of the language. Check the ones that are already written if you want to submit new statements, is really easy. Test your new statements before submiting them, please!
If you are writing documentation, try to make it as clear as possible. It's nice when you don't know nothing about a certain technology and you find a tutorial that explains everything from the ground up in a way you can understand without reading pages and pages of man documentation and shady html files. You love the guy who wrote that tutorial. Be that guy.
If you are writing LDPL examples, please comment them. Comment every line if you deem it necessary. But make them as clear as possible.
If you are writing LDPL software, please try to make your code clear as well. It's your code, though, we won't bite you if you don't want to make it nice.
If you are submiting issues, PLEASE be as clear as possible. Tell us where the error happened, tell us what where you doing, what code triggered it, etc. It just doesn't help when someone posts "please fix this function it doesn't work thanx bye".
If you are submiting a drawing, feel free to take any artistic license you like. "Look mom, I drew the LDPL dinosaur!".
If you are submiting LDPL fanfiction, please ask yourself "why am I doing this". Then kindly create a pull request.