Contributing

Contributor Guide

Everything you need to know about contributing to the Feather programming language.

Welcome

Hello! Thanks for your interest in wanting to contribute to Feather to make it better for everyone! This document will provide you with all of the information you need to get started and make some contributions.

Guidelines

These are some general guidelines that should be established before starting. All of these must be followed in order to contribute.

PR acceptance. Accept the fact that your PR or issue might not get attention or be accepted. While most additions are helpful and generally accepted, it's good to keep in mind that not all will be merged.

Language policy. Because there is a direct link on Scratch to this repository, refrain from using any language not suitable around kids. This includes deep inside code comments.

Minimum additions. There is no real minimum amount of additions or changes required. Any feedback or contribution, no matter how small, is helpful!

Massive changes. To help me with my own side of developing Feather, it's required that you try to not make any drastic changes. This is only stuff like programming language changes or additions. While I know a good bit of a bunch of languages, it helps keep Feather mostly written in C++ and Ruby which I'm very familiar with both. However, I do not mind any language incorporation that uses Python or JS as those I know pretty well too. Respect. One

Respect. Feather is not a full-time project. Responses to PRs and issues may take time. Respect my decisions. If a PR is rejected, it's for a reason. After all, one person made Feather.

Tips

These are some helpful tips to get you started. They might also help you find things to improve or add.

Optimization

Feather currently runs just as slow (maybe a lil faster) than other interpreted languages. Any speed or general optimization is very welcome. I personally haven't gotten around to optimization yet though.

Clean-up

There are a bunch of old Feather commands that haven't been cleaned up yet out of caution. Safely removing unused features or dead code is very helpful.

New methods

Add built-in methods for variables, counters, lists, or tables. Methods can be written in C++ for speed, or in Feather directly inside preinst.feather.

Libraries

Making libraries is easy and useful to users. If deemed useful enough, a library could be added to the standard libraries included with every Feather install.

Documentation

Anything relating to documentation improvements is appreciated. This includes, cleaning it up, re-wording parts, or adding sections that I completely forgot to add.

Entirely new features

The most impactful type of contribution. New commands or systems are almost always accepted and merged. Think about things like new control structures or I/O systems.

QOL

Quality of Life changes are also very helpful. Things like scripts or tools that improve the average user's experience with Feather. A great example is making downloading and using Feather seamless, quick, and simple.


Conclusion

If you have any questions about how to contribute, or things relating to Feather like what a specific file or script does, feel free to ask in the Scratch forums or open an issue on Codeberg. Issues don't have to be actual bugs, questions are welcome too.