Runestone - a Deeper Dive

While the developer environment setup documentation proved daunting and challenging, making it difficult to set up my environment, I am pleased to discover that the other general documentation is indeed very helpful and well-constructed. I believe the lack of quality documentation may stem from the transition to a monolithic repository from the previous one, necessitating more testing during setup and improved troubleshooting directions.

The contributing guide and roadmap are concise yet comprehensive, providing clear steps for contributing. Individuals eager to start contributing can do so through the GitHub issues page, focusing on issues tagged with "good for first issue" to aid integration while handling active tickets. For those interested in working on substantial features that require collaboration and discussion with seasoned contributors and Brad, consulting the project roadmap is recommended. The PR sections also offer valuable coding tips, such as using black for reformatting and flake8 for linting. Additionally, the sections provide encouraging language, stating that PRs don't need to be perfect and suggesting the submission of many small PRs rather than one large one for increased chances of successful merging.

The substantive part of the documentation lies in the API docs sections. The repository's backend services are divided into two main APIs: the book API and rsmanage. The bookserver serves as the core of the Runestone service systems, managing book delivery to students and serving as the logic center for all client-server interactions. Submodules within the books API handle tasks such as authentication, assessment, and book delivery for a course. The rsmanage module oversees all commands and interactions between the server and the database, providing the admin panel with commands to manage courses and users directly from the backend. These commands also enable quick testing of new changes in a local build by allowing the instant creation of users and enrollment in courses for testing purposes.

My initial task involves validating usernames to disallow emojis, which can disrupt other aspects of the system. The book module contains authentication and registration code, leading me to the function responsible for validating user entries. I plan to add additional validation to ensure that usernames only contain non-emoji characters. The rsmanage module will be instrumental in simulating fake user registrations to test the effectiveness of my validation. If, however, commands from the admin panel bypass validation, I will resort to using the web interface to test my code changes.

Comments

Popular posts from this blog

Post 4: Pretext

Post 3: Runestone and Brad Miller