Hacktoberfest® is open to everyone in our global community. Whether you’re a developer, student learning to code, event host, or company of any size, you can help drive growth of open source and make positive contributions to an ever-growing community. All backgrounds and skill levels are encouraged to complete the challenge.
This year, Pulumi is participating in Hacktoberfest with three areas where the community at large can collaborate to build new open source capabilities.
[Pulumi CrossGuard](https://www.pulumi.com/docs/using-pulumi/crossguard/) allows you to create policies for logic that you may want to enforce on your cloud resources as code. Policies are written as validation functions that are evaluated against all resources in your Pulumi stack. An example of this in practice is [AWSGuard](https://github.com/pulumi/pulumi-policy-aws), a library that codifies best practices for AWS.
* [Crossguard Core Concepts](https://www.pulumi.com/docs/using-pulumi/crossguard/core-concepts/) - An in-depth guide to the core concepts for Policy as Code.
* [Configurable Policy Packs](https://www.pulumi.com/docs/using-pulumi/crossguard/configuration/) - A guide to authoring flexible Policy Packs that can be configured and reused.
The recently unveiled [Automation API](https://www.pulumi.com/blog/automation-api/) provides a robust programmatic layer on top of Pulumi's declarative Infrastructure as Software. By exposing Pulumi programs and stacks as strongly-typed composable building blocks, it means that Pulumi can now be fully embedded inside your software projects.
We've already seen the Automation API being used in incredibly creative ways, and we'd love to see what you dream up with it.
Here are some helpful links to get you started with the Automation API:
* [Go Documentation](https://pkg.go.dev/github.com/pulumi/pulumi/sdk/v3/go/auto) - Go documentation for the Automation API.
* [TypeScript/JavaScript Documentation](https://www.pulumi.com/docs/reference/pkg/nodejs/pulumi/pulumi/automation/) - Typescript documentation for the Automation API.
One of Pulumi's superpowers is that it allows you to easily create new abstractions and infrastructure building blocks in the form of [component resources](/docs/concepts/resources#components). A component is a logical container for physical cloud resources and controls how resources are grouped in the CLI. In fact, some of our own libraries like [awsx](https://github.com/pulumi/pulumi-awsx) and [kx](https://github.com/pulumi/pulumi-kubernetesx) do just that by creating higher-level components (i.e. component resources) on top of the [pulumi-aws](https://github.com/pulumi/pulumi-aws) and [pulumi-kubernetes](https://github.com/pulumi/pulumi-kubernetes) providers respectively.
Here are some helpful links to get you started on authoring your own component resources:
* [Creating and Reusing Cloud Components using Package Managers](https://www.pulumi.com/docs/tutorials/aws/s3-folder-component/) - A step-by-step guide to building and publishing a `StaticWebsite` component.
* [AWS Lambda Warmer as Pulumi Component](https://mikhail.io/2018/08/aws-lambda-warmer-as-pulumi-component/) - An abstraction of a common pattern to avoid cold starts in AWS Lambda.
* Docker Image Component in [Typescript](https://github.com/pulumi/pulumi-docker/blob/master/sdk/nodejs/image.ts), [Python](https://github.com/pulumi/pulumi-docker/blob/master/sdk/python/pulumi_docker/image.py), [C#](https://github.com/pulumi/pulumi-docker/blob/master/sdk/dotnet/Image.cs) and [Go](https://github.com/pulumi/pulumi-docker/blob/master/sdk/go/docker/image.go) - An example in each supported language, so you can use what works best for you.