Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Discuss the license here #345

Closed
haf opened this issue Jun 11, 2018 · 76 comments
Closed

Discuss the license here #345

haf opened this issue Jun 11, 2018 · 76 comments

Comments

@haf
Copy link
Member

haf commented Jun 11, 2018

...if you have an opinion on it. Keep it friendly.

License as its stands in master/beta:

  • Logary as a library when used on IIS/Kestrel costs money; how much depends on how much you use it; quotes via e-mail.
  • Logary together with other non-commercial OSS is free.
  • Logary Facade v1-v3 is plain Apache 2. This is what all my OSS projects use.
  • Logary Facade v4 I haven't decided yet, but it's tentatively the same as Logary proper. I'm considering changing this; because I want F# to have a happy path logging drop-in for Hopac libraries as well.
  • Expecto accidentally used a Facade v3 that had changed header but not implementation; this was a mistake.
  • Suave has never been involved in any changes; we've updated the repo to make that explicit.

Motivations for the new license is:

  • if you use it on an obviously commercial stack, it costs money.
  • if you use it together with open source, it's free.

GNU has a tendency to lock you in, it's extremely viral and can generally not be used with corporate software. I don't want that. I want people to be free to choose. I want the effect it aimed to bring: increased open source cooperation, but with a clean alternative.

Resulting TODOs:

  • Clarify license / decide for Facade v4
  • Clear CLA for contributions
  • Improve wording away from "general design" in license.
  • Clarify that Logary is free of charge unless it tells you otherwise while running, so just try it out
  • Add license FAQ to README or similar.
  • Consider changing the license to commercial=BSD, OSS=Apache?
  • Idea: let people vote on the license at a cost of a caffe latte per vote?
@sergey-tihon
Copy link

sergey-tihon commented Jun 11, 2018

The question that I cannot understand is "Why such license? Why not GNU v3 for example?"

Could you explain it to me? Thx

@haf
Copy link
Member Author

haf commented Jun 11, 2018

Of course, I've updated the initial post and will continue doing so.

@kunjee17
Copy link

Personally I didn't get the Microsoft part. There are many libraries which might using Microsoft library underneath and I may not be knowing that. Should I go and check everything?

I'm in favour of license. As I know how much it cost to run a business. But little advance notice would be great and also detailed explanation why and what and how part of it in blog...

@haf
Copy link
Member Author

haf commented Jun 11, 2018

There are many libraries which might using Microsoft library underneath

This isn't about MSFT, it's about the commercial web servers on .Net, and they are all Microsoft. Also, it's not about Suave; you're free to use any web server. I want to encourage people to do OSS and learn to be better software engineers.

and I may not be knowing that

Logary does a check, so it'll tell you.

Should I go and check everything?

No, you probably already know if you're using Kestrel is IIS as they are web servers, not libraries.

@MangelMaxime
Copy link

First thanks for clarifying the situation.

I think you will also need to make people accept some terms when contributing to Logary.

@haf
Copy link
Member Author

haf commented Jun 11, 2018

Yes, maybe that's true. What would that look like? How is that different from what's implied by contributing today?

@isaacabraham
Copy link

I'm still confused by the term "commercial" web server. Kestrel is open source as far as I know - what's the distinction?

@haf
Copy link
Member Author

haf commented Jun 11, 2018

I'm still confused by the term "commercial" web server. Kestrel is open source as far as I know - what's the distinction?

In this case it's that I want people to continue innovating in F#, and from experience, if you have a server/library written in another language you tend not to peek under the hood. I want people peeking under the hood.

@MangelMaxime
Copy link

@haf I don't know what it should looks like.

The difference is that you will probably make moneys from people contributions. When I am contributing to a project I am ok to do it because I know it's free for all the usage.

Here I think this a special case.

In general, when I made a contribution to a project that was going to gain monney from it I needed to sign a paper stating that I was giving right to XXX to use my contribution as they wanted.

@haf
Copy link
Member Author

haf commented Jun 11, 2018

It is FOSS if you use it with FOSS though.

I don't think Swedish law requires you to sign anything since you contribute with your eyes wide open to the license. But I could add that as a jurisdiction to the license.

I'll consider it for sure, but I'm not sure what such a document would look like. "Please check this box to make explicit that you've read the license and agree to release any and all claims for monetary remuneration based on your contribution"?

@eugene-g
Copy link

Non-standard license hurts adoption. Companies don't have experience with that license and would avoid the risk of misusing library by not using it. Have you considered another dual-license options?

@isaacabraham
Copy link

@haf So this isn't about commercial web servers or open source at all - it's about F# vs C#. And the only web server you can use this on for free is an F# one, of which there happens to be only one..

Even though all .net web stacks compile to IL and other F# Web stacks that sit on top of Kestrel are written in F#? Really?

@haf
Copy link
Member Author

haf commented Jun 11, 2018

@isaacabraham It's about having a vision for where F# is going and sticking to it. I'm sad there's only one web server in F# land; would have loved more innovation there. 2015 I asked Andrew to contribute Freya's model, 2016 there was the whole debacle about GC and I asked for help. I'm trying to make people cooperate rather than go with ready-made components by a large company; else they are abdicating the knowledge to do systems programming, which hurts F# in the long run.

Whether that company is Apple, Microsoft or Oracle doesn't matter. Do you understand where I'm coming from? How would you solve that?

@haf
Copy link
Member Author

haf commented Jun 11, 2018

@eugene-g Yes, I've considered Apache 2.0 for non-commercial and BSD 3-clause for commercial. But I miss the upside of having people make PoC and tinker and improve existing OSS in the F# world. What would you suggest?

@isaacabraham
Copy link

@haf Even if that is the case, I'm sorry that I don't agree, because this adversely affects other certain F# web stacks that are built on top of MS tech, which to me is what this is really about.

You say this isn't about MS, yet that's exactly what is referred to in the license. You say it's about commercial stacks but haven't explained what that means. You then say it's about F# stacks - which has nothing to do with whether the server is managed by Microsoft or commercial.

I can't even debate this effectively because the rationale seems to be changing from day to day - and at the moment it makes no sense to me.

Sorry - I don't want to be negative about this or to someone who is creating lots of F# libraries but I don't know how else to understand this.

@haf
Copy link
Member Author

haf commented Jun 11, 2018

There are many reasons for changing the license. The primary one is a way to finance development and the secondary one is to encourage people to tinker with open source without having to pay for it. You seem hellbent on ascribing some sort of badwill to this, but that's your own idea, not mine.

@adamchester
Copy link
Contributor

This will essentially prevent almost everyone from using Logary if you adopt any license other MIT or Apache. Only the most hardcore users will adopt restrictions beyond those licenses. They will be few and far between (if they even exist).

I fully support your right to commercial support, and I believe you can do whatever you like and it would probably be justified in an idealistic way.

However, if you do this, you are likely just shutting the project down (sooner or later, as apparently you need funding to continue it, and I don’t think it’s coming). That’s also fine, if you are going in with your eyes open. It will be very hard to change the public perception on this issue if you happen to change your mind.

I’m sad to see logary go, but I hope things work out for you. I sincerely hope I’m wrong. Good luck!

@haf
Copy link
Member Author

haf commented Jun 11, 2018

This will essentially prevent almost everyone from using Logary if you adopt any license other MIT or Apache.

@adamchester So dual-licensed software prevents people from using it?

@adamchester
Copy link
Contributor

No.

@haf
Copy link
Member Author

haf commented Jun 11, 2018

So what do you mean?

@adamchester
Copy link
Contributor

I mean, I don’t think there’s a market for it, and I fear that means Logary won’t exist soon.

@adamchester
Copy link
Contributor

The people who like Apache/MIT will run away, and the commercial people won’t pay.

@haf
Copy link
Member Author

haf commented Jun 11, 2018

A paid high-performance logging library for .Net with good support and good targets doesn't have a market?

Why would people run away?

I fear that means Logary won’t exist soon

It's survived 5 years so far without commercial support. Your fears are groundless and I think you assume a bit too much now ;)

@adamchester
Copy link
Contributor

adamchester commented Jun 11, 2018

Apache/MIT people are totally spoilt, they fear almost everything else for [who knows what reasons]. And so, they will just avoid Logary.

There are already high performance logging libraries with good support and good targets and licensed under Apache/MIT.

@haf
Copy link
Member Author

haf commented Jun 11, 2018

Apache/MIT people are totally spoilt, they fear almost everything else for .

I don't think this is the case. Are you saying that you feel this way yourself?

There are already high performance logging libraries with good support and good targets and licensed under Apache/MIT.

Just because there are others doesn't mean you should stop innovating you know. You should browse the comparison between Serilog and Logary in the README. I'm sure the world is large enough for more metrics + logging + tracing libraries.

@adamchester
Copy link
Contributor

It's survived 5 years so far without commercial support. Your fears are groundless and I think you assume a bit too much now ;)

You are suggesting a primary reason is to finance development. That means a need for time/money. I can only go by what you are saying here.

@haf
Copy link
Member Author

haf commented Jun 11, 2018

You are suggesting a primary reason is to finance development. That means a need for time/money. I can only go by what you are saying here.

Sure, but it's not a binary scale; dead or alive. Saying that is demagogic. It's a matter of how fast we can move and how high quality we can have, as well as how much time we can spend on support.

@adamchester
Copy link
Contributor

Just because there are others doesn't mean you should stop innovating you know. You should browse the comparison between Serilog and Logary in the README. I'm sure the world is large enough for more metrics + logging + tracing libraries.

Agreed, it’s why I’m here, but will anyone in that world pay or accept the new terms? And when they don’t, will you expect they’ll still be waiting around for logary to change it’s mind?

@adamchester
Copy link
Contributor

I guess we shall see.

@haf
Copy link
Member Author

haf commented Jun 11, 2018

Logary has changed its license, and note has been taken that you don't like that I'm trying to make a living here off of a new version of a complex library. Thank you for your input @adamchester

@Thorium
Copy link
Contributor

Thorium commented Jun 12, 2018

I cannot reason why not to use an OSS as logging is never business-critical for companies.

I think it is actually; perhaps you haven't reached that scale in your company yet or you have a low write-load.

You are right, our scale is minor, it'll take more than 3 years to build a software platform and try to make any profit out of it.

This is bit off-topic, but I don't agree that eventually the logging would be business-critical:

Logging typically generates unstructured data, i.e. the data is serialized to somewhere and then the reader, after some time passed, having lost the schema, tries to figure out later if e.g. the data is shaped Chomsky Type 2 grammar (context free grammar) or not.

That is un-optimal. Instead of logging you should save your data in a structured manner (to event storage or database, doesn't matter) so that you also have a history. That way you can do mining to your database to gather good business decision making information. So, you don't have to do mining logs or any other unstructured data. Structured data is a better and more maintainable way to store information than unstructured data. By saving structured data you store information in a way that its leverageable.

I support Rich Hickey's views about this:
https://www.youtube.com/watch?v=-6BsiVyC1kM

seeing how quickly people turned coat when that happened before.

I disagree that "using a best tool for a job" would be turning coat to others. You have some control of what the best tools are for distributed (or micro-services) environments, which are your speciality. I've put some effort to SQLProvider to make the scenario of "F# data access" as good as possible. In some cases, people move to other tools like Rezoom.SQL for their "F# data access"-scenario, and that's totally fine. Actually, I've sent some PRs to these other F# data access tools also, and want to help people with those, as I already know quite a lot of that topic. In 5 years’ time I rather do consultation to some commercial product when they use F# data access rather than Go/Python. Currently the case with distributed computing is that the reputation is that the best environments are Erlang and Go.

Logary is not well known in F# nor .NET communities. Usually in London user groups people don't know it. Logary has 36K downloads in NuGet while log4net has 16173K, NLog has 13621K, Serilog has 10610K. So there is a long way to go. More people tend to know Suave. 36K downloads will not be enough for you to generate profit out of the product.

If you want to try, for Logary, I would suggest transaction-based licensing, and:

  • slow down the event processing with a small delay that can be purchased away
  • after certain amount of transactions, e.g. 1M in a month, there will be autogenerated events that do complain about licence to the log.

OSS will not auto-generate profit for you (as been cried by k_cieslak).
OSS will allow you as the library author building your name as a brand. This is like a Michelin star restaurant: while the restaurant generate loss rather than profit, they will build the name for the chef who then can use it in a way they want. I know one who sold his name for Lidl advertising. If you try to cash-out the main brand (like adding half litre of water to every bottle of Coke) you will make some money for a short while. But many people will leave and not return.

I would rather buy some consultation hours from you (if you would be in UK), and I know that has been possible and not used a lot, but the reason is that Logary/Suave is just not well known enough, and not having enough people in the community, to be a relevant source of profit for you. Sorry about the negative-realistic-views, that's my Finnish mentality.

@ninjarobot
Copy link

Transaction based would be quite nice, I agree, hard to pull off in a library without introducing some licensing system to track usage, but maybe some "phone home" system could work.

Another model that works well is to provide the base platform as FOSS, offering features that target commercial and enterprise use under commercial licensing terms. Puppet and Hashicorp's Terraform are two great examples of this, and it doesn't seem like a stretch for Logary. The ElmahIO and Loggr targets are both for commercial systems, so people are paying anyway, same could go for the targets. Targets for WMI or Windows Event Log could be a way to provide commercial features for those that are monitoring their Windows systems.

@haf
Copy link
Member Author

haf commented Jun 12, 2018

Also, adding a confusing license will also hinder adoption. I would have a straight OSS and Commercial license.

We can change the license; it's not a GA release yet. What licenses would you choose to pay for?

@haf
Copy link
Member Author

haf commented Jun 12, 2018

slow down the event processing with a small delay that can be purchased away
after certain amount of transactions, e.g. 1M in a month, there will be autogenerated events that do complain about licence to the log.

That could work, sure. But it also leaves systems up for failures to occur when they are under load and not otherwise. It would have to be very very explicit and well thought out to work.

@haf
Copy link
Member Author

haf commented Jun 12, 2018

Might I also suggest that you open up publicly what the license fees are?

@isaacabraham I want this thread to as much as possible reach a consensus about how to:

  1. Finance development of Logary
  2. Improve development of the eco-system in F# (hence Kestrel, which is C#) — people improve what they use. Of course it's a competition between libraries and languages! and they peek under the hood in languages they use, not other languages.

@rmunn You have good points, but I'm not sure C# devs even would consider going away from logging frameworks written in C#. Do you think they would?

There are upsides to v5 that haven't even been mentioned:

  • The Facades now support metrics out of the box
  • There will be a corresponding logary-js package that ships client-side errors to the server
  • Rutta has been revamped and now also functions as a docker container/router/shipper/side-car handling logs
  • There's a new codec abstraction that lets you compose any codec (log4jxml, json, binary-fspickler) with any transport: TCP, UDP, HTTP
  • Logary itself has a new event processing engine
  • A new bisecting API and scope/span support for Zipkin

No other .Net logging framework has this. I think selling F# is easier if there's a complete story. Would you pay for a complete story like this?

The ElmahIO and Loggr targets are both for commercial systems, so people are paying anyway, same could go for the targets. / @ninjarobot

I don't think people will pay for targets; that's been tried the last two years to no avail.

@ninjarobot How would such a license be priced, do you think?

I'm thinking it to be a per-active developer, per-core-used license that approximates 2 days of my consulting per year for a large deployment using Logary. This is the quote I've been giving to those who have asked. One way to decide is this; everyone who pays a token sum of a caffe latte (45 SEK) gets a vote on the license and how it should be written. What do you say?

@forki
Copy link

forki commented Jun 12, 2018

regarding C# in kestrel: I don't think that's an issue. Giraffe and Saturn people did send PR to it.

@haf
Copy link
Member Author

haf commented Jun 12, 2018

@forki Do C# people send PRs to F# libs? F# to Go libs? Do companies not mandate single languages making any contribution to another language political?

@haf
Copy link
Member Author

haf commented Jun 12, 2018

@rkosafo Ignore @isaacabraham — if the web server is the OS and you can't avoid that, it's a different thing. Have you tried v5 with it?

@forki
Copy link

forki commented Jun 12, 2018 via email

@haf
Copy link
Member Author

haf commented Jun 12, 2018

@forki That is not my experience. Let's agree to disagree then and get on topic again.

@forki

This comment has been minimized.

@isaacabraham

This comment has been minimized.

@haf

This comment has been minimized.

@isaacabraham

This comment has been minimized.

@haf

This comment has been minimized.

@adamchester
Copy link
Contributor

I don’t think it’s fair to mark @isaacabraham’s comments as off topic, and I believe they were in good faith. I believe he has a stake in the game. I believe he wasn’t just here to make trouble.

@haf
Copy link
Member Author

haf commented Jun 13, 2018

@adamchester His comments are about my person and whether I'm duplicitous and that's not the friendly discussion that I want this to be. If he can rephrase his comments without attacking me, then it would be great.

@Thorium
Copy link
Contributor

Thorium commented Jun 13, 2018

From what I've seen enterprise companies won't care the implementation language as long as component works well and there is a reason to use it. The people that do care about the implementation languages are not in low-level enough in organization hierarchy to control the actual real-world events. When a team comes and says "here is the service our customer needs, and by the way it uses component X", it's too late for company internal bureaucrats to deny the service from the customer.

So Logary could have a lot more users, like Paket. Documentation is in good level also. But the reasons why it's a better choice than log4net is not known well by the developers. It doesn’t have the reputation.

I return to NuGet statistics:

  • Because of clearing of cache, breaking of machines, etc. one user can 5 to 10 downloads over few months.
  • On enterprises you have also CI-machines. CI-machines usually do totally clear builds. Most of the developers download the components for building the environment, even if they don't actively use the product. So, if there are 10 teams, 5 developers each, and one team is using component X, one enterprise user may cause easily 500 to 2K downloads in few months. There could be sometimes enterprise internal Nuget cache but often it's missing as it needs some advanced configuration over multiple teams.

Logary's single release has only a few thousand downloads. We can expect that it's not used by many large enterprises, and there is something like 20 small companies or OSS projects using it. Small companies are agile to "turn their coat" as you phrased it.

@haf
Copy link
Member Author

haf commented Jun 13, 2018

Ok, this is going nowhere. Thank you everyone for joining in. Further discussion can be done via e-mail and the license stands.

@haf haf closed this as completed Jun 13, 2018
@causiq causiq locked as too heated and limited conversation to collaborators Jun 13, 2018
@lust4life
Copy link
Contributor

lust4life commented Jun 14, 2018

image

https://www.visualstudio.com/wp-content/uploads/2017/11/Visual-Studio-2018-Licensing-Whitepaper-November-2017.pdf

Hi @haf , Does a license like this(visual studio community version) provide some reference? Maybe license like this will make peoples less sensitive to this issue? Even so, compare to the specific product, library's situation gets more complicated.

I think most here is focused on blaming the status quo instead of giving advice on the current situation. I have not seen anywhere says that the decision on the license has already been set. Issue title here is Discuss the license, I think it means that license can be the result of an open discussion. I suspect that the @haf 's main purpose about changing the license here is how to make logary operations more healthy (if no more developers are willing to participate in the contribution, then it may need some commercial support from the commercial users to continue to improve logary).

@Thorium
Copy link
Contributor

Thorium commented Jun 14, 2018

What Logary would need is at least 10 consultant users who actively recommend it and take it into use in new companies and projects. This can be only achieved through good user experience. Including low learning curve and clear licence policies.

@haf
Copy link
Member Author

haf commented Jun 14, 2018

@lust4life You're very right and I'm going to do a survey of licenses before releasing the new version. Like the license you refer to; the purpose and intent must be clear when people read the license.

@Thorium Agreed and in terms of user experience I think we're getting there.

@Thorium
Copy link
Contributor

Thorium commented Jun 21, 2018

Would the commercial license include some consultation hours from @haf or other Logary expert?

Even though there is already very good documentation, I find that a) tutorials, b) best-practices are not well enough communicated. So to take real advantage of the library is still easily missed.

Some examples:

  • How to log from a software library (that won't decide the targets yet but rather merges to user's targets)
  • How to do efficient content-filtering based on events: some events skipped? some events sent to some targets only (e.g. a file target) while some others to another targets only (e.g. another file)?
  • How the performance metrics / timings should work and be able to enable/disable it easily without spending resources when it's off?
  • How to keep business code clean and not flood logging to everywhere, or at least keep the logging code as one-liner even though there are different parameters
  • What is the real benefit of strongly typed parameter objects? E.g. in file-logging?
  • What are the best practices to log an System.Exception, or attach more details to log for that without duplicating log-entires?

@haf haf reopened this Jun 21, 2018
@haf
Copy link
Member Author

haf commented Jun 21, 2018

@Thorium I think that's a great idea; and a good syllabus to get started. I don't mind spending a few hours for every purchase either, and all the consulting machinery is already set up.

Would you be interested in purchasing such a license yourself? Are these questions things you've been wondering about yourself?

@Thorium
Copy link
Contributor

Thorium commented Jun 22, 2018

Well, those could be the questions if our software would have customers/events enough that logging would be a significant feature. I'm technical person and I don't make purchases. Those who do, want features, not technologies. So, it depends of pricing, but I wouldn't expect too much.

However, I already made a wrapper to replace Logary with log4net because I was trying to compile .NET Core and back in then Logary didn't support .NET Core/Standard.

@haf
Copy link
Member Author

haf commented Aug 13, 2018

Summary; #351

Closing.

@haf haf closed this as completed Aug 13, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests