Skip to main content

Contributor's guide

Getting started

Thank you for showing interest in contributing to Windmill.

Community contributes to Windmill in a variety of ways, from code and documentation, to resources (Scripts, Flows, ResourceTypes, OAuth providers) others can use.

The best way to share your Windmill resources with the community is by using the WindmillHub. There, anyone can share their Scripts, Flows, OAuth providers and Resource Types. If the submissions meet the quality standards, they get approved, and become available for anyone to use directly from their instance of Windmill.

Below you will find guides on how to contribute those to the Hub, and thank you for being part of the community!

Resource Type

Resource types are simply jsonschema whose reason of being is to give a "type" to resources by constraining the properties or field that the resource can be as a JSON object. In addition, they serve two main purposes in Windmill:

  • filter resources by resource types for the generated UI
  • allow to have a way to manually create resources of that resource types using the autogenerated UI from their jsonschema. Here for instance the form associated to the resource type postgres.

Add a PG resource

Adding a resource type to the hub will, once approved by the Windmill Team, be automatically merged into the community/ folder of the Windmill repo through a github action.

Once added to the community folder of the repo, the windmill-gh-action-deploy will deploy it in the starter workspace of Windmill Cloud. Being deployed on the starter workspace means that it will be available to all workspaces.

To add a resource type to the WindmillHub, go to https://hub.windmill.dev, then in the Resource Types section, Submit a new Resource Type. You can then add your argument one by one or use the monaco editor to edit it as a jsonschema directly.

OAuth providers

To add a new OAuth provider, open a Pull Request to add a new item to: backend/oauth_connect.json.

The format is as follows:

"<name_of_resource_type_for_integration>": {
"auth_url": "<auth_url>",
"token_url": "<token_url>",
"scopes": <the list of default scopes to suggest by default>,
"extra_params": {
"<key>": "<val>",
}
},

where extra_params is an escape hatch to deal with OAuth provider that need some extra fields to be passed along to the authorization URL.

Flows

Using the OpenFlow portable format, one can simply either copy and paste the exported Json of the flow in the WindmillHub Flow section -> "Submit a new Flow", or click 'Publish to Hub' in the flow editor directly.

Publish to Hub

Once a flow is approved by the Windmill Team, it will be directly integrated into the flows page of every workspace of every instances of Windmill.

Approved flow

Scripts

tip

More information on adding scripts to the WindmillHub can be found in the How-Tos section.

The WindmillHub only supports deno scripts. You can add a trigger or standard script to the Hub by going to the appropriate section and clicking "Submit a new script" or "Submit a new trigger script", then giving it an explicit summary, and submitting.

Add new script

Once approved by the Windmill team, the script or trigger script will be available for all to use directly inside their flows.

Pick a hub script