-
Notifications
You must be signed in to change notification settings - Fork 669
Dynamo 2.0
It took nearly 3 years for Dynamo to get to 1.0. Getting from 1.0 to 2.0 should take far less time. This document will track the proposed changes to this repository and to the Dynamo API to achieve Dynamo 2.0. For the foreseeable future, Dynamo will be the engine behind
- A coherent, idiomatic, API with tooling to enforce that standard.
- Example: To create a new
DynamoModelcurrently, you must callDynamoModel.Start(...). This is not idiomatic c#. The creation of a newDynamoModelshould be available by callingnew DynamoModel(...).
- Example: To create a new
- Documentation of all APIs with links to code samples where necessary.
- Decouple the VPL from the current Design Script implementation. Separate AST generation from the
NodeModelimplementation. By having AST generation on eachNodeModel, we've coupled Dynamo to one language, Design Script. - Strict layering. All functionality not specifically related to the creation or execution of the workspace should be moved to another layer.
- Example: We currently have the methods
DynamoModel.Cut()andDynamoModel.Paste(). Cut and paste functionality should be in the view layer. - Example: Our
RecordableCommandtypes wrap method calls for the purpose of enabling command playback. But command playback is only used in the context of an application. The wrapped methods should be made public and the recordable command infrastructure should be moved to a separate assembly.
- Example: We currently have the methods
The Dynamo repository has grown to include DynamoCore, the WPF UI used in Dynamo Studio and Dynamo for Revit, and all of the node libraries shipped with those products. The focus in Dynamo 2.0 will be in making the repository slimmer, representing only Dynamo's core: the graph and the Design Script language, and not all the bits that are parts of Dynamo-based applications. The Dynamo NuGet packages will be the primary mechanism by which associated projects consume the Dynamo APIs.
- Remove all build errors in
Dynamo.All.sln - Remove all node library projects from
Dynamo.All.sln. - Each node library currently residing in core should be moved, along with its testing libraries to individual repositories which are formatted as packages.
- Enable automated build and testing of all node library repositories.
- A Readme and Documentation for all node libraries should be provided in a consistent manner. For documentation, consider using the same framework in place to generate the documentation for the core API.
- Move the
DynamoManipulationextension to a separate repository. - Move the
DynamoPackagesextension to a separate repository. - Move
DynamoSandboxandDynamoCoreWpfto a separate repository. - Move the
UpdateManagerto a separate assembly,UpdateManager.dll - Move
DynamoApplicationsto a separate assembly. - Move all issues associated with specific node libraries or Dynamo for Revit to their respective repositories.
- Transfer wiki pages as required.
- Create automatic builds of Dynamo NuGets during build.
- Make methods called by the
RecordableCommandtypes public, where appropriate, and moveRecordableCommandsto a separate assembly. - Remove all
InternalsVisibleToexcept for testing projects fromDynamoCore. - Move
EngineControllerintoWorkspace. - Remove "current" workspace distinction. Enable multiple home workspace support.
- Relocate or internalize all members not defined in the interfaces.
There is a half-complete set of interfaces currently available for Dynamo. The goal for 2.0 is to complete these interfaces, and make all existing Dynamo code use these interfaces.
- Rename
DynamoCoretoDynamo - Create
Dynamo.Interfacesassembly. Move interfaces for the model here. ReferenceDynamo.InterfacesinDynamoIDynamoINodeIWorkspaceIConnectorIGroupINote
- Replace all references to
DynamoCoretypes with references to their interface.
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