Appendix: Speckle
Author's Note, June 2021: If you are looking for the current Speckle codebase, head over to https://github.com/specklesystems. Speckle has had several major changes, and, as any active software project, it continues to evolve almost every single day.
History
2015: Speckle A Simple 3d object sharing
The first instance of Speckle, released in November 2015, was aiming to enable a very simple and direct, almost Instagram-like, sharing mechanism. It allowed users to instantaneously share geometry online from a Grasshopper model with the help of one single component. The resulting web link could be shared with anyone else and embedded a commenting mechanism through which others could leave textual remarks on the shared geometry.
2016: Speckle B Solution space exploration
The second instance of Speckle implemented the notion of generation and exploration of pre-computed solution spaces. First released in April 2016, it consisted of a Grasshopper plugin and a web application where users could upload, manage and view their pre-computed solution spaces.
The main point behind this version was to allow multiple stakeholders to collaboratively define shared meanings of value through negotiation based on a parametric model. The parametric model itself, raised to the status of a negotiation tool, would ideally incorporate all parameters (i.e., inputs) and performance measures (i.e., outputs) that have relevance to the stakeholders involved.
The parallel coordinates interface shown above allowed end-users to progressively filter the solution space by applying constraints to both input parameters as well as performance criteria. In the two screenshots above, an end-user initially applied a filter on the “Floor-to-Area Ratio” performance measure, restricting it between two intervals. Subsequently, the end-user applied a secondary filter on the number of office floors in the development, selecting a maximum of three. The interface would then display only the instances that would match the end-user’s requirements.
Code:
2016: Speckle C Real time communication & solution space pre-computation
Speckle C, or Speckle Streams, was the first instance of Speckle that allowed for data transaction between multiple users. Originally, it was developed to support the parallelisation of solution space pre-computation. It allowed for drastically reducing the time required to compute the full parameter space by enabling end-users to use multiple instances of Grasshopper, spread across multiple computers, for this task. Furthermore, it provided an online interface through which a designer could easily define the amount of instances a parametric solution space should be divided into.
It also paved the way for the separation of the actual data transaction layer from the communicative transaction one: Speckle Streams exposed both a REST api for large data payloads as well as a WebSocket API for real-time event notifications.
This enabled end-user collaboration across multiple Grasshopper definitions, as shown in the video still above. This specific version of Speckle was, nevertheless, tied to the Grasshopper parametric modeller, and could not have been easily embedded into other applications.
Code:
2017: Speckle D Speckle Works
Releases: March 2017 (v.0.0.1), September 2017 (v.0.0.3), April 2018 (v.1.0.0-beta), ongoing.
This iteration of Speckle is the foundation on which this research project was built on. Essentially, it was a complete re-write of Speckle Streams, with an emphasis on scalability, robustness, transactions and interoperability. While the previous iterations were centred around Rhinoceros and Grasshopper, this current iteration explicitly separated concerns to allow for other software, such as Revit and Dynamo to be incorporated in the communicative network. For more information on the current state of the art, please refer to its website (https://speckle.works).
Technical Overview & Code Documentation
At the time of writing, this project is alive: contributors continuously modify and improve the code. For end-user documentation, please check this link. For developer documentation, please refer to this link.
SpeckleWorks Github Organisation: https://github.com/speckleworks
Speckle Platform Sub-Projects:
- SpeckleServer
- SpeckleCore
- SpeckleRhino
- SpeckleDynamo
- SpeckleBlender
- SpeckleUnity
- SpeckleView
- SpeckleThreeViewer
- SpeckleAdmin
- SpeckleSpecs
- And more. For the full list, please check the github organisation’s page.
Code contributors (in no particular order):
Mishael Nuh, Matteo Cominetti, Matthew Swaidan, Paul Poinet, Alvaro Pickmans, Tom Svillans, Antoine Dao, Will Pearson, Luis Fraguada, Radu Gidei, Nic Burgers, Chris Morse. If any are omitted, please accept the sincere apologies of the author. For the definitive reference, refer to the contributors page of each repository.