LoupVaillant / Monocypher

An easy to use, easy to deploy crypto library
https://monocypher.org
Other
614 stars 80 forks source link

Using the logo for the package for .NET wrapper of Monocypher? #206

Closed xoofx closed 3 years ago

xoofx commented 3 years ago

Hey Loup,

I'm close to finish the wrapper around Monocypher for .NET. I had quite some trouble to gather the API doc because they were stored in groff files (these are awful files for automating codegen, e.g they don't specify clearly the arguments so I had to add some heuristics with text matching like "The arguments" in order to find the details of arguments, oh gosh... 😅 ), anyway I managed to extract them - not perfect but okish, so it's almost good.

I will publish a NuGet package (way to distribute packages for .NET) and I'm usually adding a package icon, and I was wondering If I could reuse the same icon that you are using for Monocypher? (I would add proper credits or license of course)

If not, that's ok, just wondering otherwise I will use another one. Thanks!

LoupVaillant commented 3 years ago

I had quite some trouble to gather the API doc because they were stored in groff files

Err, I'm not sure which API doc you are talking about exactly? I'm usually pretty proud of Monocypher's documentation…

I was wondering If I could reuse the same icon that you are using for Monocypher?

Hmm, sounds like a potentially important branding issue, I must summon @fscoto for advice.

Personally, I'd like something recognisable and distinct. The first idea that pops into my head would be a full sized Monocypher logo, with the C# logo on the bottom right corner, taking up maybe a fourth of the image. Like "Oh, it's Monocypher, on C#. We could even consider generalising that to other languages.

This logo business feels like it would represent a tighter partnership than I ever agreed with (I do have close contributors, but so far I either had full control, or very loose ties). This is both exhilarating and a little scary. You'd effectively be the official C# distributor. My feelings right now is that if you pinky promise to take good care of your bindings, this partnership is looking very good. C# is an important language, I definitely want in.

xoofx commented 3 years ago

Err, I'm not sure which API doc you are talking about exactly? I'm usually pretty proud of Monocypher's documentation…

Oh, sorry, I didn't want to say that documentation was not good. I agree, the website documentation is very nice. 😅

I'm using my own codegen tool with libclang to generate the bindings, and I usually rely on the availability of the API documentation right into header files. For Monocypher, I had to parse groff doc files to extract API documentation and reimport it into C# (but I end up parsing the output of mandoc from these groff files). Example like this:

image

Personally, I'd like something recognisable and distinct.

I agree. Let me know. Again, I can use a different icon, it's really minor.

My feelings right now is that if you pinky promise to take good care of your bindings, this partnership is looking very good. C# is an important language, I definitely want in.

Ahah, yeah, I don't want to force my bindings to be the "official". It's really a side project on my side. For example I did the bindings of Blake3 recently for .NET, this is a thin wrapper, like the one I did for Monocypher - actually Monocypher was easier as I didn't build more than the existing API on top of it. So, I don't expect to have to update Monocypher bindings often, that should be probably ok, Monocypher seems pretty stable but the bindings are entirely generated, so that should be enough "future proof".

Whatever is best, just that I don't want huge constraints as well (and you probably don't) - I have enough of them with my day job 😅

xoofx commented 3 years ago

I have tried this sketch with Monocypher logo (from the png, don't know if you have a SVG around?)

logo128

The package will be named Monocypher.NET

LoupVaillant commented 3 years ago

Ok, I see your predicament about the documentation. Well, I could have used Doxygen comments on the header file, but that would turn it into one monster of a header file…

About taking care of the bindings, all I ask is that you'd be on the lookout for updates, which I promise will be as infrequent as possible. You can detect new releases by subscribing to the https://monocypher.org/updates atom feed, or (I think?) watching this GitHub repository.

The logo is looking good to me. I'd like to wait for @fscoto's confirmation, though I'm fairly confident it's close to what we want. I do have an SVG here. Just one thing: in this version, you write .NET, but there's F# as well as C#. Someone once did OCaml bindings, so I figured one might be interested by F# bindings as well. Or do they come for free with the C# ones?

xoofx commented 3 years ago

About taking care of the bindings, all I ask is that you'd be on the lookout for updates, which I promise will be as infrequent as possible.

Yep, that should be fine.

Just one thing: in this version, you write .NET, but there's F# as well as C#. Someone once did OCaml bindings, so I figured one might be interested by F# bindings as well. Or do they come for free with the C# ones?

.NET means that it can be used from any languages running on the .NET platform, so that it includes C#, VB, F#, so for instance, F# could access this library as well. That's a standard way for naming .NET bindings.

fscoto commented 3 years ago

Hmm, sounds like a potentially important branding issue, I must summon @fscoto for advice.

Personally, I'd like something recognisable and distinct. The first idea that pops into my head would be a full sized Monocypher logo, with the C# logo on the bottom right corner, taking up maybe a fourth of the image. Like "Oh, it's Monocypher, on C#. We could even consider generalising that to other languages.

This logo business feels like it would represent a tighter partnership than I ever agreed with (I do have close contributors, but so far I either had full control, or very loose ties). This is both exhilarating and a little scary. You'd effectively be the official C# distributor. My feelings right now is that if you pinky promise to take good care of your bindings, this partnership is looking very good. C# is an important language, I definitely want in.

Ultimately, letting people use your logo also makes them part of the Monocypher “brand” of sorts. Whether or not they're “official” distributions, whatever that might mean to the people observing it, there will be at least one person who will assume that it is a product related to Monocypher and, by extension, you as an individual.

I would therefore recommend being cautiously optimistic. While I want to believe that @xoofx is a trustworthy individual who tries to do no harm (and to be clear: I am not suspecting you of anything; I am merely advising an abundance of caution that Loup is also free to ignore), do I know that? I don't, unfortunately. Looking at this, I would suggest making an arrangement that is, accordingly, cautiously optimistic:

  1. Grant permission to use a modified logo and the Monocypher name as @xoofx deems useful, provided it does not brandish Monocypher's reputation or that of its contributors. The name is, as far as I know, neither a trademark nor protected by copyright, but it seems good form to clarify anyway.
    This may need revisiting if trademarks of any kind end up being created; subtleties between common law unregistered trademarks (™), registered trademarks (®) and trademark laws in Europe/other jurisdictions as well as competition law are out of scope. The logo itself will likely be a work in the sense of copyright. [Disclaimer: I am not a lawyer. This is not legal advice. Consult a qualified legal professional licensed to provide legal advice for legal advice.]
  2. Limit the permission to @xoofx personally, i.e. not allowing him to grant that permission to other people.
  3. Clarify that you may revoke the permission to use the logo with e.g. a month's notice if the above conditions are broken or the repository becomes unmaintained.

Working on a project of larger scale necessarily comes with the requirement of letting go sometimes and taking a leap of faith. You have no time to micro-manage people, seeing that you're plenty busy yourself. Set limits, but no more than necessary.

xoofx commented 3 years ago

No worries, I don't want to complicate my life nor the life of this project. So I will use my icon, that's really not a problem. Thanks folks!

LoupVaillant commented 3 years ago

@fscoto, thanks for the advice.
@xoofx, thanks for being so accommodating.

Granting permission to use my logo (one of the rare things I haven't dedicated to the public domain), as scary as it is, may still be beneficial. Especially for language bindings. I kinda want to use that logo for language bindings, if I'm sufficiently confident the rewards outweigh the risks. The biggest problem I see is that I simply don't scale: the download page lists 9 languages already, and the bigger the list, the bigger the chance of a screw-up somewhere. Still, thanks for the idea, I shall think it over.

Also, do tell me when your bindings are read, I will definitely list them on the downloads page. So far, no one asked me to list a second set of bindings for an already supported language (even me: I once wanted to do Ocaml bindings, but someone else beat me to the punch). Logo or no, you'll likely end up being the only Monocypher provider for C#. :smile:

xoofx commented 3 years ago

It's online https://github.com/xoofx/Monocypher.NET

Thanks for making this Monocypher library 🤗

LoupVaillant commented 3 years ago

Thanks! Added to the download page.