Modifying Ladybug Tools Components and AGPL

When modifying a Honeybee component/using it as inspiration for my own toolset, I noticed the text about AGPL license at the top of the script. I am wondering what this means for my toolset - if I use any of the Ladybug tools scripts as basis for my own script and distribute it, does my whole application need to also be licensed using AGPL? If so, any notes on how to make sure to do this in an appropriate way? I am currently using an MIT license.

1 Like

Hi @chojje ,

Thanks for your question and your understanding is mostly correct but there are a lot of nuances that can enable you to use a different license for your work depending on how you distribute it.

First, I would highlight that the licensing only comes into play when you distribute the software to others. While using it for your own purposes (or even internally within an organization), you can do whatever you like. You can use your custom toolset to offer consulting or energy modeling services to others that you perform and this is totally acceptable without you needing to share your tools or release them under a particular open source license.

The license is only going to come into play if you give or sell your custom software tool to a someone else or, for example, you offer a web service to a client that is using Ladybug Tools AGPL source code.

In that case, you are correct that derivative works from AGPL projects are supposed to be distributed under a share-alike open source AGPL license. However, if you separate your work from Ladybug Tools such that users install your code or components separately from the Ladybug Tools core libraries and components, then you can effectively make your part of the software a different license from the Ladybug Tools AGPL. So that’s one way to get around it as long as you don’t distribute an installer that includes both your work AND Ladybug Tools source code together.

I should also highlight that, as the copyright holder, we at Ladybug Tools are open to granting exceptions to the AGPL if we can get compensated in some way. We’ve had discussions about this in the past and one of the ways in which we’re currently starting to enable others to use the Ladybug Tools core libraries for their own web services is through Pollination Apps. But this is more for people who are trying to offer proprietary or private tools with our software. For your case with an MIT license, I imagine that the above paragraph is the most helpful.

1 Like

Thanks for the clear breakdown, @chris, it is a great help! To home in on my concerns, let me explain what I’m doing in a bit more detail:

I am developing a component suite which would add life cycle assessment functionality to Ladybug Tools, ideally you should be able to plug in any Honeybee model (i.e., a Honeybee.model.Model) and if life cycle data is available for the components in that model the life cycle embodied impact of the model would be calculated.

To do this I would need to be able to parse and work with the data in the Honeybee model in order to retrieve geometric information needed for the impact calculation. As any reasonable developer would, I am looking at a few of the Honeybee components to check what the API looks like in practice and how you retrieve information from the various data objects. That is, I am not directly modifying any Honeybee components to create mine, but I am certainly heavily inspired by them. The question is if this counts as “use of the Ladybug Tools source code”.

The idea is then to release these components as an open source, free-to-use plugin on Food4Rhino. The question is whether the above use case falls under the requirement to conform to AGPL.

If so, the follow-up question is whether I need to somewhere state that the work is derived from Ladybug Tools, or if it is sufficient to also license my toolset under AGPL.

1 Like

You’re very welcome, @chojje ,

In honesty, our choice of AGPL was driven by the fact that some software vendors in our past used our code in commercial products and web services without attribution or any type of compensation, which put us in a vulnerable position since we’re still building a self-sufficient company that can maintain Ladybug Tools long into the future. Your case here of making a free open source plugin or extension off of the Ladybug Tools work is something that we want to encourage and we don’t want the license to hinder. So, as long as your distribution on Food4Rhino doesn’t include the Ladybug Tools core libraries (having people install Ladybug Tools separately) so that it doesn’t give vendors the impression that Ladybug Tools is MIT, then you really can go ahead and make your components MIT. Using the Ladybug Tools components as inspiration does not count as a derivative work and the choice of license is yours.

Granted, if you choose a GPL license, this may make things easier if you want to distribute your work through channels other than Food4Rhino. For example, I would point you to @edpmay 's work on Honeybee-PH. He has used the recommended ways for extending the Ladybug Tools core libraries by building a honeybee-energy extension package called honeybee-ph, which he distributes through PyPI as well as in his Grasshopper plugin. You could similarly build a honeybee extension that injects properties and methods onto things like constructions and materials so that you can track embodied energy and carbon of those materials as models are constructed and edited. And this may make your work easier to maintain, easier to reuse in environments other than Rhino, and easier for other software developers to build on your work.

However, because PyPI automatically distributes the dependencies along with your package, you really should be choosing a GPL-style license if you want to distribute through PyPI since people will be getting a copy of the ladybug tools core libraries when they use pip install honeybee-lca or something like that. So that’s all just something to keep in mind.

To answer this:

The AGPL states that you should give attribution if you’re distributing Ladybug Tools or copy/pasting it’s source code into your own. From our perspective, it’s always nice to be appreciated but we aren’t sticklers for this type of thing unless we see someone deliberately trying to avoid crediting us or claiming our work as their own. The fact that you’re asking these questions on a public forum already shows us that you’re not that type of person. So please try to credit us but don’t beat yourself up if you forget :slight_smile: .

1 Like

Thanks for this thorough explanation of your mentality! In that case I will stick with MIT for now to speed up testing and development, and then move to AGPL if/when I am ready for any kind of commercial release.

1 Like