-
Notifications
You must be signed in to change notification settings - Fork 634
Dynamo Public Roadmap
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.
We have a three-fold focus of work in the current quarter:
- Node autocomplete (Contextual graph creation)
- Upgrading Python to Python3 (Modern scripting experience)
- Modernizing our 3d graphics experience.
This is in conjunction with a strong focus on better stability, removal of rough edges, and an increase in consistency.
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
- Robot Structural Analysis
- ... and more to come!
Over the last several months, we have had a strong focus on four areas:
- Allowing users to share content more effectively
- Performance of Dynamo execution
- Upgrading Dynamo's graphical framework
- Modernizing Dynamo's code base
Our goal in this next few months is three-fold:
- Contextual graph creation and in-product nodal documentation
- Providing a modern scripting experience in Python
- Deliver a modern 3d graphics experience to 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 AEC 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.
As we push to extend Dynamo into new hosts and new environments, the complexity of how nodes interact with each other increases; DynamoCore has many hundreds of nodes as does DynamoRevit as does DynamoCivil3d and so on. How do they all interact? What node is appropriate to use when? How can you, as a user understand what will actually work, or create a graph that runs without warnings?
We hear your pain and want to make sure that Dynamo is as simple and easy to understand as possible, especially for the novice user. We are embarking on this journey with a Node Autocomplete feature that will curate potential options to only those with viable types and then offer suggestions from within this smaller set. It will make your graph creation experience less prone to errors by eliminating nodes that cannot possibly work together, allow you to build graphs faster and in a more intuitive way by only showing you only contextually relevant options and automatically wiring your chosen node into the graph! Expect to see a phased release of this feature as we seek to remove frustration from your daily Dynamo use that starts small, gets it out into your hands for testing and is subsequently iterated on and improved as we learn more about what you want to do with it.
We are also doing some foundational work to express the Dynamo Dictionary inside Dynamo which will allow you to see each node in context with a sample file to build a greater understanding of how that node fits into the Dynamo ecosystem. In the future, expect to see in context and in depth help around any Core node of your choosing!
We want you to have the most powerful, modern and current scripting experience inside of Dynamo. As such, we've listened to long-standing requests to update Dynamo's expression of Python from version 2 to version 3! About time right? Turns out it's a little trickier than simply integrating, but we've now scoped and are deeply immersed in a long project to upgrade from IronPython2 to CPython3.
Historically Dynamo has used the .NET compatible IronPython interpreter (the little engine that allows you execute Python code inside of the Dynamo and Revit) but the Python 3 version of that open-sourced project by IronLanguages is not yet ready for use, nor is there a release date. So, we are now moving to use the standard native Python interpreter, called CPython, that will continue to receive new features, maintenance and security patches as well as allow access to popular modern libraries such as NumPy, SciPy, Pandas, Keras and many more! Additionally, we are using the open source pythonNet bridge project to call the CPython interpreter.
As part of this work, we will be providing a Python Migration Assistant to help you transition your Python 2 code to Python 3 that will show you, visually, the difference between the old and the new. You as the author will get to choose to accept this migration or re-write your own code at will. In addition to the assistant itself, we will be providing pop-up error messages upon graph open and extensive documentation highlighting the shift so that you, your peers and your colleagues will understand the change - regardless of technical ability. If you consume Dynamo graphs and don't author, or live and breathe Python, you'll be able to either get help or help yourself move into this brave new world!
In order to deliver a more modern and streamlined 3d graphical experience, we have spent the better part of the past quarter upgrading our graphical framework Helix Toolkit. This upgrade will allow Dynamo to continue playing nicely with our host integrations and provide an improved, more performant and smoother overall experience.
Our first integration of the updated Helix Toolkit will seek to match the existing functionality in a parity play where the overall Dynamo experience is functionally similar to what we have today; we do not want to break your existing Dynamo experience! What we have done in this parity play is modernize our integration and improve many under-the-hood features such as shaders, lighting and dependency management. Expect this to surface itself in a slightly different visual experience, a faster and more performant workflow and a clean-up of the binaries (Extra things we ship to let Helix work). While we have not quantitatively measured performance yet our internal subjective testing is much faster and smoother!
Subsequent to this parity play, upgrading Helix Toolkit unlocks the ability for us to add new graphical features; possibilities are allowing users to set sun and shaders, camera angles, scaling of helper objects and so on. We will provide more clarity on this in the future.
We are continuing to deliver work that will use simpler language and improve the overall performance of Dynamo. This is in conjunction with a continual improvement to stability by increasing our MTBF (Mean-time between failure... a fancy way of saying Dynamo works for longer before crashing) with a strong focus on fixing crashes and critical bugs.
Later in the year we will also explore follow-up work on the Workspace References viewer, which helps you install missing packages but could do so much more, and TuneUp that allows you to check the overall execution time of your graph as well as explore per-node timings. Both of these extensions are slated for deeper and broader functionality.
As always we seek to improve the overall Dynamo experience by taking account of the Dynamo Wishlist for easy-wins and larger scope plays and pay close attention to the Github Issues.
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.
We are looking at lowering the barrier to entry and increasing the potential for success in Dynamo; specifically, how can we take what Dynamo is and hone the rough edges, remove some of the frustrations and inconsistencies, surface the appropriate information at the appropriate time and get Dynamo to a place where it behaves more like you expect.
This follows on from our work around making Dynamo simpler, which is ongoing, and smarter with some specifically awesome stuff cooking under the hood right now! More information to come in the not-to-distant future on this one.
This next set of work falls into the modernization camp where we strive to improve the overall experience of Dynamo's outdated components that brings more performance, better graphics and new opportunities into the Dynamo space! We're also looking at a few new awesome features to build upon what Dynamo can be and, as always, look to better your overall experience with Dynamo by fixing bugs and enhancing the stability and performance of Dynamo.
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
November 2019
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.
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!
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 References 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.
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.
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.
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!
We are wrapping up work on the Workspace References 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.
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.
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.
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
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.
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.
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.
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!
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.
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 Workspace References 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.
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.
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.
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.
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.
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.
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.
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
Looking for help with using the Dynamo application? Try dynamobim.org.
- Dynamo 2.0 Language Changes Explained
- How Replication and Replication Guide work: Part 1
- How Replication and Replication Guide work: Part 2
- How Replication and Replication Guide work: Part 3