diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..8cdb0f3 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,51 @@ +name: Bug Report +description: Create a report to help us improve the editor +title: "bug: " +labels: ["bug"] +body: + - type: textarea + id: bug-description + attributes: + label: Describe the Bug + description: A clear and concise description of what the bug is. + validations: + required: true + - type: textarea + id: reproduction + attributes: + label: Steps to reproduce + description: Steps to reproduce the behavior. + placeholder: | + 1. Open the editor... + 2. Upload workflow file... + 3. Click on... + validations: + required: true + - type: textarea + id: expected-behavior + attributes: + label: Expected Behavior + description: A clear and concise description of what you expected to happen. + validations: + required: true + - type: input + id: version + attributes: + label: Editor Version + description: What version of the editor/extension are you using? + - type: dropdown + id: platform + attributes: + label: Platform + options: + - Web / Browser + - VS Code Extension + - Chrome Extension + - Other + validations: + required: true + - type: textarea + id: context + attributes: + label: Additional Context + description: Add any other context, screenshots, or .sw.json / .sw.yaml snippets here. \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..494f1b1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: CNCF Slack (#serverless-workflow) + url: https://slack.cncf.io/ + about: Join the CNCF Slack workspace and visit #serverless-workflow for real-time support. \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..47c4719 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,40 @@ +name: Feature Request +description: Propose a new feature or architectural change for the editor +title: "feat: <title>" +labels: ["enhancement"] +body: + - type: markdown + attributes: + value: | + Thank you for suggesting a new feature! Please provide as much detail as possible. + - type: textarea + id: description + attributes: + label: Description + description: A clear and concise description of the proposed feature. + validations: + required: true + - type: textarea + id: motivation + attributes: + label: Motivation + description: Why is this change necessary? What problem does it solve? + validations: + required: true + - type: textarea + id: implementation + attributes: + label: Proposed Implementation + description: Describe the technical approach or UI changes. + - type: checkboxes + id: dod + attributes: + label: Definition of Done + description: To be considered "Done," this feature must meet the following criteria. + options: + - label: "Implementation: Fully implemented according to the Serverless Workflow spec." + - label: "Unit Tests: Comprehensive unit tests are included and passing." + - label: "Integration Tests: Verified within the monorepo and target environments (Web/VS Code)." + - label: "Documentation: Updated README.md, ADRs, or official docs." + - label: "Performance: No significant regression in editor responsiveness." + - label: "Accessibility: UI changes comply with accessibility standards." \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/question.yml b/.github/ISSUE_TEMPLATE/question.yml new file mode 100644 index 0000000..81fa882 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/question.yml @@ -0,0 +1,22 @@ +name: Question / General +description: Ask a question or share general feedback +title: "question: <title>" +labels: ["question"] +body: + - type: textarea + id: subject + attributes: + label: Subject + description: What would you like to discuss? + validations: + required: true + - type: textarea + id: context + attributes: + label: Context + description: Provide background information to help us provide a better answer. + - type: input + id: outcome + attributes: + label: Desired Outcome + description: Are you looking for a specific answer, a pointer to docs, or just starting a discussion? \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..9342e61 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,3 @@ +# Code of Conduct + +We follow the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md). Please contact the [CNCF Code of Conduct Committee](mailto:conduct@cncf.io) in order to report violations of the Code of Conduct. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..78fe251 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,74 @@ +# Contributing to Serverless Workflow Editor + +Thank you for your interest in contributing to the CNCF Serverless Workflow Editor! We welcome all types of contributions, including bug reports, feature requests, documentation improvements, and code changes. + +This project is the official, vendor-neutral visual editor for the [Serverless Workflow Specification](https://github.com/serverlessworkflow/specification). + +--- + +## Prerequisites + +To build and run the editor locally, you will need: +- **Node.js** (current LTS version; see https://nodejs.org/) +- **npm** or **pnpm** + +## Building the Project + +The project is structured as a monorepo to support multiple distribution targets (Web, VS Code, etc.) as defined in our architectural decisions. + +```bash +# Clone the repository +git clone https://github.com/serverlessworkflow/editor.git +cd editor + +# Install dependencies +npm install + +# Build all packages in the monorepo +npm run build +``` + +## Development Environment + +This project uses the following core technology stack: + +* **Language**: [TypeScript](https://www.typescriptlang.org/) (for type safety and maintainability) +* **Library**: [React](https://react.dev/) (for building the user interface) + +The project aims for the editor to be **embeddable**, with the core logic decoupled from specific platform APIs (like VS Code or Chrome APIs) through an abstraction layer. + +## Reporting an Issue + +If you find a bug or have a question, please check the [existing issues](https://github.com/serverlessworkflow/editor/issues) first. +1. Open a new issue using the appropriate template. +2. Provide a clear description of the problem. +3. Include steps to reproduce the bug and provide a sample workflow file (`.sw.json` or `.sw.yaml`) if applicable. + +## Suggesting a Change + +For new features or architectural changes: +1. Open an **Issue** or a **GitHub Discussion** to propose your idea. +2. Ensure the proposal aligns with the goals of being **vendor-neutral** and **specification-first**. +3. Once the approach is agreed upon by maintainers, you may proceed with a Pull Request. + +## Coding Standards + +* **TypeScript**: Always use strict typing. Avoid `any`. +* **Linting & Formatting**: Follow the existing code style and formatting conventions used in the files you are editing. If the package you are changing defines linting or formatting scripts, run those before submitting code. +* **Testing**: Ensure that logic changes are covered by tests, and run the relevant test commands for the packages you modify (see their documentation or `package.json`). +* **Component Design**: Follow functional component patterns and ensure that UI state is managed predictably within the monorepo structure. +* **New package creation**: If a new package needs to be created, please follow the standards used by the existing packages, including the standard commands `build`, `build-prod`, `test`, `e2e-test`, `lint` + +## Pull Request Process + +1. **Fork** the repository and create your branch from `main`. +2. **Commit** your changes with clear, descriptive messages. +3. **Verify** your changes by running the appropriate build and/or test commands for the packages you modified. +4. **Submit** a Pull Request (PR). +5. **DCO Sign-off**: As a CNCF project, all commits must be signed off (`git commit -s`) to certify the Developer Certificate of Origin. +6. **Review**: At least one maintainer must review and approve your PR before it is merged. + +--- + +### Community and Communication +Join the conversation on the [CNCF Slack](https://slack.cncf.io/) in the `#serverless-workflow` channel. \ No newline at end of file diff --git a/GOVERNANCE.md b/GOVERNANCE.md new file mode 100644 index 0000000..db2349e --- /dev/null +++ b/GOVERNANCE.md @@ -0,0 +1,14 @@ +# Governance + +The Serverless Workflow Editor is a sub-project of the [Serverless Workflow Specification](https://github.com/serverlessworkflow/specification). + +As a CNCF project, we strictly follow the governance model, roles, and decision-making processes defined in the parent repository. + +Please refer to the primary governance document for details on contributor roles, maintainer appointments, and project policies: + +👉 **[Serverless Workflow Specification Governance](https://github.com/serverlessworkflow/specification/blob/main/GOVERNANCE.md)** + +--- + +## Community & Support +If you have questions regarding the governance or how to get involved, please join us on the [CNCF Slack](https://slack.cncf.io/) in the `#serverless-workflow` channel.