IKM (Integrated Knowledge Management) Developer Guidelines
Introduction
Welcome to the IKM Community! We're thrilled to have you on board. IKM is an open-source project dedicated to providing an application for collaborative health knowledge management and data harmonization. The Integrated Knowledge Management (IKM) GitHub page contains multiple repositories required to locally build and run the program with proper configurations. These repositories must be executed in a specific order for the program to run successfully.
As an open-source project, we rely heavily on the hard work, dedication, and contributions of our community members. Your involvement is crucial in making IKM better every day, and we appreciate your willingness to be part of this journey.
Ground Rules
Expectations
As a member of the IKM Community, we expect you to:
Be respectful and considerate: Treat others with respect, valuing diverse perspectives and backgrounds. Foster an inclusive and welcoming environment for all.
Be open to constructive feedback: Embrace feedback as an opportunity for growth and improvement. Provide feedback to others in a respectful and constructive manner.
Be willing to learn and grow: Approach your contributions with a growth mindset, continuously seeking to expand your knowledge and skills.
Contribute with the best interests of the project in mind: Prioritize the collective goals and objectives of IKM, putting the project's needs ahead of personal agendas.
We have a zero-tolerance policy for any form of harassment, discrimination, or unethical behavior. All community members are expected to adhere to our Code of Conduct, which outlines the standards of behavior and interaction within the IKM Community. Please review the Code of Conduct carefully to ensure a positive and inclusive experience for everyone.
Bug Reporting
Bugs are an inevitable part of software development, and we appreciate your help in identifying and reporting them. By following these guidelines, you can help us address issues more efficiently and effectively.
Before Submitting A Bug Report
Check the Debugging Guide: Consult our Debugging Guide for tips on how to troubleshoot and resolve common issues. Many bugs can be resolved by following the steps outlined in this guide.
Check the FAQ and Discussions: Browse through our Frequently Asked Questions (FAQ) and community discussions to see if your issue has already been addressed or if there are any known workarounds or solutions.
Determine the appropriate repository: IKM is a monorepo, which means that different components and repositories are housed within a single repository. Before reporting an issue, ensure that you identify the correct repository where the problem should be reported. Refer to our Repository Guide for assistance in determining the appropriate repository.
Perform a cursory search: Search the relevant repository's issues to ensure that your problem hasn't already been reported. This helps avoid duplicates and allows you to contribute additional information to an existing issue if applicable.
Submitting A Bug Report
Bugs are tracked as GitHub Issues within the appropriate repository. When submitting a bug report, please provide the following information to help maintainers reproduce and understand the problem:
Use a clear and descriptive title: The title should concisely and accurately describe the issue you're experiencing.
Detailed steps to reproduce: Provide a step-by-step guide on how to reproduce the problem. Include specific examples, commands, or code snippets that demonstrate the issue.
Expected behavior: Describe the behavior you expected to see based on the documentation or your understanding of how the system should work.
Actual behavior: Explain the behavior you're currently observing that deviates from the expected behavior.
Environment details: Include relevant details about your configuration and environment, such as the version of IKM you're using, the operating system, and any relevant dependencies or packages installed.
Additional context: Provide any additional information that might be helpful in understanding and resolving the issue, such as screenshots, error logs, or profiling data.
Code Contribution
We welcome and appreciate code contributions from the community. Whether you're fixing a bug, adding a new feature, or improving documentation, your contributions are invaluable and help drive the project forward.
Where to Begin?
If you're new to open-source development or unfamiliar with the IKM codebase, we recommend starting with the following resources:
Project Architecture: Familiarize yourself with the overall architecture and structure of the IKM codebase. This will help you gain a better understanding of how the different components and modules interact with each other.
Developer Documentation: Check out our README for guidance on setting up your development environment, running tests, building the project, and other essential tasks.
Book Volumes
IKM follows a "Book Volumes" approach to organizing its knowledgebase. Each volume represents a specific domain or area of functionality within the project. Our Book Volumes documentation provides an overview of this deep dive into the role, responsibility, and impact of integrated knowledge management.
Beginner Issues & Help Wanted Issues
If you're looking for a good starting point to contribute, check out our Beginner Issues and Help Wanted Issues pages. These issues are specifically labeled as suitable for new contributors and can help you get familiar with the codebase while making a meaningful impact.
Style Guides
To maintain consistency and readability across the codebase, we follow several style guides for different aspects of the project. Adhering to these style guides ensures that your contributions align with the established coding conventions and best practices.
Commit Messages
When committing changes to the codebase, follow our Commit Message Guidelines. These guidelines outline the preferred format and best practices for writing clear and concise commit messages, which help maintain a clean and informative commit history.
Code Style Guides
We have separate style guides for different programming languages and components used within the IKM project:
JavaScript Style Guide: This guide outlines the coding conventions and best practices for writing JavaScript code within the IKM codebase.
Specs Style Guide: This guide covers the guidelines for writing and organizing test specifications (specs) within the IKM project.
Documentation Style Guide: Follow this guide to ensure that your contributions to the project's documentation adhere to our standards for structure, formatting, and content.
Remember, these guidelines are here to help you navigate the IKM project and contribute effectively. If you have any questions or need further assistance, don't hesitate to reach out to the community or the maintainers through our communication channels.
We're excited to have you on board and look forward to your contributions! Happy coding!