Skip to content

Dynamo Public Roadmap

Sol Amour edited this page Nov 14, 2019 · 42 revisions

Hello everyone - As we did last quarter, we are releasing our Public Roadmap to talk about the awesome new features and developments on Dynamo we're working on right now and into the near future! In this Roadmap you'll find out what we are working on for the next quarter, where Dynamo is headed and why we chose this path.

But first, a quick caveat...

Terms and Conditions: This Roadmap will make statements regarding our planned development efforts. These statements are not intended to be a promise or guarantee of future delivery of fixes, focus or features but merely reflect our current plans, which are subject to change. The Dynamo team intends, but assumes no obligation to, update this forward-looking roadmap to reflect events that occur or circumstances that exist or change after the date on which they were made.

Which simply means we will do our best to adhere to this roadmap but make no promises to do so.

What is Dynamo Core and where can I get it?

Dynamo Core is a collection of bundled components that consist of:

  • The graphical interface
  • The compute engine
  • The scripting language DesignScript
  • The out-of-the-box nodes that are not specific to another program like Revit

Dynamo Core is made available to host integrators to incorporate into their own products and will become available on the release of these host products or their updates. You can also access Dynamo’s Core technology through Dynamo Sandbox, a simplified development environment for package developers and other people working with Dynamo code who want to stay up to date with the latest and greatest stuff coming out.

Current list of host integrators:

  • Revit
  • Civil 3D
  • FormIt
  • Alias
  • Advance Steel
  • ... and more to come!

What we are working on right now

Over the last several months, we have had a strong focus on 4 areas:

  • Sharing packages more effectively
  • Stability of the system
  • Performance of Dynamo execution
  • Providing faster feedback and more documentation for the Dynamo community

Our goal in this next few months is three-fold:

  • Keeping the lights on by making sure Dynamo can talk to our Host applications
  • Delivering on our TuneUp and Workspace Dependency Viewer extensions
  • Dive deep into performance of the overall system to better target fixes for users

You can access all of our latest releases through Dynamo Sandbox (Our core technology environment targeted at the testing of new features, development and feedback) right now, or wait for your favourite host to integrate the newer versions of Dynamo in the near future!

In addition to this work on Dynamo’s core functionality we are actively supporting and developing Dynamo integrations across and beyond the Autodesk Collection and, while we continue making Dynamo’s computation capabilities a shared interface across multiple applications, we have also been establishing a firm foundation for Dynamo in the regular Revit release and feature development process.

Reinforcing the Foundations

Over the next few months we have some keeping the lights on work that sits on top of our desire to deliver user-focused features which means this particular Roadmap will be slightly less forward thinking and more foundational.

In this vein, there are two primary concerns for functionality retention and strengthening:

  • Making sure we keep the Geometry Library working in our host environments
  • Keeping the Background Geometry Preview working in Dynamo

We want to ensure that your Dynamo experience year on year is seamless. As Autodesk contains an ecosystem of products, and we are part of that ecosystem, we need to test ourselves against a set of required features that span multiple products, contain potential conflicts between components and incorporate upgrades to these features.

The first aspect of this is our geometry kernel which allows you to create geometry inside of Dynamo. We want to make sure that geometry continues to work seamlessly for the yearly release cycle of our product range: Revit, Civil 3d, FormIt etc. So, we are working hard at incorporating changes made by the kernel team into Dynamo and this will result in not only a seamless transition, but also includes improvements and bug fixes to boot! Behind the scenes we are also working on modernizing the LibG codebase (our geometry wrapper that allows Dynamo to talk to this geometry kernel) to make it easier to maintain and improve.

The second aspect of this is our Background Preview which is ran through the HelixToolkit. Our current iteration of Helix is a few years old now and requires a few older components, and while this is fine in and of itself, we are investigating upgrading Helix to make use of a whole slew of new improvements to Dynamo's graphical pipeline. In the not-to-distant future, expect to see better performance, less memory usage, smoother graphics through better anti-aliasing, and shader simplification.

Performing at a High Level

In the last quarter we focused on scale, empowering you through TuneUp (Our node runtime extension – set to be released early 2020) and collecting and profiling community collected workflows and we continue to have a strong focus on the performance of Dynamo. Dynamo has a bunch of performance bottlenecks that we are looking at starting to address in this quarter and we are exploring fixes to the interaction performance improvements at the user interface level, specific geometry performance improvements and improvements to the Virtual Machine that affect all graphs.

With the report on collection and profiling of real-world workflows by metaspace last quarter, we are consuming this report this quarter, prioritizing and then investigating the top few workflows that effect most Dynamo users. We will then pick at least one of these workflows to improve, such as slowness when opening a graph, panning and zoom lag in the canvas or improving the creation speed of objects from Dynamo into a host - expect to see a noticeable improvement to how Dynamo feels and operates!

We are also looking at comparisons between our virtual machine and AST (Abstract-syntax tree) interpreters to benchmark the performance of two different approaches to executing modern DesignScript. From this benchmarking we will then improve our documentation on the virtual machine as this will better position us for future work that directly benefits our customer base.

Using simpler language

We want to ensure you have a seamless experience in Dynamo, but sometimes things can go wrong. Currently, our error messages can be highly technical, jargon oriented or simply illegible to someone not from the field of computer science.

Given that these errors will continue to crop up when nodes are used inappropriate or interesting ways, we are re-writing the 30 most common error messages into easy to understand terms, while retaining the old error message below for searchability. This rewrite will also come with a clickable link that pops up the sidebar panel and contains information on what that error means, and how to best go about fixing it!

Ongoing work

We are wrapping up work on the Workspace Dependency viewer - name to be determined (So please sing out if you have a good one!). This viewer will allow a user to understand what packages their graph contains, install any missing packages directly from the extension and resolve any conflicting package states (i.e. where you have a version of the package that is different to the one used in the creation of the graph).

Work is also ongoing with TuneUp, with a first release slated for this quarter that will allow you to see how long each node takes to execute in your graph. Initially being released via the Package Manager, this view extension will eventually be wrapped up into Dynamo Core after enough time out in the wild to iron out any residual kinks. In order to enable this view extension, we have also cleaned up our public facing profiling API’s which will allow you, the community, to also build extensions using this feature!

Extension developers will also soon be able to use the TuneUp and DynamoSamples example Github repositories to understand how to write their own ViewExtension tests that create a more seamless experience for their extension users.

Where Dynamo is headed next

North Star

Our mission is to provide an inclusive, simple, coherent and capable visual programming environment for you – the people who make things. We are highly passionate about fostering a collaborative ecosystem for automation and computational design in which you can thrive. We want you to be able to learn from the broader community, to share your workflows within teams and across disciplines and to enable users of any level to find success.

What's brewing on the horizon

We are looking to make Dynamo more performant. Not only are we continuing to look at improving the performance of Dynamo, we are also exploring ways to decouple sequential actions to unlock yet more speed gains as well as explore parallelization and out-of-process Dynamo; we want Dynamo to be fluid, intuitive, swift and resilient!

We are also exploring ways to make Dynamo simpler. We want Dynamo to be simpler to use, to lower the barrier to entry for new users and streamline the experience for existing ones. We are looking at cleaning up the user interactions within existing Dynamo, smoothing out the user interface and evolving the user experience through exploring what visual programming could be - not the paradigms of the past, or where the technology sits today, but what is possible within the overarching space of workflow automation and computational design. We know there are many users out there who don't want to have to code, who simply want to improve their own work processes so we want to enable them to do that through Dynamo.

We also want Dynamo to be smarter. This means looking into and leveraging the cutting edge technology of today as well as talking to the broader Autodesk ecosystem, such as anticipating what kinds of tools people need based in their historical patterns of use, or proactively filtering based on compatible functions - we want Dynamo to break into this brave new world and provide a smart platform for the workflow automations and computational designs of the future.

Why we chose to focus on this work

This next set of work falls deep into the foundational camp which, simply put, means a bit of non-negotiable work; the last thing we want to do is diminish the experience of Dynamo as it is today! However, we're looking to add in some improvements during this process, release a couple of awesome new features and, as always, look to better your overall experience with Dynamo by fixing bugs and enhancing the stability and performance of Dynamo.

The wrapper

This public roadmap is driving us towards a future where Dynamo provides a simple, coherent and capable platform for you to collaboratively design and build a better world. We want to empower you to encode knowledge, make better decisions and automate manual processes, and explore new ideas in the collaborative and inviting computational design ecosystem of Dynamo. We hope sharing this public roadmap with you gives some insight into what the team is working on and we welcome all of you to provide feedback on the Dynamo Forums.

The Dynamo Team

Previous Roadmaps

September 2019

Hello everyone - For the first time in a long time, the Dynamo team is releasing a Public Roadmap to talk about the awesome new features and developments on Dynamo we're working on right now and into the near future! In this Roadmap you'll find out what we are working on for the next quarter, where Dynamo is headed and why we chose this path.

But first, a quick caveat...

Terms and Conditions: This Roadmap will make statements regarding our planned development efforts. These statements are not intended to be a promise or guarantee of future delivery of fixes, focus or features but merely reflect our current plans, which are subject to change. The Dynamo team intends, but assumes no obligation to, update this forward-looking roadmap to reflect events that occur or circumstances that exist or change after the date on which they were made.

Which simply means we will do our best to adhere to this roadmap but make no promises to do so.

Setting the tone

What is a Public Roadmap?

A roadmap is a statement of where we, the Dynamo team, see Dynamo evolving into the future and a public roadmap details to you, the Dynamo community, where we are headed.

It will contain some targeted goals we are making in the short term (Over the next three months) and a more aspirational north star of what we want Dynamo to become.

Why a Public Roadmap and why now?

We’ve heard from many of you that 2018 seemed like a quiet period without many visible improvements to Dynamo. Publishing this roadmap is restating our commitment to transparency and openness to the passionate and dedicated Dynamo community and user base. We want you to understand where Dynamo is going and the reasons why, so this roadmap outlines both our short-term and long-term plans. As Dynamo grows deeper into its Revit roots and broader across the new host applications, we hope you see this as a turning point and can't wait to hear feedback and ideas from the Dynamo community.

What is Dynamo Core and where can I get it?

Dynamo Core is a collection of bundled components that consist of:

  • The graphical interface
  • The compute engine
  • The scripting language DesignScript
  • The out-of-the-box nodes that are not specific to another program like Revit

Dynamo Core is made available to host integrators to incorporate into their own products and will become available on the release of these host products or their updates. You can also access Dynamo’s Core technology through Dynamo Sandbox, a simplified development environment for package developers and other people working with Dynamo code who want to stay up to date with the latest and greatest stuff coming out.

Current list of host integrators:

  • Revit
  • Civil 3D
  • FormIt
  • Alias
  • Advance Steel
  • ... and more to come!

What we are working on right now

Over the last several months, we have had a strong focus on 3 areas:

  • Performance of Dynamo execution
  • Stability of the system
  • Sharing packages more effectively.

Our goal in this next few months is two-fold:

  • Make our sharing and performance enhancements more usable with specific graphical interfaces.
  • Use stability improvements as a basis for teaching and sharing with peers.

In addition to this work on Dynamo’s core functionality, we are actively supporting and developing Dynamo integrations across and beyond the Autodesk Collections with Civil 3D, FormIt, Advance Steel, and Alias releases (with more in the works!). While we continue making Dynamo’s computation capabilities a shared interface across multiple applications, we have also been establishing a firm foundation for Dynamo in the regular Revit release and feature development process.

Enhancing the Sharing Experience

We want you to be able to share your graphs with ease - where a graph you receive of send out comes equipped with all the information it needs to be successful. Currently Dynamo doesn't tell you where to find missing package information when you receive a graph from a colleague, friend, forum and the like. Historically it has been up to you to figure out where those missing packages came from, either through trial and error or a little digging on the forums.

We want to get rid of this ambiguity and inefficient time spend of the days of old! So, we are adding a Package Dependency Viewer that will tell you what packages are missing from your graph, allow you to resolve package conflicts and also allow you to install missing packages directly from a sidebar panel. This will mean you can share your graph and help your peers learn more about packages they may not have discovered yet!

We're also working on discoverability inside the Package Manager by adding a Filter that showcases what packages depend upon other than Dynamo, such as Revit, Civil 3D or Photoshop. With Dynamo already being included in Civil 3D, FormIt, Alias, Advance Steel, this will become increasingly important as more dependencies are added and more host applications come online.

Standing on Solid Foundations

We want to improve the overall stability of Dynamo and are actively looking at how to create a more consistent and stable experience for Dynamo graph authors and consumers as Dynamo functions relatively well in many situations and not so well in others. So we are targeting the biggest offenders first.

DesignScript currently has a few nuanced crashes that impede user exploration and dilute the first-time experience with scripting in Dynamo. We are working on bringing up the languages overall stability by fixing several prominent DesignScript crashes such as when Dynamo crashes after you edit a custom definition.

We are also investigating memory leak issues that specifically target progressive slowdown that becomes apparent the longer you are working inside Dynamo. The workaround at present is to restart Dynamo, its host (Such as Revit) or in really bad cases - your entire machine. This is far from an ideal workflow, so we are looking to both discover and implement improvements.

Giving the Performance of a Lifetime

We want to normalize the performance of Dynamo to have a more linear resource cost as the scale and complexity of a graph increases.

We're going to automate our performance checks using the Profiling API we built in the second quarter of this year to benchmark each new build of Dynamo against the previous stable build. This gives us clear information on when and where performance takes a hit - and the ability to fix the problem!

We also see Dynamo performing very well in our tests and small use cases - but struggling at scale. We are collecting and profiling workflows we’ve collected from the community to understand where scale is a problem in Dynamo and target fixes that improve the performance of large graphs and large datasets.

To further empower you to understand how your graph is performing, we are building the TuneUp Extension that showcases individual node execution times. This extension will showcase where you can optimize your graph, what node operations are resource heavy and also allow you to compare workflow approaches to learn how to build leaner, faster graphs. TuneUp will initially be released as a view extension as this allows us to ship it outside of a particular release cycle. Follow the extension progress in the https://github.com/DynamoDS/TuneUp repository on Github.

Cultivating an Engaged Community

We will continue to engage with the Dynamo Community and cultivate the close-knit relationship that has been the foundation for such a welcoming, diverse and knowledgeable user base because we want Dynamo to be as accessible and valuable as possible.

So, we are working on documentation that helps those who want to integrate Dynamo into another product on their journey. You should be seeing more Dynamo in more places in the not too distant future!

To better support the Dynamo community, we will be actively responding to and pulling into our task backlog all PR's and triaging GitHub issues - targeting a 2-business-day response time. We are also releasing this public roadmap as we double down on the Open Source nature of Dynamo and are committed to being transparent in our actions and communication around Dynamo and its future.

Where Dynamo is headed next

Direction

Our mission is to provide an inclusive, simple, coherent and capable visual programming environment for you – the people who make things. We are highly passionate about fostering a collaborative ecosystem for automation and computational design in which you can thrive. We want you to be able to learn from the broader community, to share your workflows within teams and across disciplines and to enable users of any level to find success.

Tick-Tock Strategy

To balance the need to both grow Dynamo into the future (Feature additions and Modernization!) with foundational amendments (Stability, performance, reliability etc.) we are exploring using a Tick Tock strategy for Dynamo releases.

In this strategy we will have a tick release focused on the Future of Dynamo; Where it can go, how we can evolve the product, how people use visual scripting and so on, followed by a tock release focused on Improving what we have; Making Dynamo more stable, performant, fixing major bugs and the like. The release following this will come full circle back to the tick of the future.

Why we chose to focus on this work

Customer feedback matters a lot to us - in fact, almost everything we do is focused around you! However, we are also anticipating user needs above and beyond what is currently being asked for today as we aspire to DYNAMO ALL THE THINGS. For this promotion of Dynamo as a common compute language across multiple applications and domains we need much better performance, a componentized delivery for multiple host integrations and a cleaner, and a more robust and streamlined foundational Dynamo as we move forward into the future.

The Dynamo team spent a bunch of time this year going around the world collecting customer feedback through Europe, Southeast Asia, Oceania and North America in order to better get a pulse on the needs and wants of the community.

We saw 130 customers, representing 44 firms in 5 countries, and across 4 continents – each having their own challenges and using Dynamo in both consistent and very unique ways! We ran through thousands of post-it-notes enquiring around the challenges that firms face when using Dynamo, what were their barriers to success for both beginners and experts, their thoughts on sharing and their ideal future state of Dynamo.

Using this feedback, we have prioritized work this quarter (And the last) on changing Dynamo from being a great 1:1 tool into being a great 1:Many tool. We want Dynamo to work seamlessly within your organization and within the multiple applications that you work with. We see a Dynamo in a world where sharing content with peers is effortless and everyone is empowered to fix any issues that arise.

Simply put, we are focusing upon making Dynamo more useful for everyone in your business and business partnerships.

The wrapper

This public roadmap is driving us towards a future where Dynamo provides a simple, coherent and capable platform for you to collaboratively design and build a better world. We want to empower you to encode knowledge, make better decisions and automate manual processes, and explore new ideas in the collaborative and inviting computational design ecosystem of Dynamo. We hope sharing this public roadmap with you gives some insight into what the team is working on and we welcome all of you to provide feedback on the Dynamo Forums.

The Dynamo Team

Releases

Roadmap

How To

Dynamo Internals

Contributing

Python3 Upgrade Work

Libraries

FAQs

API and Dynamo Nodes

Clone this wiki locally