Skip to content

Latest commit

 

History

History
189 lines (132 loc) · 9.32 KB

CONTRIBUTING.md

File metadata and controls

189 lines (132 loc) · 9.32 KB

Contributing to Pippin Framework

Thank you for your interest in contributing to the Pippin Framework! 🎉 Your contributions help make this project better for everyone.

By Contributing, You Agree To

By submitting a pull request, you affirm that you have the right to license your contributions under the MIT License and agree to the following:

  • Ownership: You retain ownership of any intellectual property rights you hold in your contributions.
  • License Grant: You grant Pippin and its users a perpetual, worldwide, non-exclusive, royalty-free license to use, modify, and distribute your contributions under the terms of the MIT License.
  • No Restrictions: Your contributions do not infringe upon any third-party rights and are free from any restrictions that would prevent them from being licensed under the MIT License.

Table of Contents

Code of Conduct

We are committed to providing a welcoming and inclusive environment for all contributors. Please read our Code of Conduct before participating.

Governance

Our project follows a community-oriented governance model, outlined in the Governance Document. This document details how decisions are made, roles and responsibilities, and how contributors can engage in the project's evolution.

How to Contribute

Reporting Issues

  1. Search Existing Issues: Ensure your issue hasn't been reported already.
  2. Open a New Issue: Provide a clear title and detailed description, including steps to reproduce, expected vs. actual behavior, and any relevant screenshots or logs.
  3. Select Appropriate Labels: Use labels like bug, feature-request, or documentation to categorize your issue.

Suggesting Features

  1. Open an Issue: Label it as feature-request.
  2. Describe the Feature: Explain the problem it solves and its benefits.
  3. Provide Use Cases: Share examples or scenarios where the feature would be useful.

Submitting Pull Requests

  1. Fork the Repository: Create your own fork of the Pippin repository.
  2. Create a Branch: Use a descriptive name, e.g., feature/add-authentication.
  3. Make Your Changes: Follow the existing code style and project goals.
  4. Write Tests: Include tests to maintain code quality.
  5. Run Tests: Ensure all tests pass.
  6. Submit the PR: Provide a clear description, reference related issues, and follow the PR template.

Style Guide

  • Code Style: Follow the existing style of code.
  • Documentation: Write clear and concise docs for new features or changes.
  • Commit Messages: Use meaningful messages, preferably following Conventional Commits.

Issue and Pull Request Tagging

Available Tags

Issue Tags:

  • bug: Unexpected behavior or error.
  • feature-request: Suggestion for a new feature.
  • documentation: Improvements or additions to docs.
  • enhancement: Improvements to existing features.
  • question: Inquiries about using the framework.
  • discussion: Topics requiring community input.
  • good first issue: Suitable for first-time contributors.
  • help wanted: Contributions needed.
  • priority: high, priority: medium, priority: low: Indicate issue priority.
  • needs-triage: New issues awaiting review.

Pull Request Tags:

  • bugfix: Resolves a bug.
  • feature: Introduces new features.
  • documentation: Updates or adds documentation.
  • enhancement: Improves existing features.
  • refactor: Code restructuring without changing functionality.
  • tests: Adds or modifies tests.
  • chore: Routine tasks and maintenance.
  • WIP: Work in progress.

Tagging Guidelines

  • Consistent Usage: Apply tags consistently for clarity.
  • Descriptive Labels: Use labels that accurately describe the issue or PR.
  • Avoid Redundancy: Select the most appropriate single tag.
  • Automate When Possible: Use GitHub Actions to assign needs-triage to new issues.

Escalating and Prioritizing Issues

  1. Initial Triage: Maintainers review needs-triage issues, assign appropriate labels, and set priority (high, medium, low).
  2. Community Voting: Encourage reactions (e.g., 👍) to indicate interest.
  3. Maintainer Decisions: Prioritize based on impact, alignment with goals, and available resources.
  4. Milestone Assignment: Assign issues to upcoming releases based on priority.
  5. Regular Review: Periodically reassess open issues to adjust priorities as needed.

Keeping Pippin Simple

  • Minimal Integrations: Avoid unnecessary integrations. Focus on core functionalities.
  • Modular Design: Encourage modularity to allow users to extend functionality without bloating the framework.

Using Composio

  • Leverage Composio: Use Composio for configurations and integrations to maintain consistency.
  • Documentation: Document any changes involving Composio clearly.

Enhancing Framework Usability

  • Improved Documentation: Cover more use cases and provide clearer instructions.
  • Better Error Messages: Make error messages descriptive to aid troubleshooting.
  • User Experience: Streamline workflows and reduce complexity for end-users.

External Integrations

  • Prefer External APIs: Integrate external APIs outside the core framework. Composio is a good option, but it would be great to look into setting up a Pippin Skills/Activities repository we can pull from.

Expanding Pippin with Skills and Activities (Planned)

To enhance Pippin Framework without compromising its simplicity, we plan to introduce Skills and Activities—modular components that extend functionality by leveraging existing functions and integrations from other frameworks.

Future Skills and Activities Repository

  • Repository Name: pippin-skills
  • Purpose: Centralized location for community-contributed skills and activities.
  • Contribution: Guidelines for contributing skills and activities will be provided once the repository is established.

Benefits of Skills and Activities

  • Modularity: Easily integrate or remove functionalities without affecting the core.
  • Community-Driven: Leverage the community's expertise to expand Pippin's capabilities.
  • Maintain Simplicity: Keep the core framework lightweight by offloading extensions.

Getting Involved

Stay tuned for updates on the Skills and Activities Repository. In the meantime, feel free to discuss ideas or express interest in contributing skills through our discussion forums.

Inspired Projects & Forks (We don't have this yet)

  • Dedicated Document: Maintain a list of inspired projects, forks, and iterations.
  • Submit Your Project: Add your project by opening a pull request with details.
  • Describe Your Adaptation: Include a brief description of how your project extends Pippin.

Additional Tips

  • Stay Updated: Regularly sync your fork with the main repository.
  • Ask for Feedback: Seek feedback on your ideas or implementations.
  • Be Respectful: Engage respectfully with all contributors.
  • Test Thoroughly: Ensure your contributions are well-tested to maintain reliability.

Using Issue and Pull Request Templates

To streamline the contribution process, we have set up standardized templates for issues and pull requests. These templates help maintain consistency and ensure that all necessary information is provided.

Issue Templates

We have separate templates for different types of issues:

  1. Bug Report: Use this template to report bugs or unexpected behavior.
  2. Feature Request: Use this template to suggest new features or enhancements.
  3. Documentation Improvement: Use this template to propose changes or additions to the documentation.

When you open a new issue, select the appropriate template from the "New issue" dropdown.

Pull Request Template

Our pull request template ensures that all PRs include essential information for a smooth review process.

When you open a new pull request, the template will automatically populate the description. Please fill out all sections to provide context and details about your changes.