Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.Sign up
or "Once or Sometimes Asked Questions (OSAQ)"
What's up with Python 2?
or "Why is there no Python 2 code?"
In June 2018 we decided to not include Python 2 in the AAA anymore. This change has multiple reasons, which Buttercak3 lined out in an issue related to it. Here is a short summary:
- The support for Python 2 will be dropped by 2020. Since we're a learning resource, we encourage beginners to learn the newer Python 3 instead of Python 2.
- Everyone who can read Python 2 will be able to read and understand our Python 3 code. They are similar enough to make this possible. Also running Python 3 shouldn't be a problem for a Python 2 developer.
- The AAA is not a library. We're currently just a learning resources and the provided code examples are meant to help developers and coders to understand an algorithm. They aren't meant to be directly copied and used in production code. If you want to use a certain algorithm in production code, try to re-implement it to fit your guidelines and standards or even better: use a third-party library, which contains the algorithm.
How is this different to Rosetta Code?
or "Isn't the AAA the same as Rosetta Code?"
- This is fundamentally a book on algorithms, focusing on understanding the underlying algorithms. The goal here is to provide a reading experience that allows users to fully implement and understand every algorithm from the ground-up in the language of their choice. It is definitely not a collection of tasks for the community to complete.
- The implementations provided here are also meant for understanding and we will always try to only merge code that can be understood completely. Sure, we are lacking the power to review certain languages, but I have no doubt people will come in to do just that.
- We have the goal of providing a full curriculum for different areas of computer science, mathematics, physics, etc. This would mean that anyone wanting to learn the ropes in computational physics (for example) can read our volume on computational physics, and they should be able to fully understand that area of research.
Ultimately, this is a book and attempts to provide clear descriptions of the algorithms so people don't need to collate papers and resources from other places.
How is this different to Numerical Recipes?
or "Isn't the AAA the same as Numerical Recipes?"
- First and foremost, our licensing for the code snippets is MIT, and can be used for any project.
- This text (in principle) has both a broader scope and expects less background knowledge from the reader. Obviously, we are not there yet on either of those goals, but I are doing what I can to get there.
- This text is also (in principle) more of a modern take on the algorithms. Though NR has obviously been updated since 1986, it is showing it's age.
Ultimately, this book is targeted at a fundamentally different audience than NR. (We want people who would watch a YouTube video and think, "Oh man. I want to do that!" -- basically hobby programmers)
How can I help?
We are currently working on creating a structured submission guide and rules to do so. Currently, we have a chapter on How to Contribute and another chapter on Version Control for those new to Git and GitHub. Admittedly, both of these will be updated soon.
Ultimately, James (Leios) typically writes the chapters and everyone else in the community writes and reviews code. That said, we are open to other people writing chapters, its just that the review for chapters will likely be really strict.
How does the review process work?
- Submit a Pull Request.
- Someone from the Algorithm Archivists organization (trusted community members) reviews the code.
- The code gets fixed.
- Repeat 2 and 3 until everyone is happy.
- The code gets merged.
For the most part, we try to review code as soon as we can. That said, chapters are left up for a while so people can talk about them first.
How do I join the Algorithm Archivists organization?
The primary criterion is trust. Everyone in the Algorithm Archivists organization is able to merge code into the Algorithm Archive, so we need to be sure you understand Git and version control, actively care about the quality of the code that is submitted, and are active within the community.
Ultimately, we will contact you about it and ask for you to join the Algorithm Archivists when we think you are ready; however, please ask James (Leios) if you are actively contributing to the Algorithm Archive and feel like you should be a member of the Algorithm Archivists, but we have not contacted you yet.