I have recently been part of a DynamoDev Day, hosted by WeWork and organized by Jerico Prater of Woods Bagot. Thank you for getting all these great people in the same room with Dynamo developers, so we can air our grievances, hopes and most of all speak freely about a software that we all care about. If this was a UFC fight I might, in my best Joe Rogan voice, announce this meeting by first introducing the Autodesk brass, current Dynamo source holders, undisputed creators and champions of all Dynamo development. In the red corner was Matt Jezyk, Zach Kron, Ian Keough and newly minted Dynamo team member, Craig Long. In the blue corner, outnumbering the Autodesk brass at least 2:1 were the challengers. In no particular order, Andrew Heuman, Brian Ringley, Jerico Prater, Shane Burger, Jan Leenknegt, Robert Cervellione, Will Wong, Erick Katzenstein and…whomever I forgot. Sorry mates, my memory is a sieve. Anyways, one of the takeaways from this meeting was that Autodesk has really hoped that by now – 3 years into Dynamo being Open Source, 376 Dynamo DS Git Hub repo likes, 259 forks, 2200 issues open – they would have more than 4 commits from Dimitar, 3 from Alex, 2 from Andy etc. for a grand total of couple tens of lines of code contributed from the “community”.
Well, I am not exactly surprised, looking at who the Dynamo community is. Let’s be honest here, I am not a full time developer. I didn’t go to school, studying computer science, spending my nights hacking into Hilary Clinton’s email server (although that might not be all that hard from what I hear), but I am getting off point here. The point is, that Dynamo community is not a community of programmers. We are a community of users, and I think that the most reasonable contribution that anyone should have expected was the 2200+ issues open, by the community members, letting you all know what is wrong with the software you are writing, so that you can make it better. Of course there are some in the Dynamo community, that might have the coding chops to actually contribute some meaningful code to the project but then, there is my point #2.
Open Source communities and large companies, don’t usually get along very well. We have seen this play out before. Let me bring forth an example of a company called Netscape Communications. They once were the pioneers of Internet with their first in the industry web browser. However, soon they were challenged by an unforeseen move from Microsoft that decided to release its own Internet Explorer and ship it for “free” with their operating system, Windows. Now, on the brink of going bankrupt, Netscape attempts to try something that few have tried before: beat Microsoft at its own game by releasing its browser’s source code and make it Open Source. They were hoping that if their browser was free, it would get picked up by, basically everyone and become a new industry standard. That of course has not happened, for variety of reasons, at least not back then, and it hasn’t saved the company from getting bought out by AOL. Anyways, it took the Netscape open source version more than a decade to become popular, and now it’s actually thriving. You might be reading this on that browser, it’s now called Mozilla Firefox.
I guess what I am getting at here, is two things. First, it takes time for Open Source developers to gain trust in a product, especially one coming from a commercial company like Netscape/Autodesk. Two, it takes time for developers to learn the ins and outs of the product, before they can actually start contributing anything. Why? Because I can imagine it’s just slightly hard to jump into Dynamo’s source code, and make any sense of it for a professional programmer, not to say for a self taught noob like me. So in all honesty, Autodesk, just chill. People will come around, and if they don’t then I have one last point to make which might be an answer why.
Why is it that I cringe every time I think of Autodesk? I hope, not everyone has the same feeling, but I have to be completely honest here. It’s not that I don’t like the people there, quite the contrary. I have “grew up” following Zach Kron’s Buildz blog, and have always thought of him as a mentor, someone I looked up to. In my years, working in the AEC industry I have only ran into some of the best people working at Autodesk: Mike Kirshner, Peter Boyer, Andy Payne, Jeremy Tammik and that list goes on and on. Somehow, I still cringe when I think of Autodesk. I don’t know why, but i think there must be something in the fact that I also “grew up” shamelessly cracking their software because I was at the time overpaying for my degree in architecture and couldn’t afford their overpriced software while about every other company out there had either special deals for students or outright free versions available. Is it because since I came out of school and learned to be an “expert” at some of their software, I still answer half of the questions with: “I am sorry you can’t do that in Revit”, “I am sorry it doesn’t work like that in Revit”, “I am sorry, it has been like that for years so I doubt they will actually fix it” or worst of all “I am sorry, they are not putting that feature in, but I think they added sketchy lines this year”. I don’t know, what it is, but no one that I have ever talked to, that works in this industry, has ever told me that Autodesk released a great new piece of software, it’s amazing and it actually works. Now, that might sound a little harsh, and I don’t mean to offend anyone, but I think we all just universally hate on the company that we can’t live without. Somehow we have made our careers from being experts in their product, yet it never feels right to stand up and defend any of the company product. Simply, put Autodesk has just a bad rep amongst those that its asking to contribute their time to their software. Now, as far as I am aware, we are talking about free contributions (as Richard Stallman would say “Free as in ‘free speech’, not ‘free beer.’” which in this case would have to be flipped to “Free as in ‘free beer’, not ‘free speech'” since we are talking about $$$). If that’s the expectation, then we, as a community, need to feel that we are contributing to a greater good. No one, is going to dedicate their free time, on nights and weekends to develop code for a company that in their mind stands for all that is wrong with this industry.
Having said that, and I believe every word that I have written so far, I went ahead on a limb and submitted my first Pull Request (PR) to DynamoRevit repo. Why? I also believe in things that are bigger than Autodesk. I believe in people, I believe in Open Source. So far I have only seen great people work for a company with a bad reputation. Does that make them less? No, that makes them just as good as anyone else, and they deserve our support. So here I am, asking you all, to keep doing what you have been doing, contributing bugs and opening new issues and for those of us that want to submit some code I might have a few pointers on things that I have learned submitting my first PR. I also have a few pointers for the Dynamo team over at Autodesk. Please add some documentation, on how to build your repo, and don’t leave any details out, since you are not speaking to programmers. That should save you at least 20+ Fail Points according to Tom Callaway’s “How you know your Free or Open Source Software Project is doomed to FAIL”. Yeah, you guys still check a lot of these fail boxes. Let me help with this one a little.
As it turns out, building a DynamoRevit repo wasn’t as straight forward as I though. There is a little thing that was left out from their README page that made quite a difference. Here are the steps that if you follow you should be able to get it going.
- First of all, current DynamoRevit repo is built against Dynamo 1.2 or the latest daily built which in this case is some version of 1.2. Install one of them.
- First go to Dynamo’s GitHub page and fork their repo. DynamoDS
- Next using a Desktop version of GitHub download it to your drive.
- Set the current branch to “master” and build it. It should go pretty smooth.
- Now, go to DynamoRevit GitHub page and fork that now. DynamoRevit
- Next using a Desktop version of GitHub download it INTO THE SAME LOCATION AS DYNAMO. This matters. Don’t create any new sub-folders for this repo. If you downloaded Dynamo into MyDocuments do the same for DynamoRevit.
- Now, set the current branch to version of Revit that you want to build it against. For me it was “Revit 2017” but they are maintaining a branch for 2015 and 2016 as well.
- Build it, and you should be good.
Couple of tips that Ian has given us during the DynamoDev day as well as few things that I have learned when submitting my own PR:
- Always create a new branch when you are working on something that you will later submit as a PR.
- Try to use “var someName = something” do declare variables rather than strong typing them. This is the standard and we should all follow it. :-)
- Check your spelling and your grammar when adding node descriptions. Sorry, all you ESL kids out there.
- Add any user facing strings to the *resx files, so that they can be localized.
- Don’t submit any commented out code. You can always submit another PR later (I am kind of quoting Ian on this).
There probably is more that I am forgetting, but the most important is: BE PATIENT! Yes, it might take some time for them to review it before it will get admitted into the source. When it does, however, I believe it will be a great feeling, since you will have just contributed to something that hundreds, if not thousands of people use across the globe to do their jobs. How cool is that?