Tag Info

Hot answers tagged

117

Releasing a project under the MIT license is giving people permission to fork the project. Part of the philosophy behind free software is to give users and developers the right to use, modify, and release the software in ways that wouldn't normally be allowed. If you don't want people to do this, then don't use the MIT license. You can't really complain when ...


61

Was Xamarin's action and the way the action was done ethical or not? Well, let's ask an expert - The Open Source Initiative's listing of the MIT License itself, with the license quoted in it's entirety: The MIT License (MIT) Copyright (c) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and ...


17

I wouldn't call it unethical. I would call it unsportsmanlike. There's an unwritten expectation that you will give a good faith effort to improve the original version before deciding to fork, and it seems the original author feels that good faith effort wasn't made. That being said, the best way to avoid your software being forked is to be responsive to ...


14

What Xamarin did is legal and ethical... almost. Let's have a look at the commit fixup of the license and misc typo fixes in the readme: LicenseAndCredit.txt (diff) -Copyright (c) 2010-2012 cocos2d-x.org - -Copyright (c) 2008-2010 Ricardo Quesada -Copyright (c) 2011 Zynga Inc. -Copyright (c) 2011-2012 openxlive.com -Copyright (c) 2012 Totally ...


10

Was Xamarin's action and the way the action was done ethical or not? A lot of people are conflating the legal and ethical situation. The X11 license allows anyone to "use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so", so this is ...


8

Hard code and refactor when you need it. Time is money, yadda-yadda, is it worth the time/money to have the unused feature? Also, it's not hard to do later as much as it is tedious. Pawn that task off to a junior developer when the need arises. Finally, when the time comes, some automated tools may get you most of the way there. Such as Eclipse's string ...


7

He doesn't mean little IDE utilities that create boilerplate for you, which you must modify. He's referring to more comprehensive code generation that you shouldn't have to touch. You make changes to the higher level and regenerate. The canonical Unix example would be Yacc, which uses a high-level grammar to generate complex parsing code. Other examples: ...


6

Making applications multi-language does take some additional development effort. You can either invest that effort right from the start, every day a bit. Or you can invest that effort afterwards, when you have written >100K lines-of-code. Fact is, the sum of the needed efforts in both cases is not so very different as you might think. The first approach ...


4

It would be shady to allow people to draw incorrect conclusions about the authorship of whatever code the fork ships, even if the legalities are covered by providing the necessary notices and revision history for anyone who chooses to look closely. So maybe Xamarin's presentation is unethical, maybe it isn't, but I think that's the basis on which to judge ...


4

YAGNI is often in opposition to other established principles and/or best practices. Other examples include several of the SOLID principles, which are largely about structuring your code to make certain kinds of change easier in future. But what if you don't ever need to make those changes? Then the extra work involved in, say inverting the dependencies ...


3

In basic networking you have end to end. That is what I would call connected. TCP is an end to end protocol. You get a delivery receipt. That is nice but there is overhead with an end to end communication. You also have connectionless communication such as UDP or IP. You send it but do not get a delivery receipt. A good book is Computer Networks and ...


2

In networking, the technical term "connection" refers to a session where data is streamed (transmitted & received in-order). Sessions have a set-up and a tear-down phase where a channel (which can be virtual) is created & destroyed. TCP and ATM have connections, UDP doesn't. If you're not using the technical term and wanted to include all types of ...


2

With just a few exceptions, code, data and configuration should be separated. Hard-coding is generally considered a bad practice. You should put UI text into separate file just so you know where to find it, not because you might need i18n. This will not take much longer than hard-coding, but maintainability will be better. Also with external resource file ...


2

An expansion of the trademark topic: At the Apache Software Foundation, all the code is AL. And, as with the BSD license under discussion here, it's perfectly clear that the AL permits forks. Period. End of discussion. In fact, as discussed in other answers, all true open source licenses permit forks. All they control is the license / usage of the forked ...


2

There is a quote attributed to Einstein (probably a variation on a real one): “Everything should be made as simple as possible, but no simpler.” And that is more or less the approach I take when confronted with the SOLID vs YAGNI tradeoff: apply them alternatively, because you never know if a program is 'throw-away' code or not. So, just add a layer ...



Only top voted, non community-wiki answers of a minimum length are eligible