|
Your understanding is wrong.
"You cannot use the copyright notice", as you frame it, basically means you can't copy-paste the copyright notice of someone else, with someone else's name on it, for your own work. You need your own license for your own work, and that license can also be MIT-X11 if you choose so.
That being said, you need to keep the original work and the original license together.
If you use a library under MIT-X11 on the backend, you need to provide the license on the backend as well.
|
|
|
|
|
MIT-X11 is a permissive license.
Simplified, you keep the original code as-is, and you make sure to keep the license text and the code together.
If you've used the code in a project with a package manager, the license text is included automatically.
If you've downloaded the code from GitHub, just don't delete the license.
If the code is deployed on the backend, you need the license somewhere on the backend as well.
Additionally:
If you modify the original work, you cannot slap a new license on the entire thing and say it's your work now.
If you build something with it or change something, you can license your stuff however you want.
If something explodes, you can't sue the license holder of the original work for damages.
Pretty much all permissive licenses are like this, with the exception that some licenses require you to also communicate bugfixes and new features inside the original work to the original author. MIT-X11 does not requires this, but L-GPTL does, for example.
|
|
|
|
|
Thank you very much
|
|
|
|
|
|
Babylon Sisters, FM, Rikki... Steely Dan made (makes?) some great music.
There are no solutions, only trade-offs. - Thomas Sowell
A day can really slip by when you're deliberately avoiding what you're supposed to do. - Calvin (Bill Watterson, Calvin & Hobbes)
|
|
|
|
|
Does anyone know if there is a free desktop chat client that will talk to Teams?
There is no way I'm paying them $50/year to use their junk.
Charlie Gilley
“They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
Has never been more appropriate.
|
|
|
|
|
Well, there is Microsoft Teams (free)[^] which is what I switched to when they announced that Teams Classic (free) was closing.
Seems to work fine, but it doesn't import your contacts or settings, probably to persuade you to pay.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Oh Microsoft, you so silly. That will be fine. They kept popping up the non-free one with no mention of the renamed version. Microsoft Marketing - driving people mad since 1985.
Charlie Gilley
“They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
Has never been more appropriate.
|
|
|
|
|
charlieg wrote: to use their junk.
So why use it at all?
If your clients use it then, regardless of your feelings, then you must use it. And the cost is a business expense. Or even something you can bill them for (each client actually.)
If it is a company thing then the company should be paying for it.
If friends/family then of course you could just stop talking to them.
|
|
|
|
|
Well true, but sometimes I'm talking to past coworkers whose company has drunk the Kool-Aid.
Charlie Gilley
“They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
Has never been more appropriate.
|
|
|
|
|
Think that still leaves you with...they are not worth $50 or that they are.
|
|
|
|
|
Does anyone actually use .NET 7 with <Nullable>enable</Nullable> ? I find this option makes life such a PITA that I always go into the .csproj file and disable it. The warnings are non-stop:
Non-nullable property 'foo' must contain a non-null value when exiting constructor. Consider declaring the property as nullable
Converting null literal or possible null value to non-nullable type.
Dereference of a possibly null reference.
Possible null reference assignment.
Nullable value type may be null. And that's just a partial list, I believe.
And that last one, "Nullable value type may be null" is the most amusing one.
Seriously, if you have the "Nullable" option enabled, do you actually fix all those warning?
|
|
|
|
|
I'm fairly sure this setting is just a reaction to new(er) languages like Swift (iOS) and Kotlin (android).
Both of those languages use the idea that nothing is really nullable by default.
In Swift they call these Optionals and you have to indicate in a special way that the object may contain a null (actually nil in Swift).
So, for example, if you define an Optional variable you have to define it like:
var dataConnection: MyData!
That ! marks the type as Optional (meaning it may contain a real value or a nil).
If you don't add that ! then you must supply a value for the variable immediately -- in an effort to insure you aren't using vars that contain nil without them being initialized.
This states at the outset that this variable may be nil and there is a lot of protection around the variable so it's not as easy to accidentally set it to nil.
All of this, as you mention also, really creates a bit more work.
Anyways, I believe the setting in C# is now just a reaction to that and may be a precursor of things to come in C# world.
|
|
|
|
|
I worked in Kotlin a while back and it was considered bad form to use !
Everything that could potentially be null had to be handled to return a non-null value - just one of the things I disliked about Kotlin
“That which can be asserted without evidence, can be dismissed without evidence.”
― Christopher Hitchens
|
|
|
|
|
GuyThiebaut wrote: I worked in Kotlin a while back and it was considered bad form to use !
Yes, in Kotlin when you use ! it means, "it may be null, but I don't care, go ahead and force it"
So it yells at you all the time.
These new languages will definitely switch your thinking if you've been programming and are used to null.
We use null as a value like false so often and then suddenly (supposedly) nothing is ever null.
It's an odd thing. It's all more like having training wheels on than anything.
|
|
|
|
|
I just never use nullable types. Or .net beyond 4.8 (I think).
|
|
|
|
|
I found it rather jarring the very first time I built a .NET project using .NET 7 (something that had actually started life as a .NET Framework 4.8 project), so there were quite a few "fixes" to implement. But I came around rather quickly, and now kinda wished older versions were that restrictive/explicit.
|
|
|
|
|
You and others are convincing me that I should just bite the bullet and fix the code.
|
|
|
|
|
My first reaction was, "ugh, did they really do that?" followed by "am I really gonna have to propagate those fixes throughout?"
If I would've had to do that throughout my entire codebase (everything I'm still maintaining), there's no way I would've done it.
But starting with a small project that hadn't had much built into it yet...the changes were pretty quick and painless. I don't think I've ever adopted a language tweak this quickly. I'm all in.
Greatest thing is, wherever I can provide a class instance as a param to a function, and it's not explicitly declared as nullable, then I'm guaranteed I don't have to bother with null checks. So I'm still trying to write all functions so nulls are (explicitly) not allowed.
|
|
|
|
|
I suppose it's a bit like const . You can't just sprinkle a few around the place, you have to go all-in.
Paul Sanders.
If I had more time, I would have written a shorter letter - Blaise Pascal.
Some of my best work is in the undo buffer.
|
|
|
|
|
Yes, I fix them. And I only add ! if I can verify the value can't be null and I am not able to rewrite the code so the compiler sees it as well. It does become a mess if using an old .NET version without the "required" keyword, so I am refusing to use anything old now.
This is not just a response to other languages (though competition of course means you can't just ignore problems), but a response to something that is a fundamental design error in the type system of C# and many other OO languages that copied Tony Hoare's "billion dollar mistake".
|
|
|
|
|
I fix most of them, but I'm not afraid to use ! (even the phrase null! ) or Debug.Assert(thing != null, "the thing") or some of the nullability-related attributes. I don't think we should drink too much of the Kool-Aid, I don't aim for perfectly "pure" use of Nullable. Using it doesn't really bother me in code that already makes use of it, there aren't tons of spurious warnings in that case, but converting a medium-size codebase to enable Nullable was a chore (that process did reveal a couple of bugs that were actually bad and had evaded detection up to then).
No doubt the main thing Nullable prevents is trivial mistakes that would be noticed immediately when pressing F5 anyway. (beginners seem to live in total fear and terror of the NullReferenceException , but let's be real, it's usually no big deal) But since converting a codebase to use Nullable revealed a couple of actual bugs too, well those bugs would never have existed if Nullable had been enabled all along, so maybe it's doing something serious too.
It's not effort-free to use, and the payoff is in something not happening, it's impossible to know what didn't happen, so who knows what the cost/benefit ratio is?
|
|
|
|
|
Some people seem to find some computer idioms and technologies difficult to understand.
And then they then attempt to popularize that poor understanding as being a failure in the idiom/technology rather than leaving it where the problem actually belongs.
Myself I like null. Easier than coming up with a long list of magic values that represent the same thing as 'no value'.
|
|
|
|
|
No one is suggesting you should not use null.
The nullable check makes it explicit where you intend to use it - just as it already is for value types.
|
|
|
|
|
lmoelleb wrote: makes it explicit where you intend to use it
Your assumption is that I do not understand what it does. You are incorrect in that assumption.
|
|
|
|