Hacktoberfest: Contribute to open source projects!

Dear developers and anyone who wants to contribute to open source,
It’s Hacktoberfest! Hacktoberfest is an event organized by Github, Digital Ocean, and Twilio each October to promote contribution to open source projects. It is a great time to find a project you are interested in and see how you can get involved. It is also a great time for people who haven’t contributed to an open source project to get started.
If you want some ideas, we have a lot of open source projects! Here are some that might be of interest:

  • OpenNURBS (C++, C) - OpenNURBS libraries allow anyone to read and write the 3DM file format without the need for Rhino.
  • rhinoscriptsyntax (Python) - library for Python scripting engine that runs on both the Windows and OSX Rhino as well as Grasshopper
  • GhPython (C#, Python) - A Grasshopper component for Rhino.Python
  • compute.rhino3d (C#) - REST geometry server based on RhinoCommon and headless Rhino
  • rhino.inside samples - Sample Projects for Rhino.Inside
  • RhinoVR (C++, C) - a Rhino 6 virtual reality sample plug-in
  • ThreeLib (C#) - .net Class Library for creating Three.js compatible objects
  • glTF-Rhino (C#) - Support for glTF 2.0 files in Rhino
  • ghgl (C#) - OpenGL shader support in Grasshopper
  • GhShaderNodes (F#, C#) - Grasshopper Shader Nodes
  • CCSycles (C, C++, others) - a C API for the renderer Cycles. CSycles: a C# wrapper around CCycles.
  • Rhino Mobile (C#) - Open source, cross-platform 3D library for mobile based on RhinoCommon and openNURBS
  • Eto (C#) - Cross platform GUI framework for desktop and mobile applications in .NET
  • compat (C#) - Checks compatibility between plugin.dll and api.dll.

We also have a number of open source projects by third-party developers (in no particular order or preference, just some I recall or discovered on food4rhino):

  • Speckle.Rhino (C#) - Rhino 5 & 6 + Grasshopper Speckle Clients
  • Grevit (C#) - Build your BIM Model in Grasshopper or SketchUp
  • Machina (C#) - A library for real-time robot control.
  • Dendro (C#, C++, C) - volumetric modeling for grasshopper built on top on openvdb
  • Conduit - enables designers to create custom data visualizations and heads up displays that update with your parametric models. NOTE: Since code is hosted on bitbucket, PRs do not count towards Hacktoberfest.
  • Plankton (C#) - A C# half-edge mesh data structure, and components for using this in Grasshopper/Rhino
  • HumanUI (C#) - Human UI is a new interface paradigm for Grasshopper. Create professional looking Grasshopper apps with custom user interfaces without writing any code. NOTE: Since code is hosted on bitbucket, PRs do not count towards Hacktoberfest.
  • MeshMachine (C#) - Remeshing component for Grasshopper using Plankton
  • Kangaroo 2 Goals (C#) - Example Goals for use with the Kangaroo2 solver
  • K2 Engineering (C#) - This plugin contains a set of customised Kangaroo2 grasshopper components with the scope of calibrating a number of goals with regard to structural properties./K2Engineering

If you have an open source project you’d like to include in this list, please DM me with the details.


Hi Luis,

How would I go about for instance propose a change in a rhinoscriptsyntax module?
I’m used to posting here but maybe it’s easier to directly do a proposal via GitHub

For most of the open source projects that ship with Rhino, we prefer using YouTrack, since it allows us more flexibility compared to Github issues.
For rhinoscriptsyntax, my suggestion would be to open an issue using the Subsystem: SDKPython: https://mcneel.myjetbrains.com/youtrack/issues/RH?q=Subsystem:%20{SDK:%20Python}%20. Otherwise, feel free to open a new thread here, or add a comment on a relevant thread and we can make a YouTrack issue.

If you want to actually propose this via a code contribution, my suggestion would be to:

  1. Create an issue which outlines your proposal
  2. Fork the repository
  3. Make a branch in your forked version
  4. Make your edits
  5. Commit your changes, and push to the remote
  6. Open a Pull request on the original code repository, referencing the issue

If any of that is new to you, but you’d like to contribute via a Pull Request, we are happy to help you get going.
Same goes for the rest of the repos I listed. Also note, that a contribution via a Pull Request need not be code, it could be adding some information to help document something, for example, some method in an sdk that hasn’t been properly documented.
My intention with this is to see where we might not be doing such a good job of letting people know how to contribute.