Yes, of course you may ask!

> From a licensing point of view

This is pretty broad, actually, which is why I broke it down into roles that people might have in the post.

Instead of talking about generic roles, I'll give a concrete example and include the types of ways people might approach it. Sorry for the long post.

I'm building a GitHub-in-a-box VCS called Yar; it will be a VCS, but it will also include an issue tracker, a wiki, a forum, and ways to host it for others. Think something like the Fossil VCS meets GitLab.

Let's say it's done, and I have licensed it under a noncommercial SAMS license.

You find my VCS, and you're curious.

You start as an end user, downloading the source, building it, making a test repo, and generally just experimenting. The license encourages you to do this.

It turns out that you love Yar! (This is probably the most unlikely part of the story, lol.) You find out how to convert your Git repos to Yar repos, do the conversion, and you're still happy. So you decide that all your development will be in Yar.

Unfortunately, you now need to have somewhere to host the server part of Yar so that your code is accessible over the Internet. As the author, I provide hosting, which is free for SAMS projects but paid for proprietary.

Because you have proprietary code, you would have to pay. However, you know from your experimentation that Yar is easy to use, so you experiment again and see how easy it is to set up an instance on the server where your website.

Turns out, it's easy! You don't even need root!

So now you have code hosting for free.

Under the license, this is entirely allowed! And encouraged. You are an end user still. It doesn't matter that your use of it is for commercial code; you are not providing Yar for others' use.

Let's say that you are not quite happy with Yar's CI/CD because it doesn't use YAML, and you absolutely must have YAML. So you modify the code to translate YAML into what Yar understands, and Yar now can use YAML as an option.

There's another end user, Eric, who is like you; he loves Yar but wants YAML. You give him a free copy of your modified Yar source for him to use elsewhere and even host himself. This is allowed and encouraged.

Now, say we have another user, Cameron, who has proprietary code too. He happens to be a customer of your proprietary code. He uses Yar too, but he doesn't like my prices. He asks if he can host his proprietary code on your Yar instance.

This is the moment you could become a dealer and break Yar's license. It doesn't matter if Cameron pays you or not; you will have "redistributed" (loosely) the code to him by providing the service.

Well, let's say you ask me if you can, and I tell you this. I also tell you that I'll let you have a different license for a fee that would allow you to host Cameron's code.

Let's say you decide to pay the fee if I let you have paying customers. We haggle, come to an agreement. (I want users to have hosting choice too!)

So you can host Cameron's code, and you can now do it with or without pay. Can you still distribute your YAML modifications to other end users without pay? Yes! Can you provide your instance for pay to other end users, even the YAML modifications? Yes, because you paid for a license that included that! Would you have been able to provide your instance for pay, with or without the modifications, if you didn't pay? No, you would not.

In essence, when you are acting as an end user, you can share, modify, and share modifications. You can host it for yourself.

One thing you cannot do is provide it as a service to others. You also can't make them pay for your modifications because that's commercial too.

I hope that clarifies.