Developer Contributing Guide

Dear CWL maintainers,

Thank you for your job, we really appreciate CWL and would like to contribute to the project from time to time.

Is there any documentation to onboard new contributors and explain the relationship between the different CWL repositories? I’ve been trying to understand the workflow to figure out where new logic should live, but I’m not sure I have the full picture.

From what I understand so far (please correct me if I’m wrong):

  • The CWL specifications live in repos like cwl-v1.3, cwl-v1.2, etc.

  • schema_salad is used to turn the CWL specs into Python code and schemas used by

  • cwl-utils, which provides Python utilities and data models for working with CWL

  • cwltool then builds on top of that to handle validation and execution of CWL workflows

If that’s roughly correct, would it make sense to have a short (and may be shared) contributing guide or architecture overview (mermaid diagram) somewhere that explains:

  • which repo should contain what kind of logic, and

  • how changes are expected to flow between spec / utils / cwltool?

Also, a few process questions that might be useful to document for contributors:

  • For questions or design discussions, what’s preferred: the CWL forum, GitHub issues, or PR discussions?

  • Is it okay to open PRs without a corresponding issue, or do you prefer an issue first for any non-trivial change?

  • How are issues/PRs usually prioritized (e.g., based on spec relevance, maintainer bandwidth, user demand)?

This would make it much easier for new contributors to place PRs in the right repo I think.
Thanks a lot for maintaining it :slightly_smiling_face:

(Sorry I would have preferred to include links to the repos but I can’t because I am a new user in the forum apparently)

Hello @aldbr and welcome!

We don’t have a centralized on-boarding page, no. But what you’ve started here can be the beginning of one.

Can you open a PR to update https://github.com/common-workflow-language/cwl-website/blob/31d95ec7a53d8e11a7978b3160d941f48dc62059/content/getting-started.html and we can work together there to answer your questions?

(Thank you for your persistence in following up, I saw your similar question in a thread on GitHub but I kept losing track of it.)