Hacker News new | ask | show | jobs
by webmaven 2618 days ago
> "It hijacks open-source APIs and places them on top of its own proprietary solutions, thereby siphoning off customers from the open-source project to its own proprietary solution, as it did with the MongoDB APIs."

Basically, there is no such thing as an "Open Source API". APIs are not software, and we've already seen the damage that treating APIs as software (for copyright purposes) can do.

The proper abstraction for APIs (and protocols, and file-formats, etc.) is the standard, which ideally admits the possibility of multiple interoperable implementations, both proprietary and open source (patents being the joker in the deck, unfortunately).

3 comments

It's certainly an interesting point of view. Take something that's commercial, for example, like Microsoft's docx format. If Open Office/Libre Office implements support for docx, is it hijacking proprietary formats, and siphoning customers off of proprietary projects? (edit: as it has been pointed out, .docx is a bad example, because it was standardized, but the point stands, I believe.)

I hate that this stuff hits HN front page. It worries me that we're developing a culture where I as an individual must adhere to some moral framework when writing code, lest I violate some social open source norms. To me, this is deeply poisonous to the spirit of open source.

".docx is a bad example, because it was standardized"

This is not 100% correct. A large part of the format is standardized in ECMA-376 and ISO/IEC 29500, but many details are implementation-dependent. Many of those details are covered under other specifications like [MS-DOCX] that are covered by a covenant not to sue, but other details are not covered and are therefore in murky legal territory.

[MS-DOCX] https://docs.microsoft.com/en-us/openspecs/office_standards/...

Ah, just another reason this example was not very good. It’s a complicated one.
> It worries me that we're developing a culture where I as an individual must adhere to some moral framework when writing code, lest I violate some social open source norms. To me, this is deeply poisonous to the spirit of open source.

Every culture or community has norms, and many of those norms generalize to universal moral principles, like: participate fairly in a community, not exploit it.

"Spirit of Open Source" isn't something defined entirely in the phrase of "open source". It's an idea that gets defeated by actions of some larger players today, hence the outrage (and an opportunity to remind people yet again, that RMS was right about this).

My take on "Spirit of Open Source" is basically: (1) I need this software, (2) I wrote this software and it has satisfied my needs, (3) I'm a nice guy so anyone else who wants to use this can use it free of any requirements whatsoever. Hence I use the MIT license.

I don't care if Amazon or Facebook gets rich off of it. I don't care if Donald Trump or Hillary Clinton get elected based on it. I don't care if the Russians use it. It's a tool, and like a hammer can be used for good or ill, and I disclaim all responsibility for what stupid people do with it. I don't care if somebody forks it and 99% of people start using the fork instead of my original. All I care is that I got what I wanted out of it, I hope perhaps that some other people use it so that they can help contribute and maintain it, and perhaps I'm hoping for a tiny bit of respect and recognition. My expectations are grounded and realistic: very few people will likely use it; I don't have a hope in hell of either making money off of it or of changing the world because of it. And I'm completely satisfied with that. In fact I'm more than satisfied, I feel wonderful because millions of other people are doing the same things with their software and just about anything I could possibly want is out there somewhere. Hence a sense of community and of good will.

Others folks (such as the author of the article) have different "spirits" most of which I find distasteful, including those who have a stick up their arse about big orporations and want to add restrictions about commercial use or about derivative works, those who think their software is God's gift to the world and they thus deserve something for it, those who want to control what others are allowed to do, those who want to change the basic ways that the world works, and those who come from a place of greed and regret. I don't share in any of that outrage, not even a little bit, and so this article (to me at least) is complete rubbish.

No offense to you personally, but I find the opinions you expressed to be naive and self-centered. The open source software you're releasing (scratch-an-itch software) is much different from open source software that we all use, which requires people working together with the goal of building something impactful. Most open source requires effort from many people for development, testing, management, and maintenance, and requires sustained work on it over a long period of time. If everyone had your attitude, it's unlikely that open source would exist as it does today. No Linux, LibreOffice, VLC Player, or even matplotlib, D3.js, Firefox, Tor, or even wget.

People do often do open source to build a reputation, or to be able to push their vision, and both of those motivations should be encouraged. Furthermore, the attitude of "I built the technology and it's not my problem if people use it maliciously" is dangerous.

What’s really interesting for me is that you really seem to have a disgust for people trying to add restrictions to “open source” software with the goal of keeping it open but seem to be totally fine with for profit enterprises adding restrictions to software and services, often trying to extract as much value as possible out of you. Doesn’t that seem to be somewhat of an arbitrary double standard?

Why can’t or shouldn’t the “Spirit of Open Source” be able to include exactly the things that you complain about? I would love to hear your grounding for your position :)

Adding restrictions to "keep it open" is oxymoronic. Folks can do whatever they want with their software licensing, but please don't deceive people by pretending it's FOSS if it's not.
Oxymoronic? Perhaps in a strictly literal sense but first of all there are two slightly disjoint goals: Maximizing user freedom, and maximizing developer freedom.

We can maximize user freedom by having developers put code into a commons, reject the freedom-to-restrict-users, and deny other developers the ability to enclose that commons in those sort of restrictions (ala copyleft).

This has an even more broadly applicable analogy, Popper's "tolerating intolerance" and related paradoxes.[0]

Another way of looking at this is through the frame of positive and negative freedoms[1][2] (often described as "freedom to" vs. "freedom from"). It is often not possible to maximize both. For example, when the goal is maximizing human freedoms for the most people, it is not unreasonable to disallow making any people un-free, which includes denying people the freedom to sell themselves into indentured servitude.

[0] https://plato.stanford.edu/entries/toleration/#ConTolPar

[1] https://en.wikipedia.org/wiki/Positive_liberty

[2] https://en.wikipedia.org/wiki/Negative_liberty

This. Exactly this.
Our disagreement about the spirit of open source is fundamental.
.docx (Office Open XML) isn't propertiary, it's an open standard.
True, that was a bad example, but honestly it's irrelevant. Same point could be made about .doc when it was reversed back when. I thought there was even a court case about someone reverse engineering .doc a while back, but I can't find it right now.
It's a bad open standard though - microsoft basically stacked ISO to push it through.
This. If the only thing keeping customers on my platform is an incompatible API, what does that say about me as a vendor?
That you are not Microsoft? How is this any different from vendor lock in?
A well thought out API is a valuable thing and there's no shame in that being your competitive advantage.
That you’re not going hungry while one of the most valuable companies in the world doesn’t extract value from your work.
If someone gets into writing open source with the goal of making money off of it and gets pissed when others “extract value” from their work, that person never should have gotten into open source to begin with. In fact, for their own sake, they should probably get right the fuck out of open source pronto, because they are seriously missing all the points in spectacular fashion.
I don't agree. Open Source has always been about making money. What you might mean is Free Software, which is quite different from a philosophical point of view.
Open source isn’t particularly about making money. The making money is orthogonal and potentially harder if the source is available with a permissive license. Free software is about freedom of the user to make copies and distribute the source code and again money is orthogonal.

But I think in practice both open source and free software are hard to monitise. Often the open source software is a marketing platform for a managed service ala “we made it were the experts let us host it for you”

I still disagree, open source from the start was designed with companies (and it's developers) in mind and companies are particularly about making money. It's about the underlying values, open source is about making development easier, cheaper, etc.

Btw. I'm not comparing open- vs. closed-source but open-source-software vs. free-software.

Open source has been about protecting open software going forward.
That is simply not true with permissive licenses like MIT, BSD, Apache, etc. which emerged out or got embraced of the Open Source movement.

The Free Software movement on the other hand created licenses which try to prevent the kind of behavior and thus are protecting the open software going forward.

The API situation is interesting because they allow using MongoDB inside your application as a backend [1]. So what happens if you make a wrapper for the API and distribute your wrapped API as a service? How thick does that wrapper have to be before it is considered a different application. To take the most extreme example, what if i just rename find() to query() making it no longer a "MongoDB Service" but a "AmazongoDB service"?

[1] https://www.mongodb.com/licensing/server-side-public-license...

I'm reasonably certain that a lawyer (that is: your lawyer) would tell you not to do that, since it would be pretty obvious that the wrapper is only being used in an attempt to evade the terms of the license.