Thoughts on grasshopper plugins

One of the things that makes Grasshopper powerful is its plethora of plugins and a great community of developers, so I am very grateful. However, these are a few issues that I have had with plugins over the years, especially with Rhino 8.

  1. Random plugins start/stop loading with Rhino updates. For instance, NGON and lunchbox stopped working.
  2. They are a pain when sharing your script with clients. Some plugins download automatically while others (like Pufferfish) require the legacy loading into the components folder.
  3. Developers sometimes do not keep them updated. For example, I have had to replace all the old Human components with the Rhino 8 “rhino” attribute components.
  4. There is no way of organizing them at the top. Some plugins have only a few components, yet occupy the same tab size as plugins with a full screen of components.
  5. Many plugins are libraries of a hodgepodge of utilities that firms have developed. Often these components do the same thing as many other plugins or core Grasshopper does. I much prefer libraries that do specific things that are distinct so that I don’t download what I don’t need.
  6. Plugins make starting grasshopper slow
  7. Why not use the paradigm that is used when coding: You call a library or only a part of a library when you need it? You don’t load the whole library every time you open the IDE.

If anyone has thoughts or solutions for these points let me know.

4 Likes

I have many thoughts on Grasshopper plugins, but right at the top of my list is Pufferfish not being on the Package Manager.

Food4Rhino currently shows Pufferfish has been downloaded 382,936 times.

Can we all start a campaign to get Mike to finally host it on the Package Manager???

Cheers

DK

1 Like
  1. My main thought on plugins: the less, the better. Collaboration is easier without plugins.

  2. Many plugins have a component which replaces 1 - 3 native components. This is nonsense.

2 Likes

plugins that extend the capabilities of grasshopper or fill in its gaps are great. eg: human, elefront (still using R7), Firefly (haven’t used it in a while, but it led to some cool connections between live environmental data gathering and grasshopper visuals)

plugins that are glorified clusters or offer “shortcuts to do xyz” or are toolboxes of a firm’s favorite scripts tend to be bad and end up causing more headaches because you inevitably run into an issue and so few people know how to correctly troubleshoot the plugin let alone help you/keep the plugin updated

2 Likes

First off, I want to express my immense gratitude to all the incredible developers who dedicate their time and effort to creating and sharing plugins for Grasshopper, often for free. Your contributions enrich the community and push the boundaries of what’s possible. Thank you!

Opportunities for Improvement
That said, I believe there’s room for improvement in how plugins are developed, organized, and integrated. Here are some areas I’ve noticed where things could be more streamlined:

  1. Naming Conventions
  • There’s no standard guideline for naming components nor their In and Outputs.
  • Some plugins use full descriptive names, others use abbreviations, and some rely on single letters. This inconsistency can make it hard to understand what a plugin does at a glance (and don’t get me starting how this messes with my OCD ;).
  1. UI Design
  • Plugins like Millipede introduce their own unique UI, which can feel disconnected from Grasshopper’s native experience. A more unified or standardized design approach could enhance usability.
  1. Shared Codebase
  • Many plugins lack a shared codebase or repository for collaboration, like GitHub. This would not only encourage shared development but also improve transparency and bug fixing.
  1. Prefix and Naming Standards
  • Some plugins use prefixes like “LB_” (e.g., Ladybug) to organize their components, while others don’t.
  • Having a consistent prefix or naming guideline would make it easier to identify the plugin a component belongs to.
  1. Native vs. External Components
  • It’s hard to distinguish native Grasshopper components from external ones at times (e.g., components like Mesh Edit.
  • A small UI indicator, such as a highlight , could help clarify whether a component is native or comes from an external plugin.
  1. Suffix Naming Conflicts
  • Some plugins use suffixes like “point_” for their nodes and then have like dozen of them named like this. This can surpase native nodes with the same name in the search field, making native ones impossible to find via this menu. A consistent naming hierarchy could solve this issue, or a scroll and filter option in this menu (as i proposed before).
  1. Dependency Tracking
  • Grasshopper doesn’t natively list plugin dependencies for a file nor is it avaialble as a node or menu item. MetaHopper has one method, and with python one can created a custom node that tracks external plugins, their names, libraries, and usage counts (search forum). However, it would be great if Grasshopper had a built-in tool to handle this.
  1. Invisible Tracking
  • ShapeDiver has this invisible node it seems. I don’t have it installed anymore, but when i open a older file that once had a node by them and that was delete, it still prompts it at lanuch asking for ShapeDiver Document Payload object

can wait what Joseph_Oster] has to say to your question , :stuck_out_tongue_winking_eye:

2 Likes

I’m avoiding plugins while I learn and get better at GH but I’m finding more and more that if I want to ever incorporate GH into actual profitable work I can’t be starting from such a low base every time I start a project.

I agree with the comments regarding more popular plugins: McNeel should purchase them off the creators, refine them, and then include them in GH.

3 Likes

Just bringing this back up to the top.

There are two plugins I use in 90%+ of my GH scripts that are both SUPER popular on Food4Rhino AND not available on the Package manager:

Pufferfish by ekimroyrp with 384483 dowloads:

https://www.food4rhino.com/en/app/pufferfish

Anemone by Mateusz Zwierzycki_1 with 186221 downloads:

https://www.food4rhino.com/en/app/anemone

There is a level of ‘friction’ in being able to share GH scripts with others if they have to manually install libraries such as these that does not exist if they are handled automatically by the Package Manager.

Considering how popular these (and possibly a few others) GH plugins are, could McNeel perhaps reach out to the developers and help them migrate the files onto the Package Manager.

I’m sure in both cases it is just a time/resource issue that these are not on the Package Manager rather than an actual decision to only offer on Food4Rhino.

Cheers

DK

3 Likes

@Keithscadservices @kiteboardshaper I highly agree with both of you. Take offset surface as a solid: that’s a foundational Rhino tool that is missing in Grasshopper made available by Pufferfish. The other ones I frequently use are mesh loft, mesh pipe, mesh offset, and flip plane.

1 Like

one might even consider setting up a poll, where user can list your favorite Non_Native components, that we would like to see brought to native grasshopper.

I for one would like to see MeshExplode or MeshFromPoints (I think both MeshEdit plugin) be brought to gh

1 Like

… or just expose functionality that is available in Rhinocommon and can be integrated with a few lines of code in a script component.

1 Like

i would love this as general approach - dedicate upgrade fees to features you wish:

1 Like

So, with todays welcome news that Pufferfish is now available on the package manager, is there anything that can be done to get Anemone on there as well?

Cheers

DK

If he hasn’t already been notified, one might reach out to @MateuszZwierzycki :magic_wand:

Just an idea here also regarding the OT. If you boil it down what happens, then its all about placing libraries into the right folder, to load the required plugins.

When you think about it you could mock something like a virtual environment from Python. You place you project files into a dedicated folder and include all the dependencies in there as well.

Then you write a simple Powershell/Batch startup script which copies the dependencies into the right folder, or you modify the path which Grasshopper should look for plugins within Rhino. This requires that your main plugin folder ideally does not contain any libraries at all.

1 Like

Whatever you did probably helped.