How was/is Rhino created?

I’m trying to understand how rhino became the software that it is today. What is the process behind creating a CAD based application software? Which programming language is it written in? I understand that it was originally designed for engineers as a plugin to Autocad. Which aspects of the software today can be traced back to its earliest form?
I’ve read Lev Manovich’s book, "Software Takes Command’ and i’m interested by the idea that software is a meta-medium. Some ‘tools’, which he describes as data manipulation techniques, are imitations of real life tools, just improved or extended by the computer, such as drawing a line or zooming. Others are completely new techniques, such as Box Morph or Boolean Difference, there is no precedent in history, prior to the computer. What is the process behind creating these tools? and how much does open source contribute?
I’ve also heard that developing software means walking a narrow line between designing a software and not over designing; writing adaptability into the software, what does that mean for the actual programming?
I understand this is a lot to ask so I’d appreciate any response. Thank you!

1 Like

Much of Rhino for Windows is written in C++ and Rhino for Mac in C++/Objective-C. The rest of Rhino is written in a .NET language, mostly C#.

Other than the concept of NURBS, probably nothing.

Customers have problems, and we try to provide tools to solve them.

The core of Rhino is written in-house. There is some open-source software - mostly in the form of libraries using in plug-ins, I/O, etc.

Providing tools that solve customer problems, not providing tools that programmers find interesting.

Hope this helps.

– Dale

7 Likes

On the open source front there’s the Cycles open source render engine integration work, where the work in the open directly drives the development and testing of the realtime render engine integration SDK for Rhino WIP.

1 Like

The basis first-impression GUI - 4 gray viewports - is probably still the same.

2 Likes

You might find this timeline interesting:
https://wiki.mcneel.com/rhino/rhinohistory

3 Likes

Poking around found this interesting command reference list of Rhinoceros 2 which already contained impressive list of tools/commands:
ftp://gdv.informatik.uni-frankfurt.de/pub/praktikum-ws01_02/RhinoDoc/Documentation/command_ref_us.pdf

Thanks Dale! It certainly helps.

Which parts of the software are written in the different languages? Is the GUI in .NET language?

Do you find the "error report process’ works, I know people often ignore it?

Thanks! Yes, it seems way ahead of other architects software at the time. no wonder it became so popular amongst architects.

Would be interesting to know on average how much the tool set has grown, or on average the percentage growth each release.

Speaking specifically of Rhino for Windows, the core is written in C++, and the user interface is a combination of C++ (MFC) and .NET.

Very much so - it is how developers prioritize their work.

– Dale

1 Like

Yes it would be nice to know that from more experienced users.

Great Timeline. I have tried to find out about AG or Applied Geometry who are mentioned at the start. I cant find anything about them online. I did find out that in 1992 Autocad acquired Micro Engineering Solutions MES who were the developer of SOLUTION 3000 who used NURBS based surface modelling. The companies two leading products at the time were called Design Expert and Manufacturing Expert. I assume that is when McNeel were reined in. I wonder if you know anymore about the company?
Thanks

Hi Dale, another few questions about programming Rhino software.

Is there anything you can tell me about the different paradigms. I know C++ supports multiple paradigms. Doe this mean the software uses, object-oriented, imperative, functional, declarative and procedural paradigms or is it mainly object oriented? And what do the used paradigms enable in rhino? as in, why might you use them and what benefit do they have for the user?

Could you tell me anything about Rhinos Software architecture? I believe this is something that’s established early on in software design, what was important, specifically for Rhino, or characteristic of how the final program works?

Finally, is there anything about the architecture of Rhino software that is a clear evolution of Sutherland’s Sketchpad software, I know there are some similarities obvious to the user, but any visible to the programmer?

Thanks so much. I’m writing a Thesis titled ‘Rhino: Beyond the Interface’

Yes

Its all about making stuff work for the customer.

Rhino software architecture

I doubt many here even know of Sketchpad…

– Dale

1 Like

Thanks Dale

This is such a critical comment I wanted to highlight it again. We try as hard as we can to be customer driver with respect to what we develop. Choosing a programming language or a technique of writing code is secondary.

1 Like

I understand perhaps, i didn’t word the question correctly. Why does that particular language or technique enable you to design the tool you desire for the customer. Im aware i’m ignorant, but why do you use one technique instead of the other, what makes that technique more able to get the result you want?

am i making sense?

Generally one uses the techniques and tools one knows best. But the most important part of solving a problem (i.e. creating tools our customers can use to do their work better) is not the choice of technology and techniques, but the skills of those implementing the solution. Technology and techniques are tools, through skillful use you get a working solution.

ahh ok. thank you

Yes you are making sense. There is also the historical perspective to keep in mind. Rhino development started a long time ago and the languages / tools available at the time were not nearly as numerous and robust as what are available today.

Or at least the techniques and tools that you and your coworkers know best. It’s good for many of us to experiment with different tools and techniques from time to time. If we find something to be “awesome” we try to start convincing others to check out the new things we have learned.