Back to Blog

A guide on contributing to Dynamo for Revit - Part 1

Sylvester Knudsen
How to contribute to Dynamo for Revit

Over the last few months, we’ve been working with Autodesk’s Dynamo and Revit teams to build DynamoRevit nodes for the latest versions of Dynamo and Revit.

In total, we contributed 100 nodes to the open source DynamoRevit repository, including nodes for sheets, element types, groups, spaces, warnings, selection, and more. You can see the full list here.

In this series of articles, we are going to guide you through the contribution process. There are four parts in this series, with each one focusing on a different aspect of the process. Each part is based on our recent experience with contributing to the platform and aims to give the reader a better understanding of how to do it and how to get started.

Here’s an overview of what we’ll cover:

Part 1: Why contribute?
In the first part, we'll look at why you might want to contribute to DynamoRevit’s source code.

Part 2: Getting started
In the second part, we’ll go into the technical details of how to get started. We’ll look at how to make a copy of DynamoRevit and navigate the source code.

Part 3: Testing
In the third part, we’ll look at the concept of testing in software development and, more specifically, what this looks like in DynamoRevit. We’ll explore how to access and set up the Revit Test Framework, how to set up a Dynamo addin in Revit and how to test it.

Part 4: Submitting your pull request
In the final part of the series, we’ll discuss pull requests and best practices for getting one accepted by the Dynamo for Revit team.

Please note that we won’t go into detail on how to write the code itself, but instead will focus on getting you set up for writing and submitting your code.

Part 1: Why contribute?

In this first part of our series, we're going to start with some context on Dynamo nodes and will explore the benefits of contributing to Dynamo for Revit. Let's get started.

Dynamo packages

In Dynamo, a package is a collection of custom nodes that can be used in workflows. There’s no doubt that packages are one of the most important features of Dynamo – they're super powerful and add a lot of value to the general experience of the platform.

What’s more is that anyone can create them and share them. Dynamo is an open source platform, which means it’s available for anyone to contribute directly to the source code – your contribution just has to be good enough!

And people do. Dynamo for Revit has an extensive library of 3rd party packages that users can download. The community for using and creating these packages in Dynamo is huge. At the time of writing, there have been more than 2.4m package downloads in total. There are also over 1,400 packages available and over 800 package authors on the Dynamo package manager.

But there is one caveat: packages make it harder to share workflows. This is because it’s difficult to know in advance which packages (or version of a package) the recipient has or needs in order to share workflows correctly. Luckily, the Dynamo team recently released the Workspace References feature to help with this.

Regardless, those figures speak for themselves - they show just how many people are contributing to Dynamo’s Out Of The Box (OOTB) functionality by building their own packages. Some packages are particularly useful and often they get a lot of downloads because of it. When this happens, it makes sense to add these ones as a permanent part of the Dynamo source code because having nodes as part of Dynamo’s OOTB library removes the need for package dependencies (and it makes sharing workflows easier too).

Our recent work with their team has taught us a lot about how to do this, including what’s required of you and your code. In the next part of this series, find out more about how to get started with your contribution.

← All posts
Latest POSTS

Get regular updates from matterlab.

Enter your email address below to get monthly updates on our team, work and industry trends and changes.
We will never share your email address with third parties.