Home - Amoursol/hello-world GitHub Wiki

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. Over the past year, we have seen Dynamo become over twice as stable if you compare Dynamo 1.3 with Dynamo 2.5.
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
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