Standard, a JavaScript style guide, linter, and automatic code fixer, has implemented what appears to be the first advertising system for JavaScript libraries.

Starting with last week, when developers install the library via the npm JavaScript package manager, they also get a giant banner advertisement in their terminal.

Image via William Hilton

The ads are powered by a new project called Funding, authored by one of the Standard devs. The Funding library was included with the Standard 14.0.0 release, published last week, when the ads first started showing up in other people's terminals.

The idea behind Funding is that companies buy ad space in people's terminals, and the Funding project then shares its profits with open-source projects who signed-up to show the ads.

To nobody's surprise, the idea has sparked fierce debates[1, 2] in the development community, with arguments on both sides.

There are those who think this is a good way to raise funds for crucial open-source projects that have always had a hard time financing themselves, and there are those who absolutely loathe the idea of seeing ads in their terminals.

"Fact of the matter is, [open-source software] maintainers need money today," said Vincent Weevers, a developer from the Netherlands. "Better solutions may come along; putting up with ads in the mean time is a small price to pay. While I don't particularly like seeing ads in this space, I understand its necessity and fully support it."

"My terminal is the one last stronghold, the one last haven of peace that doesn't endlessly serve me ads from corporate overlords all day long," said Vuk Petrovic, a US-based developer. "I vehemently oppose this idea as I believe it is fundamentally opposed to the open source ethos we've built up over decades."

But most of the negative comments against Standard and its new funding scheme came from developers who were dissatisfied that these post-install ad banners will now be making their way into logs, making app debugging unnecessarily complicated.

"I don't want to have to view advertisements in my CI logs, and I hate what this would mean if other packages started doing this," said Robert Hafner, a developer from California. "Some JS packages have dozens, hundreds, or even more dependencies- can you imagine what it would look like if every package did this?"

For now, only the Standard library is showing these banner ads, but the project is expected to become more popular with time, similar to how the OpenCollective project grew in popularity in the past year.

OpenCollective is a project similar to Funding, but instead of showing banner ads for other companies, the OpenCollective project shows donation requests, asking developers to donate money to a particular project via an npm terminal post-installation message.

Image: ZDNet

Since last year, OpenCollective messages have been added to many open-source projects, such as core.js, JSS, Nodemon, Styled Components, Level, and many others.

Just like in the case of Funding, developers have shown their anger at seeing these messages in their npm CLI; however, they were willing to accept them, since they only asked for donations rather than showed full-blown ads.

But Funding appears to have crossed a line in the mind of some developers, who are not willing to accept ads in their terminals at any cost and under any scenario.

Some of these developers put pressure on Linode, one of the original companies who signed up with the Funding project, and the company eventually decided to drop out, instead of facing an ever-mounting rash of negative feedback.

We hear you loud and clear. We've reconsidered and have removed the ad. — Linode (@linode) August 25, 2019

Furthermore, some developers took their anger at Funding's terminal ads a step further and created the world's first ad blocker for a command-line interface.

What is clear from all the discussions surrounding this topic that ZDNet has seen is that open-source funding is still coming up short in meeting developers' needs and that people really don't like ads in their CLI terminals.