Mutiny at the big five is part of the future of work - awinter-py https://abe-winter.github.io/2018/08/30/mutiny.html <comment><AUTHOR> The idea of corporate employment as citizenship is interesting and straight out of cyberpunk. There's an exchange in Gibson's "Count Zero" where Angie (daughter of a corp engineer) asks Turner (freelance mercenary) something along the lines of "Isn't it scary to live without a corporation taking care of you?"

I think you could make a case that corporations already take on some of the economic roles traditionally associated with governments, but they don't seem to have taken on the legal protection roles yet. However, I could see a future where the perks of employment include access to corporate retained lawyers. Or maybe corporations will hire lawyer secretaries to allow their employees to cut through government bureaucracy (e.g. to contest credit rating inaccuracies on an employee's behalf).

Another possibility would be the corporations and the cities associated with them sort of work together to act like city states. It definitely seems like the laws of San Francisco/California are informed by their association with tech and provide extra protections for the people living there (or at least the people living there who are employed by tech companies).

<comment><USER2> There were many times, at least during the time of colonial empires where companies would run entire towns, regions, and countries. Sometimes they provided just law and order like in British American colonies, but usually they coerced pre-existing political structures and violently exploited the local populations for natural resources. The people unfortunate enough to have natural resources whose land was accessible to colonizers were either exploited or destroyed the desired resources [0] before the colonizer's ambitions could consume them too.

I think I would prefer that corporations - whose interests are by nature not aligned with peoples - do not run the place, as it were.

[Edit: Sorry I keep making so many additions!]

[0]: "In 1620, the state of Banten, on the island of Java, cut down its pepper trees in the hope that this would induce the Dutch to leave it in Peace. When a Dutch merchant visited Maguindanao, in the southern Phillippines, in 1686, he was told, "Nutmeg and cloves can be grown here, just as in Malaku. They are not there now because the old Raja had all of them ruined before his death. He was afraid the Dutch Company would come to fight with them about it."" \- Page 245 of _Why Nations Fail_ by Daron Acermoglu, James Robinson

<comment><USER3> The British East India Company being perhaps the largest, most "successful" (in an imperialistic sense, not a moral one) example of this.

</comment></comment></comment><comment><USER4> >Remember the KPMG anthem that leaked circa 2000?

Actually, no I don't, never heard of this until now, but it is beyond hilariously bad, assuming this [0] was the real version. It gets better, KPMG tried to claim that another website cannot link to them with their permission [1], now _that_ is hilarious.

[0] [https://www.youtube.com/watch?v=NCvKXgp- Awo](https://www.youtube.com/watch?v=NCvKXgp-Awo) [1] [https://www.theguardian.com/business/2001/dec/09/theobserver...](https://www.theguardian.com/business/2001/dec/09/theobserver.observerbusiness14)

<comment><USER5> Oh my god, I did not know that Poe's law applied to corporate marketing now. I could not distinguish this from a parody song like Weird Al Yankovic's - "Mission Statement" [1]

[1] [https://www.youtube.com/watch?v=GyV_UG60dD4](https://www.youtube.com/watch?v=GyV_UG60dD4)

<comment><USER6> meanwhile: [https://www.youtube.com/watch?v=I6IQ_FOCE6I](https://www.youtube.com/watch?v=I6IQ_FOCE6I)

<comment><USER7> LOL. Thank you very much for this!

It takes satire to make us see how far we have come thinking the way we do.

Well done.

</comment></comment></comment></comment><comment><USER8> > As gig work expands, salaried employment status may take on a coveted and > special status like citizenship in Rome or the Greek city-states

Ugh, seems more like serfdom under a feudal lord. Gain protection in exchange for pledging fealty and giving up most of what you produce.

<comment><USER9> The point of the article is that the salaried people get to contribute a voice to the ethical decisions being made, including how does the company act in the rest of the world.

That is kind of the opposite of living under a feudal Lord: the nonsalaried employees are in that bucket (noncitizen residents in the ancient Greek analogy).

<comment><USER10> How is it opposite?

Serfs had a voice too, and just like in a corporation, the lord had no legal obligation to listen. Similar to a corporation, that serf could just be ejected because the lord felt like it.

<comment><USER9> The serf metaphor is that you get protected by the Lord's army and are subservient to him.

The Greek citizen model is that you have a voice in government, but you still can be kicked out or have your vote stripped.

</comment></comment></comment></comment><comment><USER11> I was almost there with you until the bit about the gig economy. This reads more like an advert for Upwork.

People giving up leverage with labor just gives 'them' the upper hand. Why it's so hard for tech workers to band together over something as common as income is the problem, regardless of the disparity.

Teachers in my area are striking over much less money than tech workers fritter away on a daily basis. Sometimes it's worth standing outside with signs and waving at people passing.

<comment><USER12> A traditional union with collectively-bargained pay grades and seniority probably wouldn't work in hi-tech but an even more traditional mediaeval style guild could work very well indeed.

<comment><USER13> Right: the guild certifies members are of a certain skill level, helping the members better negotiate for pay, time-off and other work terms.

Pay has not been an issue, but overwork has been, and so has the interview process. A union/guild backing could help with this.

<comment><USER14> How would a guild ascertain skill level except by doing relatively tough interviews?

<comment><USER15> The same ways that schools measure, through testing.

<comment><USER14> And what is an interview if not a test? Or are you advocating written exams only - I don't see why this would be better than a well designed interview process.

<comment><USER13> You don't have to do it over and over for each job you apply for?

It also takes some onus off the hiring team to ascertain the technical abilities of prospective hires. "Just get me a guild member!" Now you can interview on other qualities...

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> > G9 who walked out of air gap

If you are as confused as I am as to what this means, [https://www.bloomberg.com/news/articles/2018-06-21/google- en...](https://www.bloomberg.com/news/articles/2018-06-21/google-engineers- refused-to-build-security-tool-to-win-military-contracts)

<comment><USER17> the cynic in me believes this is just an engineered PR stunt by Google

<comment><USER12> The perception that Google is an American company serving American national interests as opposed to a fluffy post-nation collective can only harm them over the long term.

</comment></comment></comment><comment><USER18> Change-from-within is a lovely fairy tale.

There are maybe a few dozen engineers with enough outsized talent to get away with challenging the status quo. Anyone else will be fired and replaced by a ready and willing throng of recent grads eager to put a dent in their student loans.

<comment><USER19> I feel like you're just cynically making this up. Are you talking from experience here? Most big tech companies have massive amounts of open head count -- you should probably sell them the location of all of these eager recent grads that they can hire who are just as competent as whoever you imagine they'd be replacing. These companies will want to hire them all, this morning, without firing anyone. You could be rich!

<comment><USER10> Your logic doesn't follow.

GP didn't say these grads were sitting around waiting to get hired.

They just said those are the people who will do your job after you're fired for not being a team player/trying to upset the status quo.

The recent grads will be hired either way. The point is they vastly outnumber the people who will even make a legitimate attempt to change a corporate culture.

It's replacemwnt as in, when you get out of the ocean, you will be "replaced" by salt water.

</comment></comment></comment><comment><USER20> "This means giving some people on the engineering team exact information about what the system will be used for."

Yeah, well, remember there were at least a couple people who went around installing fiber replicators for AT&T to tap the entire internet for the NSA, and they managed to keep that a secret for a LONG time.

<comment><USER21> Not really, it only lasted three years (started in '03, and was exposed by Mark Klein in '06). And more generally, that communications were being spied upon by the NSA was public information for a long time. I first learned about it in a Spanish tech magazine back in 2000 or so (the great HackxCrack), but by then it was old news.

</comment></comment><comment><USER22> This article is very well written. It's a very interesting perspective that I find spot on. The cyberpunk dystopia is becoming more and more real. Also (on a side note), if anybody can link me (and other readers) to similar articles, I'd very much appreciate it.

<comment><USER23> The article is hard to understand for anyone not immersed in the politics/events of the SV. For example:

> _At google: air gap, maven, dragonfly. At microsoft, ICE detention. At > amazon, rekognition._

I have no idea what this is in reference to. A better introduction even if very brief would've gone a long way.

<comment><USER22> > I have no idea what this is in reference to. A better introduction even if > very brief would've gone a long way.

True, this portion also went a bit over my head but nothing a quick google search cannot fix :) (I was really speaking in broad terms)

</comment></comment></comment><comment><USER24> Oh what a time we live in where 'standing up for your basic rights' equals to 'mutiny'

<comment><USER25> Was it not ever thus? Until the 20th century, it was common for navies to have little regard for the "basic rights" of their crew. See: etymology of "shanghaied". And I don't know why I say "until the 20th century": [https://www.nytimes.com/2015/07/27/world/outlaw-ocean- thaila...](https://www.nytimes.com/2015/07/27/world/outlaw-ocean-thailand- fishing-sea-slaves-pets.html)

</comment></comment><comment><USER12> _consumers when given the option to pick any two of 'cheap', 'high quality', 'ethically produced', have made the obvious choice._

My observation is the consumers pick only one of those.

</comment><comment><USER20> "But (1) they were never internally transparent about anything sensitive, and (2) it's naive to think 10 thousand people can keep a secret."

Maybe this is an opportunity for the C-levels of the very companies responsible for the modern surveillance economy to have a tiny taste of the crap sandwich that is having every detail of your life out in other people's hands, to exploit for their exclusive benefit, at odds with your own interests?

</comment><comment><USER26> This is just grumbling. Not even organizing a union.

</comment><comment><USER27> Someone needs to remind this person that the arab spring ended up as a tragedy that only bolstered the idea that there will never be any change. The best mutiny against the big five would be to leave them.

</comment><comment><USER28> In terms of recurring income (retainers) or access to "upsides", corporate employment does not do any better than the gig economy. You can charge $250/hour for a gig, but I doubt that corporations would agree to pay that out as a monthly salary. You can get 25% of the shares and therefore the profits in a startup but good luck trying to get any share in the profits of a corporation.

Furthermore, in the gig economy you don't get a payslip. You invoice. That allows you to extensively use jurisdiction shopping to minimize tax bills. In Europe, that can spare you from handing over 70% of your revenue to the tax collector. Good luck trying to do that in corporate employment.

</comment><comment><USER29> Corporate Social Responsibility (CSR)

I had to look that up.

</comment><comment><USER30> I have a theory that as corporations get bigger, they become more like dysfunctional communist governments.

<comment><USER31> Think of it this way, large parts of our economy are under central planning because of the power of large corporations.

For example Walmart, when they chose which company to buy lawnmowers from for example, they get to decide which lawnmower makers survive and which don't.

By picking one winner and putting in a huge order at a huge discount, they can undercut every other manufacturer, effectively putting them out of business.

I don't know about you, but I don't remember the election where I got to vote for who is in charge of Walmart, so it's very autocratic.

<comment><USER32> Cartel or monopoly is the general trend of the day. I believe that laissez faire economics leads toward cartel/monopoly rather than persistent decentralization, it's kind of chaos theory in action with strange attractors or local minima/maxima.

Unless the fundamentals of the system are decentralized: farming/farmland, fisheries, mining, and other commodities.

</comment></comment></comment><comment><USER33> Thank you for you tip.

</comment><comment><USER34> Honestly, I work in a huge company (number three in comparison worldwide, >90k employees world-wide), and it feels like Socialism. We eat lunch together in a canteen. Everything we do and buy is shared ownership. There's false propaganda from the top down, and you can live a happy life as long you accept the size of your share of the cake and don't criticize people above you.

This is not meant as criticism, I actually like the lifestyle. Especially since in such a big corps there are actually resources available compared to end-times socialist countries. But if you live here in this company your whole life it is questionable why we should call ourselves capitalists.

<comment><USER35> That's the thing. You're not a capitalist, the owners are. They have the capital and set the working conditions for you, the worker.

What makes that entire setup capitalist is that it's privately funded and owned, as opposed to being subject to democratic control.

<comment><USER36> The difference between Corporate Socialism and Democratic Socialism is the flavor of koolaid being served at the propaganda canteen. (hint: large concentrated power centers don't remain democratically controlled)

<comment><USER35> One party states (and to a lesser extend the American party primaries) are not terribly democratic.

Diffuse power spread amongst many small power centers resists central control.

<comment><USER36> If the primaries aren't democratic, even a democratic choice between two undemocraticly-nominated candidates does not lead to democratic outcomes. We need to destroy the political machines that are running our elections.

</comment></comment></comment></comment></comment><comment> ur-whale >Salaried status at multinationals is the new citizenship

This is pushing the analogy too far and destroys credibility for the article.

<comment><USER37> Hence "analogy"</comment></comment>


Airports for the Supersonic Age - <AUTHOR> https://www.airporthistory.org/airports-sst-1.html <comment><USER2> There is a certain quality of the graphic design, colors, typography, and layout of the "vintage" planning & marketing materials shown here that I just can't put my finger on why I like it so much. Perhaps a certain richness from the inks that were available and the type of tools used to produce it.

Whatever it is, it feels authentic and hopeful. I love the sense of optimism that the graphics (and history shared in this article) invokes. Great stuff.

<comment><USER3> As a child of the 80s, I can definitely say that life in past decades was "brighter" then than it is now, although it's for reasons unrelated to graphic design. What it basically comes down to is, we used to dream and fantasize about possible futures and our contributions to it in a way that was nurtured by society. There was a general feeling that we had grown beyond the profit motive, or at least, that prosperity was increasing faster than effort.

Basic etiquette was better. Well-read people like Carl Sagan were listened to. People could have a modicum of respect in their communities as simple professionals like teachers/architects/doctors/lawyers/etc. Children were allowed to be children. We had movies like The Goonies, which illustrated the ills of society (like unrestrained real estate development) and provided a counterculture message of hope.

I'm in danger of straying into the rise of fear-based dystopia post-2000 so I'll leave it at that. I think that we can get back to the optimism of past decades, but it requires looking past the superficial and understanding that real prosperity is more about opportunity and a feeling that we're all equal and helping to build a better world together.

<comment><USER4> > I'm in danger of straying into the rise of fear-based dystopia post-2000 so > I'll leave it at that.

That rise happened in the 90s, if not earlier. Remember the sensationalism about people getting killed because of Y2K bugs?

<comment><USER5> Whereas in the 80s the fear of civilization-wide extermination through nuclear war was widely present, in films and even pop songs. Y2K was the rare occasion where the sensationalism got the problem fixed, so nobody believes it was ever a risk. Like CFCs.

No, the 90s was a quiet time for everyone west of Yugoslavia and north of the Mediterranean. The "end of history" between the fall of the Berlin Wall and the fall of the World Trade Center.

I sometimes think we don't do futurism any more because we spent so much effort looking forward to the future of 2000, and there's no big date to look forward to quite like it.

</comment></comment></comment></comment><comment><USER6> This page has great content, but some Javascript or CSS stupidity that prevents text selection. Anyone have a good fix to reenable that?

I use the text selection highlight as I read just to keep my place when scrolling around to look at the images.

Browser makers need to come up with a "Disable user-hostile features" toggle that gets rid of this and form related BS like the inability to paste passwords.

<comment><USER7> Paste this on the browser console:

document.body.onselectstart = function() {return true;};

<comment><USER8> alternatively, firefox reader mode doesn't intercept selection events

<comment><USER9> Does this work on mobile also?

<comment><USER10> It does in Firefox on Android.

</comment></comment></comment></comment></comment><comment><USER11> i accidentally clicked on the image and it said download is not allowed. So I went to web tools and downloaded the image anyway. I don't even want that image but I hate that feature.

<comment><USER12> Interestingly, on Mac in Safari, if you switch to Reader View, you can download images and copy text to your heart's content.

<comment><USER13> Reader View, and Readability the bookmarklet before that, is one of those great 'it just works' features that I'd go crazy without.

</comment></comment></comment><comment><USER14> What a fascinating article. It is interesting to see how people in the 60s and 70s imagined the future of flying: fast supersonic planes flying between continents. We have gone in a completely different direction with "slow" and cheap air travel.

PS: Only on H.N would you find a majority of comments referring to the website CSS/JS and technical glitches when the content is of such quality.

<comment><USER15> You're Too Cheap to Fly Faster: [https://medium.com/lift-and-drag/youre-too- cheap-to-fly-fast...](https://medium.com/lift-and-drag/youre-too-cheap-to-fly- faster-7885a299bca2)

</comment></comment><comment><USER16> I wonder if the overbuilding of airports during this era directly led to affordable air travel in our current time?

<comment><USER17> This is a really good question. It's a complicated issue and depends on some definitions.

If we didn't build any and decided we wanted massive air travel now? Yep.

If we are only talking about travel between class B airports (basically any major city: LAX, DEN, ORD...)? Not really? DEN for instance was rebuilt in a new location around 1995.

What about literally all airports? Yes, but not really because of _this_ era. We built tons of airports all over the country during WWII and the early cold war for military purposes. The FAA gave out tons of money to municipalities to build airports in places we'd never have them today, see KSMO[1]. Between this and funding from the federal government to subsidize routes serving far flung communities, we're seeing a lot of air travel that wouldn't exist otherwise. This isn't necessarily a bad thing though as it allows these smaller communities to remain connected and support larger businesses. If this situation didn't exist it would put yet more pressure on massive landlocked urban centers to support everyone converging on them and make them the only locales that could support major businesses.

[1] [https://en.wikipedia.org/wiki/Santa_Monica_Airport#Future](https://en.wikipedia.org/wiki/Santa_Monica_Airport#Future)

<comment><USER18> >If this situation didn't exist it would put yet more pressure on massive landlocked urban centers to support everyone converging on them and make them the only locales that could support major businesses.

The fantasy of the 'strong towns' movement.

<comment><USER17> Hardly a fantasy. Just look at the reqs for Amazon's HQ2.

[https://en.wikipedia.org/wiki/Amazon_HQ2#Requirements](https://en.wikipedia.org/wiki/Amazon_HQ2#Requirements)

</comment></comment></comment></comment><comment><USER19> Ah! What could have been. Failure of developing (quiet) super-sonic and hyper- sonic civilian aircraft is one of the great shortcomings of our age. The Boom (shockwave) has given way to The Zoom (video teleconferencing)

An interesting point of the "future architecture" speculations is that they never anticipated algorithmically-aided parametric designs in the manner of Zaha Hadid ;)

[https://www.dezeen.com/2019/09/26/zaha-hadid-architects- star...](https://www.dezeen.com/2019/09/26/zaha-hadid-architects-starfish- beijing-daxing-international-airport/)

<comment><USER13> It's a good tagline but The Zoom still involves the first 5-10 minutes of technical issues interspersed with drop off and, in my opinion, doesn't displace the value of interaction IRL. Rather, I think it makes conference (formerly audio) calling way better.

I'm very hopeful that The Boom (aerospace company) is successful as someone who travels a good deal for work.

</comment></comment><comment><USER20> Terminal 1 at CDG may be horribly dated, but I love that design and look.

<comment><USER21> There was a small midwestern airport I used to fly in and out of.

They had the "new" terminal, all of 3 gates. And then the baggage pickup area.

In between those areas was the "old terminal" it was this absolutely pristine 1960s ish airport waiting area that was hexagon shaped with this gorgeous black flooring also in a hexagon shape, a big brass compass in the middle, and everything in that area radiated out from that compas, the seats were lined up along the lines of the hexagon. Service desks, bar, etc. It had big tall windows (a few stories tall) so you could see out onto the runways.

Sadly it eventually was torn down when they renovated the entire structure for a new more modern boxy... thing.

</comment></comment><comment><USER22> Terrific pictures and rare history info! Thanks for the post.

</comment><comment><USER23> Makes me think... If we will ever see something like a Concord fly again!!

<comment><USER24> The Concord shutdown largely because many of the pax and approvers died in the Twin Towers attacks.

So I suppose if a similar number of people with too much money in NY and London, it could happen again.

</comment></comment><comment><USER8> The level of naive fantasy (no offense, I'm just talking about the simple drawing technique and the dreamy future) in this era is staggering.

<comment><USER25> It is a great lesson on why premature optimization can be a bad thing.</comment></comment>


How to build a great mobile development team - <AUTHOR> http://areallybadidea.com/how-to-build-a-great-mobile-development-team

<comment><USER2> It never ceases to amaze me how companies will spend months trying to find someone with skills that take weeks to learn.

<comment> bjelkeman-again It may take weeks to learn for the right person. But I doubt the right person is available. Do you know any really good developer who isn't really busy?

<comment><USER3> <http://en.wikipedia.org/wiki/No_true_Scotsman>

</comment></comment></comment><comment><USER4> One thing that frustrates me is the new 'mobile developer' role that seems to have emerged. Rather than having two separate people - an iOS specialist and an Android specialist, companies will hire a 'mobile developer' as if Android and iOS have a lot in common with each other. They would never hire someone who had only Objective-C experience to code a Java app, but they will happily throw an iOS developer at an Android app.

What it means is you typically get someone who knows very little about Android putting out utter crap. I think this is one of the reasons why the Android Market has suffered from such low quality, even in apps from major companies.

<comment><USER5> Agreed. We don't consider Android and iOS programmers interchangable (except in so far as we consider all programmers at JTV to largely be generalists who can work on whatever they put their minds to). Android and iPhone are different platforms with their own gotchas that just happen to share some form factors and styles of interface elements. When we do product design we design for each separately.

<comment><USER6> WebOS/Bada/Android(Linux), WindowsPhone(CE) and iOS(Mach) are all very different. Each platform uses its own string class, threading logic and UI layer. The lack of standardization is almost bizarre when you factor in HTML5. This results in lots of developers sitting on the fence.

Five platforms, five compilers, five api´s... yet everything runs on 32bit ARM, uses ANSI/ISO C-like syntax and reads UTF8 over HTTP.

I tried writing something that was multiplatform with HybridKit and it was almost impossible. Even stupid code generation might be too much. So solid design and custom code seems like a safe bet.

<comment><USER4> > The lack of standardization is almost bizarre when you factor in HTML5

I have a feeling we'll one day look a back on this period as a time of mass insanity when just as we nearly attained the dream of a cross platform stack that could run and work well anywhere we all enthusiastically threw it away and enslaved ourselves to the horror of splintered, incompatible technologies.

</comment></comment></comment></comment><comment><USER7> tl;dr: hire talented engineers with strong programming backgrounds and let them work on areas of the company they are interested in, regardless of domain experience.

Totally agree. This almost always works.</comment>


Building Uber's Go Monorepo with Bazel - <AUTHOR> https://eng.uber.com/go-monorepo-bazel/ <comment><USER2> Might make sense if you use Go or any other language with a straightforward tooling landscape (compilers, package management etc.).

That changes drastically if your codebase contains a lot of C++ and your SW model doesn't quite match the way Bazel tries to push you into. For instance doing any of the following things will quickly turn into a nightmare when using the Bazel C++ rules:

* dynamically linking libraries

* using a containerized approach for library includes (so transitive relative include paths)

* using different toolchains and cross compiling

* interfacing with thirdparty libraries

We are talking seasoned build engineers ending up frustrated after literally months of trying to achieve something that is easy as pie in CMake.

In addition there is still no real IDE support. The CLion plugin is permanently broken and lags behind versions. No real VSCode support. Using custom rules makes this even worse, to the point where CLion will refuse to sync and not having a way to produce a compilation database json.

There are so many bugs open on those projects and no progress or answers. I can not recommend Bazel if C++ or C is what you care about.

<comment><USER3> > We are talking seasoned build engineers ending up frustrated after literally > months of trying to achieve something that is easy as pie in CMake.

But it's not the same as CMake. A properly set up Bazel project gives you so much more: organization-wide incremental builds, build cache and build farm. Also, actual full hermeticity of builds (no, taking ambient deps from a Docker container doesn't replace that).

Comparing CMake to Bazel is like comparing some barely-working bash scripts on a single box to a kubernetes deployment. Maybe you're okay with just bash scripts, but some of us aren't, and that's where Bazel comes in.

<comment><USER4> I've been confused for a while about the common claim that Bazel gives "full hermeticity" of builds -- it doesn't seem to be true in practice (at least for packages with system dependencies). Maybe you can help me clear it up.

E.g. Google's protobuf libraries [1] can be built with Bazel, and they depend heavily on system headers outside the repository, e.g. <iostream> and <stdio.h> and lots more. If those headers subsequently change, Bazel will not pick up on this and will not know to rebuild the parts of the build that depend on them.

To reproduce: run `bazel build -c opt //:protoc_lib` and then put random garbage in your /usr/include/stdio.h and /usr/include/c++/<version>/iostream and then rerun the bazel command -- it will not know to invalidate the build cache. If you `bazel clean` and then build again, you'll get different results.

Bazel does a lot of really nice things and I can believe that within a google3-like environment (where the source code never references a system header?), it effectively provides hermetic builds, but in practice as used outside Google (or even in Google's public OSS releases) it doesn't seem to really match this description or _enforce_ a hermetic seal. What am I missing?

[1] [https://github.com/protocolbuffers/protobuf](https://github.com/protocolbuffers/protobuf)

<comment><USER5> The best way to get your hermetic builds in order is to _always_ use remote execution and ensure that your executor nodes don't have compilers and headers just laying around. Force yourself to get the toolchain under bazel's control.

I think the reason the public finds this so mysterious is the documentation for CROSSTOOL is terrible, and virtually all of the people who learned how to use blaze at Google go out in the industry with no understanding at all of CROSSTOOL, because there's a small dedicated team who maintain it.

<comment><USER6> Does your company use remote execution across the board with Bazel? How much effort was it?

<comment><USER5> I work for no man, as a character in a movie once said. But I recently went through this exercise just to make sure I could do it, and it's easy enough to put a bare-bones executor node in the cloud and use it temporarily. You can even get ARM nodes, to make sure you aren't implying the target architecture.

Doing it on a company scale is probably harder. Last place I worked used bazel but did not bother with remote.

</comment></comment></comment></comment></comment></comment><comment><USER7> I've made a similar post about building a Go monorepo using Bazel two years ago, check it out - [https://filipnikolovski.com/posts/managing-go-monorepo- with-...](https://filipnikolovski.com/posts/managing-go-monorepo-with-bazel).

We've been using Bazel not just to build and test our Go apps, but to build docker images, compile proto files, even deploy to k8s. It's really versatile and the developers only need to know one tool to build and test the whole environment.

</comment><comment><USER8> We have been Go with Bazel for the last 2 1/2 years to build most of our backends, but also on mobile (gomobile) as well. It's not an easy tool, but it delivers amazingly and it's very, very reliable.

Haven't run a bazel clean in... 6 months maybe?

The multi-language really is a killer feature when the project inevitably becomes polyglot, such as when doing protobuf/gRPC or using CGo.

</comment><comment><USER9> I wish they had spent more time describing how/why Go's built-in build tool stopped working. Or perhaps that's part of the basics of Bazel. Anyone able to share more on that?

<comment><USER10> Honestly the main reason Bazel is useful in a monorepo configuration is simply because it's designed for it. It supports cross-language dependencies and generated files, and is designed for large repositories with many nested targets. Go's build system is fine, but things like Go generate vs genrule probably come into play. Bazel also offers target visibility, to protect targets from being depended on in unintended ways, and build isolation, to allow builds to be more predictable (and help enforce target visibility.) It also has a few convenience features for vendoring 3rd party libraries and handling their licenses.

Of course Bazel is far from perfect, in fact sometimes you may be better off running your own rules instead of the official ones in some cases, but IMO it makes a pretty decent build system for putting all of your code in one place.

On the other hand, it's one of those Google things where if you haven't seen it in action in a functional configuration it's hard to explain why it's actually nice. And sadly I feel unsatisfied with the Node.JS rules for example, which is probably how a lot of people will first experience Bazel (since I believe Angular supports Bazel this way.)

</comment></comment><comment><USER11> I wish my company was at the scale of Uber to work on all these kinds of tech. Makes me want to leave my current job just to go to Uber.

<comment><USER12> Not personal experience, but I've had several coworkers who worked at Uber, and they all gave me the same story. This is the story:

Uber reinvented a ton of technology because of the idea that off-the-shelf solutions wouldn't work at "Uber scale". However, there was very little accountability for whether the in-house solutions were necessary, and working on these tools would get you promoted. So for every "Uber scale" problem that a team actually solved, there were a couple other projects that were just half-baked alternatives to the off-the-shelf software that they _should_ be using.

It turns out that "Uber scale" is not really _that_ large, despite the name. But engineers kept repeating "Uber scale" and building infrastructure.

The same problem occurs at the larger tech companies like Google, Facebook, Microsoft, Amazon, and Apple, but in different ways and to different degrees. And to a large extent, engineers are copying what other companies do, and bringing ideas from one company to another when they hang out after work or switch jobs. For example, you can bet that these companies mostly have their own containerization and scheduling systems, many of which are undoubtedly not competitive with Docker or K8s in 2020, but K8s only goes back to 2014 and all these companies are older. I'm sure Borg and Tupperware are great if you work at Google or Facebook but I'm also sure that they're missing a bunch of tooling that you're used to. Same thing with build systems. Bazel, Buck, Pants, Please, and that Frankensteined system that Chrome uses are all copies of each other but Bazel is the only one with a decent size community and ecosystem, as far as I can tell.

Uber is absolutely not on the scale of those companies, and _most of the time_ they should probably be using off-the-shelf solutions when they become available.

<comment><USER13> \- nothing wrong with NIH syndrome if you have the means and resources to refine existing ideas and rebuild them with scale in mind

\- uber is a 50 billion dollar company and they have to de-risk themselves by owning entire stacks, top to bottom. if it means re-creating something from scratch... who cares, they have billions.

<comment><USER12> That's just apologia for NIH syndrome. It's fine to reinvent software if that serves your goals. It's short-sighted to reinvent software without due consideration for whether off-the-shelf solutions work. That's not de-risking, that's _adding risk_ and _slowing development._ You see it happen at companies like that and usually it's a sign that there's something wrong with the culture, incentives, and the way that promotions work.

My take on it is that the engineers want to make complicated solutions to hard problems to justify their salaries and get promoted, and that managers encourage that behavior so they can defend their headcount. I'm not accusing any of these people of acting in bad faith here—nobody's reinventing tech to sabotage the company, it's just that the system encourages this kind of behavior.

This problem is not unique to Uber, you'll see similar things happen across the industry to different degrees.

<comment><USER5> Well, the "due consideration" needs to duly consider the actual costs and benefits of the off-the-shelf software, not make the kind of unsupported blanket claims about its obvious superiority, like you just did. Every off- the-shelf program has maintenance costs, flaws, and weak fitness for purpose. You just made a sweeping and italicized claim that all off-the-shelf software is both less risky and faster to develop than house-made software. That's a dangerous philosophy and probably isn't true for every organization and application.

<comment><USER12> > …not make the kind of unsupported blanket claims about its obvious > superiority, like you just did…

Not what I said. Let's move on.

> That's a dangerous philosophy…

Go pick a fight with someone else.

</comment></comment></comment></comment></comment></comment><comment><USER14> > Out-of-the-box software solutions rarely work for a codebase as large and > complex as Uber's Go monorepo.

That's a weird way to put it. Bazel is the open source variant of what Google uses for its monorepo, which is several orders of magnitude larger and arguably more complex.

<comment><USER15> The version of Bazel we (Google) uses internally has a lot of features that are not out of the box in open source Bazel. Mostly around distributed compilation or object caching.

<comment><USER16> The public version also offers remote execution and remote caching.

[https://docs.bazel.build/versions/3.1.0/remote- execution.htm...](https://docs.bazel.build/versions/3.1.0/remote- execution.html) [https://docs.bazel.build/versions/3.1.0/remote- caching.html](https://docs.bazel.build/versions/3.1.0/remote-caching.html)

What's not open-sourced is mostly the interaction with Google internal infrastructure.

</comment></comment></comment><comment><USER17> This is excellent! The only reason we haven't moved some of our Go codebase to a Bazel monorepo is the IDE integration.

I have been tinkering with a few ideas to make the existing tooling work with Bazel, but the effort is larger than I had originally expected.

</comment><comment><USER18> If you also want to migrate off of Makefile and also want reproductibile builds, try out Earthly. Normal companies can't do Bazel because it's too alien and requires deep investment.

[https://github.com/earthly/earthly](https://github.com/earthly/earthly)

Disclaimer: I am Earthly's creator.

</comment><comment><USER19> Does anyone have experience using Bazel (or a similar build system) together with create-react-app? Specifically, is there a way do it without ejecting?

I work on a project with a Go backend and a React frontend, and having to update all those React dependencies myself is what keeps me from moving to a system like Bazel.

</comment><comment><USER20> Super interesting! There is also a video explaining their system that might be worth watching: [https://vimeo.com/358691692](https://vimeo.com/358691692)

</comment><comment><USER21> Wait, didn't Uber decide that Bazel didn't scale enough (speaking as a xoogler, lol) and made their own build tool? Or am I misremembering?

</comment><comment><USER22> That seems like a ridiculously complex pipeline to maintain and onboard into. I personally dislike this "do it all" monorepos in most cases, there are cases were they work, but they also break a lot of other things.

I have not seen metris or blogs that prove this "uptick in build efficiency" or an increase productivity.

While I do like the idea behind bazel, I hate repeating deps in things like "go_repository" with gazelle.

<comment><USER23> go mod vendor && bazel run gazelle

No go_repository duplication.

</comment></comment><comment><USER24> The article says that monorepos are more efficient but also that "As the monorepo grew, the build target list increased to a point where it became too long to pass it through Bazel's command line interface.".

Monorepos are not efficient. They are easier to manage when a team is small but as the team grows and you have more and more deliverables with separate versioning you are introducing control structures in your automation. Complexity explodes!

Anyway, all this does matter if you don't make any profit :)

<comment><USER25> Google is a monorepo as far as I know, and they are doing fine.

<comment><USER5> Indeed, in their paper from 5 years ago Google claimed 300000 commits per day across 9 million source files, compared to this article claiming 10000 commits per month on 70000 source files at Uber. Whatever the differences are between blaze and bazel, it must be the case that the former can easily scale to this size of repo.

I like to look at Google's GitHub commit messages to get an idea of the pace of their revision history. Yesterday they committed something with a Piper revision of 311324901. A month ago it was 306514102, and a year ago it was 248381230. That's about 160k revision numbers per day.</comment></comment></comment>


Processed foods are a much bigger health problem than we thought - <AUTHOR> https://www.vox.com/science-and-health/2019/6/11/18652653/diet-weight-loss-ultra-processed-foods-microbiome <comment><USER2> I was just reading Stephan Guyenet's chat with Chris Kresser on processed foods and how palatability of such foods constantly triggers the body's reward-system with some big consequences on health- affecting something called set point and throwing it off. Seems really concerning indeed. Much more here: [https://chriskresser.com/the-healthy-skeptic-podcast- episode...](https://chriskresser.com/the-healthy-skeptic-podcast-episode-10/)</comment>


Nokia says most Apple products violate its patents - <AUTHOR> http://news.bbc.co.uk/1/hi/technology/8434132.stm <comment><USER2> Perhaps once the bigcorps have collected enough vaguery in their respective "intellectual property portfolios", we can just agree that everyones' technologies violate everyones' patents and just shut the hell up and build stuff already...

<comment><USER3> That's what the "bigcorps" will do. Then they will enter formal or informal cross-licensing agreements. But, they will still use their patents to crush any smaller competition.

<comment><USER2> That may be so for the short term, and certainly inside national boundaries, but I don't think the _"rich countries own all of the ideas"_ thing is going to be a sustainable global equilibrium state.

This will become the norm: [http://www.scidev.net/en/news/brazil-breaks- patent-on-hivaid...](http://www.scidev.net/en/news/brazil-breaks-patent-on- hivaids-drug.html)

</comment></comment></comment><comment><USER4> So, first Nokia sues over some general cell phone technology patents. Then Apple countersues over patents that they specifically developed for the iPhone. Now Nokia suddenly realized that every Apple product ever uses their technology and is counter-counter suing. I wonder how many days it is before Apple realizes Nokia is using Apple technology in every one of their devices ever and counter^3 sues, and how many days after that until they settle.

<comment><USER5> That is why most companies find it easier just to cross-license patents.

<comment><USER6> From what I've read, this was the problem... Nokia wanted to cross-license everything, and Apple balked at that. I can't say that I blame Apple, given that the iPhone interface seems to be far ahead of Nokia's current offerings.

</comment></comment></comment><comment><USER7> 1\. vote Pirate Party

2\. abolish misuses of patents

3\. companies such as Nokia are forced to get revenue by making things people want, rather than rent-seeking

4\. everyone wins!

<comment><USER8> If they do indeed have valid patents on those technologies it means that they have actually invented something people want.

I'm not saying such technologies should be patentable, only that people apparently want them.

</comment></comment><comment><USER9> Apple doesn't mind using other people's stuff when it suits them - they did lift Creative's mp3 player UI and successfully sold it off as it's own.

[http://www.tuaw.com/2006/08/23/apple-pays-100m-to- creative-i...](http://www.tuaw.com/2006/08/23/apple-pays-100m-to-creative-in- patent-lawsuit-settlement/)

</comment><comment><USER10> Cry me a river.</comment>


The Man Who Invented the Computer - <AUTHOR> http://www.nytimes.com/2010/11/28/books/review/Schulz-t.html?ref=technology <comment><USER2> The ABC was not a computer as in "turing complete". The first "turing complete" computer was Zuse's Z3.

see <http://en.wikipedia.org/wiki/Computer>

<comment><USER3> I attended a conference once where the invited speaker, Raul Rojas, showed that the Z3 was a universal computer, which wasn't previously believed to be the case. The basic idea of the proof was to show that you could have a single while-loop on the Z3 containing a big case-statement in the body of the loop which basically simulates a (finite) Turing machine.

The interesting part of this talk however was this: the Z3 did support neither loops nor conditional branches per se! Instead, it could just compute a series of mathematical operations encoded on a punched tape.

To simulate the case statement without the conditional branching, the trick you do is you execute every branch of the case-statement each time, but you only allow one of the branches to write the results of its computation back to the machine's memory.

But how do you get a while-loop? Well, you just glue the ends of the punch tape together! ;-)

(More details here: [http://www.zib.de/zuse/Inhalt/Kommentare/Html/0684/universal...](http://www.zib.de/zuse/Inhalt/Kommentare/Html/0684/universal2.html))

<comment><USER4> But was it used as a general purpose machine? I think there's a difference between something that was designed and used for general purpose computation and something that was only demonstrated to be able to do general purpose computation after decades of hindsight.

</comment></comment></comment><comment><USER4> For the other side of this, read "ENIAC: The Triumphs & Tragedies of the World's First Computer" by Scott McCartney. The work Eckert and Mauchly put in to get the first electronic, general purpose computer in a state that it was useful to others should be interesting to anyone who reads HN. It's both a story of hackers and entrepreneurs.

I take issue with this characterization: "Mauchly was not a better scientist than Atanasoff, but he was a more ambitious entrepreneur."

Mauchly did something Atanasoff did not: he made something _useful_. So useful, in fact, every digital computer you see in front of you is a direct descendant of Mauchly's labor, not Atanasoff. Eckert and Mauchly drew inspiration and ideas from many places, but I think people here should be able to sympathize with the fact that these two were the leaders behind the project that made those ideas a useful technology that changed the world. While those ideas existed before Eckert and Mauchly did their work, they're the ones who put in the grunt work to fully realize them - and contribute their own innovations along the way.

I actually find the portrayal of Eckert and Mauchly in the whole piece real disheartening.

<comment><USER5> >> So useful, in fact, every digital computer you see in front of you is a direct descendant of Mauchly's labor, not Atanasoff.

This doesn't make any sense. Atanasoff had some pretty genius ideas and together with Berry built the first electronic digital computer. Mauchly visited their lab, got a ton of information on ABC and later built another electronic digital computer - ENIAC, which was generally ABC 2.0.

<comment><USER4> ABC was not a general purpose computer - it was not Turing Complete. It was not in continuous development by the time Mauchly saw it - that was the end of the line for the ABC. Eckert and Mauchly, on the other hand, developed a general purpose electronic computer with the explicit goal of getting it out to as wide an audience as possible.

<comment><USER5> Hmmmm, IMHO every statement here is incorrect.

Do you have a mathematical prove that ABC is not Turing Complete? I suspect that if one is sufficiently smart, he can implement a Turing machine on top of any 1930s, 1940s computer.

BTW I don't think 'General purpose computer' is used widely as equivalent of a 'Turing complete computer'.

From [https://secure.wikimedia.org/wikipedia/en/wiki/John_Vincent_...](https://secure.wikimedia.org/wikipedia/en/wiki/John_Vincent_Atanasoff) : "In June 1941 Mauchly visited Atanasoff in Ames, Iowa for four days, staying as his houseguest. Atanasoff and Mauchly discussed the prototype ABC, examined it, and reviewed Atanasoff's design manuscript. Up to this time Mauchly had not proposed a digital computer. In September 1942 Atanasoff left Iowa State for a wartime assignment as Chief of the Acoustic Division with the Naval Ordnance Laboratory (NOL) in Washington, D.C. ... Mauchly visited Atanasoff multiple times in Washington during 1943 and discussed computing theories, but did not mention that he was working on a computer project himself until early 1944.

By 1945 the U.S. Navy had decided to build a large scale computer, on the advice of John von Neumann. Atanasoff was put in charge of the project"

Sounds to me like Mauchly just tried to steal Atananasoff ideas (with some success).

<comment><USER6> Please simply compare the features of the ENIAC with the ABC, and tell me where the similarity lies: ABC operated in binary, while ENIAC was decimal. ABC used vacuum tubes as flip-flops, making it essentially an electro- mechanical machine operating at one operation per second. ENIAC used vacuum tubes as electronic counters, making it operable at electronic speeds, i.e., 5,000 operations per second. ABC was designed to process one type of problem (differential equations), while ENIAC was indeed general purpose, and could be programmed to handle any problem, including the insanely complicated mathematics of the hydrogen bomb. If you want to fault Mauchly for talking with other scientists while planning his own computer, then please also include all the other scientists with whom he shared ideas. Also note that the two met when Atanasoff attended a lecture Mauchly was giving ... on the use of electronics in computation. Does this sound like Mauchly got all his ideas from Atanasoff? Also, BTW, Mauchly kept "visiting" JVA's lab at NOL because HE WAS HIRED BY THE NOL TO CONSULT ON THE PROJECT because it was making very little progress under Atanasoff's direction. Look it up.

</comment></comment></comment></comment></comment><comment><USER7> Depends on your definition of computer, of course. I've always heard that Babbage invented the computer.

<http://en.wikipedia.org/wiki/Babbage>

<comment><USER8> Yes, it's very much a matter of perspective, which is why I find it so fascinating. Babbage is clearly a candidate, as is Konrad Zuse [1], who built the first functional Turing-complete machine, and designed the first Turing- complete programming language [2] (it didn't have recursion, but neither had FORTRAN, before the mid-70s). Bottom line (for me): computers are the result of international and cross-generational cooperation and knowledge exchange; that's were progress seems to come from.

[1] <http://en.wikipedia.org/wiki/Konrad_Zuse> [2] <http://en.wikipedia.org/wiki/Plankalk%C3%BCl>

</comment></comment><comment><USER9> If the link asks you to log in, going through Google News works (top link - Binary Breakthrough):

[http://news.google.com/news/search?aq=f&pz=1&cf=all&...](http://news.google.com/news/search?aq=f&pz=1&cf=all&ned=us&hl=en&q=the+man+who+invented+the+computer)

<comment><USER10> In addition, you can use my weekend project:

[http://viewtext.org/article?url=http%3a%2f%2fwww.nytimes.com...](http://viewtext.org/article?url=http%3a%2f%2fwww.nytimes.com%2f2010%2f11%2f28%2fbooks%2freview%2fSchulz-t.html%3fref%3dtechnology)

<comment><USER11> Have you gotten a C&D letter yet? :P

</comment></comment></comment><comment><USER12> There is a high school of electronics in my town with J. Atanasoff name.</comment>


Why Is NumPy Only Now Getting Funded? - <AUTHOR> https://www.numfocus.org/blog/why-is-numpy-only-now-getting-funded/ <comment><USER2> We have this problem in the .NET world. Accord.NET is written by a brilliant academic and programmer. It's well written, and has a good API, but it is largely the effort of this one dude, with minor contributions from a smattering of other fellows.

Again, it is great in general, but it has bugs and rough edges here or there, and a lot of people don't trust it for production. I wish there was a way for people to be properly compensated for building and maintaining such vital scientific and mathematical computing software.

<comment><USER3> That's because people don't actually value free things, until they come to depend on them, and then there is no way for that to continue unless they pay. And even then they will pay the bare minimum to keep it going. That's the whole psychology behind open source. Companies could pay for it and those using it can more than afford to do so, but it's free, and apparently it's going to stay that way so why not ride that gravy train?

</comment></comment><comment><USER4> Also a problem for Octave. Remember this?

[https://news.ycombinator.com/item?id=13603575](https://news.ycombinator.com/item?id=13603575)

It also stings a little when people say that it's completely obsolete because Matlab itself is "legacy" and we should all be abandoning the language, Octave included... and yet, even though I like numpy and Python and matplotlib and Julia and R, I still find myself reaching for Octave whenever I need a quick visualisation of some data.

<comment><USER5> Octave's "business model" is "give away for free an inferior clone of a commercial product". Why is anyone surprised that that isn't lucrative? Anyone who has the money to spend on Octave is likely to just pay for Matlab. The defining feature of Octave users is that they want to use Matlab's library ecosystem but they're too cheap or broke to pay for a copy of Matlab.

<comment><USER4> Because Matlab is expensive. Very expensive. Especially if you want to run it on servers or clusters, which is something people want to do. We're talking a single company paying millions of dollars per year for Matlab licenses, versus paying thousands for Octave (this does happen, and some companies do pay for Octave, but very few). My last job consisted in fixing Octave enough to be able to run some classifiers in servers, which would have been prohibitively expensive in Matlab and it would have also been much too expensive to rewrite in a different language. It was cheaper to pay me to fix Octave just enough for this code to run.

As to the "inferior" part, it really depends. Some people really like the Octave-exclusive features, but most are unaware they even exist.

<comment><USER6> What exclusive features are there? I'm interested.

<comment><USER4> It's really nothing major, but it's the small little cherries on top:

[http://wiki.octave.org/FAQ#What_features_are_unique_to_Octav...](http://wiki.octave.org/FAQ#What_features_are_unique_to_Octave.3F)

It's a bit of a problem to innovate too much with Octave, because Matlab may decide to implement a feature we did first, but they'll do it slightly differently, forcing us to redo our work to match theirs.

</comment></comment></comment></comment></comment><comment><USER7> "The problem of sustainability for open source scientific software projects is significant."

Yeah, William Stein can tell these stories too: [http://sagemath.blogspot.cz/2015/09/funding-open-source- math...](http://sagemath.blogspot.cz/2015/09/funding-open-source- mathematical.html)

<comment><USER8> Yeah, every open source scientific software seems to have an uphill task before it gets recognized. Sagemath more so than others because of its scale and having a huge code base. Having to integrate multiple open source projects isn't helping either.

But its a fine project and one that I use. For a collection of other projects it works better than most other individual projects.

"Every successful science library has the ashes of an academic career in the making" \- Same guy

</comment></comment><comment><USER9> Is the idea that "foundational work" (in any field) can be done without "huge sacrifices" widely accepted?

It sounds a tad unrealistic to me, unsupported by history.

It's as if people want to have it both ways: Create innovative SW, but also don't take risks or make sacrifices.

Offer software "for free" (and belligerently oppose even something like GPL), but also get paid (preferably by the government, so the people actually footing the bill have no say in it) and be long-term sustainable.

What's next: get paid, but also don't pay income taxes? Give away project control, but also keep it? :)

All understandable desires, but a little schizophrenic.

 _Disclaimer:_ I am a big fan of open source and NumPy in particular. I mentor students and OSS newcomers, I even pay one full-time dev to work _only on OSS_. It's just that I try not to kid myself about where the time&money comes from and where it goes, and I try not to have random people pay for my hobbies.

Extremely relevant previous HN conversion on this topic:

[https://news.ycombinator.com/item?id=14551355](https://news.ycombinator.com/item?id=14551355)

<comment><USER10> Who said people want to do "foundational work"?

The just want to write some specific software they enjoy writing together.

The question rather is: after said software has been proven valuable and widely used by companies, and when there remain some hard and/or non-enjoyable parts to be done to complete it/enhance it (specific drivers, documentation, advanced features, etc), why don't any of the users donate some money to help?

<comment><USER11> Donating company money is really hard, especially if you're just some manager of some department, and double so if it's not to a registered charity. Much easier to actually buy something like a support contract or a license where you get a purchase order and a receipt from a registered organization. People at companies simply cannot just give company money to random people with paypal accounts even if they think it's the right thing do to.

<comment><USER10> > _Donating company money is really hard, especially if you 're just some > manager of some department, and double so if it's not to a registered > charity._

Maybe the open source communities should register as charities then? They do charitable work after all...

<comment><AUTHOR> This is the function of the fiscal sponsorship program at NumFOCUS. All fiscally sponsored projects basically come under the umbrella of NumFOCUS' nonprofit status, so that the projects can receive tax-deductible contributions, etc.

</comment></comment></comment></comment></comment><comment><USER12> The "Every successful science library has the ashes of an academic career in the making" quote has been mentioned several times in the comments, so I thought I would give a plea to everybody who works in academia to help the people who build the foundational tools of your research by citing them in your papers:

[https://www.scipy.org/citing.html](https://www.scipy.org/citing.html)

<comment> torrent-of-ions Sad to say that I haven't cited these in papers that I've published so far. Much software is taken for granted, especially libraries. I don't often see papers mention SciPy specifically let alone add a citation. The author of GNU Parallel resorted to a message on stderr asking academics to cite it.

But this isn't even the whole story. As we all know, designing and implementing a program or library is often just the first step. Someone then has to _maintain_ that code. There is absolutely no incentive for anyone to maintain these. Institutions will fund _new_ software because they expect a paper to be published about it. But nobody is paying anyone to maintain this stuff.

</comment></comment><comment><USER13> Because developers generally don't know (or don't like) the outreach necessary to fundraise.

For example in numpy case - [https://github.com/numpy/numpy.org/issues/9](https://github.com/numpy/numpy.org/issues/9) That's a request in March 2017 to add a donation button to the website. Im not sure that 6 months back, if Numpy was legally structured to receive larger funding. I posted a similar comment (with many more replies) in the context of Octave and it's funding [https://news.ycombinator.com/item?id=13604564](https://news.ycombinator.com/item?id=13604564)

Tl;Dr Don't ask for donations - instead sell "gratitude-ware"

There are tons of people who WANT to support these projects, but you have to make it easy and accountable to do that. The best example that I usually give is Sidekiq.

@mperham is awesome that way _" This is exactly why I disclosed my revenue: people won't know there's a successful path forward unless it's disclosed. I want more OSS developers to follow my lead and build a bright future for themselves based on their awesome software."_

In fact, I believe there's a start-up to be done here. "Stripe Atlas for Open Source software"

<comment><AUTHOR> NumPy joined NumFOCUS as a fiscally sponsored project in 2015, so it's been eligible to receive donations as a non-profit (because of NumFOCUS' nonprofit status) since then.

</comment></comment><comment><USER14> >the entire scientific Python stack was essentially relying upon on the "free time" work of only about 30 people—and no one had funding!

30 people? I remember a time when a certain fruit company would enter a field, literally hire all 30 of those guys, and put them behind closed doors. Then in 2 years they'd dominate the field for the next decade.

Are these guys turning down offers? Or is the fruit company that poorly managed now?

<comment><USER15> There isn't much money in writing libraries like NumPy. Why would a company hire a bunch of expensive devs to write some software to compete with Matlab? The market just isn't big enough to justify the cost.

<comment><USER16> Google hires devs to develop similar libraries... to power their machine learning efforts. There is tons of numerical work in finance, too. I don't think the money is to be made by selling copies of a Matlab-like piece of software, but in the application of the tools.

<comment><USER17> But you have to run through their interview gauntlet.

<comment><USER11> Even if you get head hunted?

<comment><USER17> Ken Thompson didn't (still doesn't ?) have commit access because he hasn't been vetted by Google as a competent C programmer. I don't think Google is going to relax its hiring policies no matter who you are.

</comment></comment></comment></comment></comment></comment><comment><USER18> Q: Are we conflating two issues?

Is there a difference between the "sole developer problem" and the "lack of funding" problem.

I mean, even if a project finds funding, does it follow that it will attract more talented developers?

One way to distinguish the two issues is to look at for-profit software. In the cases where there is one primary developer, do they find it easy to keep the software going when the person retires?

I ask this because, I think, beyond the very real monetary issue, there is a question of how development works. Do we need one very talented individual who does the lion's share of the lifting?

<comment><USER19> _> even if a project finds funding, does it follow that it will attract more talented developers?_

It depends on what the funding is used for. Outreach in various forms (better documentation, presenting at conferences, a nicer website, moderating community venues from mailing lists to chat channels, triaging and grooming issues and PRs, etc.) takes time and effort (and therefore needs to be funded) as well.

<comment><USER20> For SageMath, what funding we've got has been mostly used for organizing many "Sage Days" workshop coding sprints – we've had nearly 100 now over the last decade! They have made an absolutely tremendous difference in attracting the over 600 people who have contributed. But also key design decision, e.g., 100% test coverage, helped too. I clearly remember the moment – in a big discussion at a Sage Days (funded by the Clay Math Institute) – that Craig Citro argued for 100% doctest coverage, and we all decided to do it. Without funding, those Sage Days wouldn't have happened, and the community would not have developed. I also remember a Sage Days that we did jointly with Numpy at Enthought, where discussions and work we did together grew into many important things later. Funding is ridicuously absolutely critical to growing certain types of open source projects. In another direction, a lot of our infrastructure (e.g., build, testing, etc.,) is hosted on a big computer bought with a grant.

</comment></comment></comment><comment><USER21> Original NumPy author here. I have a lot to say on this topic, given that it has literally consumed my life over the past 20 years. You can go here for some thoughts about some of this: [http://technicaldiscovery.blogspot.com/](http://technicaldiscovery.blogspot.com/) There are several articles there that relate but in particular [http://technicaldiscovery.blogspot.com/2012/10/continuum- and...](http://technicaldiscovery.blogspot.com/2012/10/continuum-and-open- source.html) and [http://technicaldiscovery.blogspot.com/2017/02/numfocus- past...](http://technicaldiscovery.blogspot.com/2017/02/numfocus-past-and- future.html)

I knew what I was getting into when I wrote NumPy. I knew there was not a clear way to support my family by releasing open source software, and I knew I was risking my academic career.

I did it because I believed in the wider benefit of ideas that can be infinitely shared once created and the need for software infrastructure to be open-source --- especially to empower the brightest minds to create. I did it because others had done it before me and I loved using the tools they created. I hoped I would inspire others to share what they could.

There have been a lot of people who have helped over the years. From employers willing to allow a few hours here and there to go to the project, to community members willing to spend nights and weekends with you making things work, to investors (at Continuum) willing to help you build a business centered on Open Source.

There are many people who are helping to fix the problem. In 2012, I had two ideas as to how to help. Those who know me will not be surprised to learn that I pursued both of them. One was the creation of NumFOCUS that is working as a non-profit to improve things. The second was the creation of Continuum ([http://www.continuum.io](http://www.continuum.io)) to be a company that would work to find a way to pay people to work on Open Source full-time.

We have explored several business models and actually found three that work pretty well for us. One we are growing with investors, a second we are continuing with, and another we are actually in the process of helping others get started with and ramping down on ourselves.

Along the way, I've learned that open source is best described in the business world as "shared R&D". To really take advantage of that R&D you need to particpate in it.

We call our group that does that our "Community Innovation" group. We have about 35 people in that group now all building open-source software funded via several mechanisms.

We are looking for people to help us continue this journey of growing a company that resonantly contributes significantly to Open Source as part of its mission. If you are interested, contact me --- I am easy to track down via email.

<comment><USER4> Hey, Travis, one question: have you managed to avoid selling non-free software? Everyone seems to think that eventually the way to sell free software is to sell some secret sauce on the side. Is this something you have completely eschewed?

I ask because for Octave this is a non-negotiable requirement. Partly because of the GPL, but mostly because we really do believe that the whole point of Octave is to get away from non-free software, as a matter of principle -- if you want non-free software, there's already a Matlab. Is there any way to generate enough money without a EULA?

<comment><USER21> I believe it is true that you can make more money selling non-free software (some of the profits from which should always be used to make free software).

You _can_ generate money only through free software, however. Here are three approaches I have found: 1) Consult on projects that use the free software and use some of the profits to support that free software, 2) Sell enterprise- grade support on the free software to big companies. This is much more than just help-desk and answer the phone. All commercial software comes with a big contract. You provide the same kind of contract just no license restrictions. Others can do the same and so you have to distinguish yourself by either having all or most of the experts on the software or just really good marketing. 3) Dual license using GPL3/AGPL for the free version and a commercial license and then aggressively go after people for GPL violations if they don't get the commercial license.

I don't like the relationships created by the third model --- your sales processes become aggressive and counter-service minded by definition. I don't see it scaling and really providing value.

The other two are really hard to impossible to get investors exited about and therefore you struggle to get the capital together you need to prime the customer pump.

There is a another general model with many corollaries where you basically "do something else" that uses the software as a critical part of the business and let the profits of that activity fund open-source development.

A lot of open-source these days is actually funded by this kind of activity (or from VC's hoping to profit from a promise of great wealth from this kind of activity).

<comment><USER22> In 2006 you sold documentation for NumPy [0] - how did that work out?

0\. [http://csc.ucdavis.edu/~chaos/courses/nlp/Software/NumPyBook...](http://csc.ucdavis.edu/~chaos/courses/nlp/Software/NumPyBook.pdf)

</comment></comment></comment></comment><comment><USER23> There is a long-standing problem in open source software, which is that there is no "business model" associated with funneling resources to people putting significant effort into it. Setting up a consulting business to monetize software creates the perverse incentive to make software harder to use, but there seem to be some examples where this model has worked out reasonably.

Open source projects are typically started by people working in the field, who have a strong urge to scratch some itch. Even if we find a way to find money for them to work full-time, they often don't have the desire to "productize" software, or to create/nurture/govern an organization around bringing together different stakeholders who might be able to use, or contribute to the software. (We got really lucky with Linus+Linux)

</comment><comment><USER24> I believe I'm one of (or near) the "top 30" contributors (I've made substantial contributions to all of the aforementioned packages), and I'm funded to write scientific software. I'm extremely fortunate. Unfortunately, like so many things, I suspect it has everything to do with pedigree (e.g. my lab, my institution, my peers, etc.) rather than my (or my coworkers) exact contributions. In fact, I don't know if any of my lab's grants has ever explicitly mentioned our contributions to one of the discussed packages. However, this could change. I'm extremely encouraged, for example, by the comments from new institutions like OpenAI or the Chan Zuckerberg Initiative about the necessity of funding software.

</comment><comment><USER25> Another project which is easy to overlook: Think about how many scientists use Emacs for most of their development and writing. But there is (to my knowledge) not even a single paid developer working on it.

( [http://gnu.org/s/emacs](http://gnu.org/s/emacs) )

</comment><comment><USER26> It's surprising to me that people are surprised by this.

Even setting aside the fact that the people that can do this work are few in number, the vast majority of people need a way to support themselves and their family. If the number of people that have these skills is low, the subset that is both altruistic enough to donate them for a sufficient period of time and personally able to do so must be vanishingly small. (And the negative feedback a lot of OSS maintainers receive doesn't help.)

Companies have the same issue... there has to be a fairly direct connection between an expenditure (paying developers) and a return on that investment. That can be a very difficult argument to make.

</comment><comment><USER27> If your open source project needs funding there is [https://opencollective.com/opensource](https://opencollective.com/opensource) (currently waiting, I'm not affiliated)

<comment><USER28> Look at the numbers before assuming this is a solution to funding Open Source. I'm not saying it's a bad thing, just that the amounts it's bringing in for most projects is effectively like buying the developer a cup of coffee. It's not a sustainable sum for someone to live on, in almost all cases.

Right now, Webpack has $99k; which is respectable. That's a decent annual salary for a full-time developer that lives anywhere other than Silicon Valley or NYC. But, it falls off a cliff after that. Next is MochaJS at 16k; that's two months salary, maybe three or four in cheap places. After the top twenty projects, you're closer to nothing than you are to something. The time it takes to set it up would be worth more than it'll return (there are lots of $0 projects in the list).

Maybe it'll improve with time. I dunno how long this project has been going on, and it looks really well done. It's just that the numbers are abysmal. I hope it'll improve. I wish we had a way to fund our software without having to sell a commercial version...but, it's so far from realistic, we can't really even consider it.

I've been making my living from OSS for ~20 years now, and it's the great curse and tragedy of the thing that because the software is free, there's an incredibly pervasive belief that tiny sums are sufficient to keep a project afloat.

We tried, very early on (~14 years ago now), to crowd-fund some major enhancements to our software...we raised a total of about $15,000 (this was long before crowd-funding was a thing), which to a lot of people seemed like a lot of money, and it caused a lot of folks to feel extraordinarily entitled to specific results (e.g. because they contributed $200, they assumed it would mean we'd develop a big feature they were the only person asking for, and that would take days or even weeks to build and test). But, for two developers working full-time on something, $15,000 is practically nothing. Most developers just don't have the freedom to trade in a full-time job paying market rates for a sub-poverty annual wage. Realistically, we couldn't commit full-time to the project until we started a business based on it that brought in predictable, recurring revenue. And, we couldn't effectively do that without providing things that the OSS version didn't have. OSS is a really tough way to make a living, is what I'm trying to say, and I don't know a lot of people who do it successfully without being employed by someone that does a lot of non-OSS stuff, too.

</comment></comment><comment><USER16> It blows my mind that NumPy is just getting funding. How did the Eigen (used in TensorFlow, among other things) folks keep it going?

<comment><USER29> A few of the Eigen core devs (Benoit Jacob, Benoit Steiner, ...) work at Google.

</comment></comment><comment><USER30> Ok, so the problem seems to be 'lack of maintainer' or could be stretched to contributer. The article later linked to [https://www.slideshare.net/NadiaEghbal/consider-the- maintain...](https://www.slideshare.net/NadiaEghbal/consider-the-maintainer) which kind of reminded me a problem which I'm facing.

After getting through basic of "Introduction to Computer Science Using Python" and forever pending goal to become a "Python Developer", is anyone here who is experience in Python willing to be my mentor? In return, free Python labor. :)

<comment><USER19> What sort of things ("Python development" is a bit nebulous) are you most interested in?

<comment><USER30> The sort of things which people get to call themselves "Python Full Stack Developer" or people whose primary job is to write Python code at some workplace. I just want to work in something where is Python is used and in great demand to get me a full time job. My latest depth into Python apart of learning the surface has been with Flask. Developed a CRUD using a tutorial and there is absolute so much to learn. But if I learn a lot about Flask, I won't be playing with Django which seems to have more demand. I also like to have Python projects on my Github but so far, I have no clue what to make on it and to publish. Just want to be able to develop anything by knowing the art!

</comment></comment></comment><comment><USER31> I tried at work to get some money to the maintainer of iRAP, an RNA sequencing analysis pipeline we depend on heavily at the moment. But business sees this as wasted money, it's there for free, why not take it? Reading this, I think I'm going to double down on my efforts again. We get so much value out of a huge pile of FOSS software, we should be donating. Meanwhile we have spend piles of money on Matlab for years and we aren't even allowed to run Linux on our Laptops if we wanted to.

<comment><USER32> I think someone on here recently suggested to a project that they provide an "enterprise subscription" or something like that with minor benefits to make it easier for businesses to justify (or maybe it made administration easier?) to "donate". You could suggest that to the maintainer, and then use that to convince business that you need that.

</comment></comment><comment><USER33> Because it's an important tool for Machine Learning, which makes money from that (of which there's plenty going around right now) flow into it.

</comment><comment><USER34> This is still an important problem for numerical compute in other languages. It's a struggle to do data analysis and write machine learning applications in Scala, Java, C++, etc. due to a lack of Numpy / Pandas style ease of use and functionality.

</comment><comment><USER35> Each country have its own taxes to sustain fundamentals, same thing must apply in software industry. Software engineers might be paid +100k$ while developing over open source languages/frameworks or libraries. That's is not fair, it is like riding a starving horse.

A French point of view (after all, France invented VAT...) would suggest to introduce a taxe on software engineers salaries (1% ?) and redistribute this fund on most used languages/frameworks/libraries and use a part to sustain a new projects.

<comment><USER36> How about instead of taxing the workers we tax the companies that profit from open source efforts.

<comment><USER35> Let me explain better, no software engineer (SE) would be paid above 30k$ if he always starts from scratch (walking). He is paid its economic value for being fast. And he is fast because he rides a horse (building over open source language/framework/library).

So while a part of SE are maintaining stables, other part of SE don't want to pay for horse. I think this last part of SE are killing their own jobs.

<comment><USER36> The software engineer is paid because they produce value for they employer. It's upon the employer, not the employee to pay for the technological infrastructure.

<comment><USER35> That's right. But when your employer will ask to shift infrastructure because old one is no more maintained, and to be as productive as before, you'll be very slow at development and get fired. If the employee is paying for the infrastructure, this is because SE are not solidary to open source projects.

</comment></comment></comment></comment></comment><comment><USER37> This is exactly the problem Open Collective[0] exists to solve. Often times, there are people who want to financially support a given open source project, but there is no channel by which to do so. Creating the financial channel is the first step toward a much needed culture change where the assumption is you will support the open source you rely on, especially if you're making money off it.

[0] [http://www.opencollective.com](http://www.opencollective.com)

</comment><comment><USER38> I thought that Enthought sponsored a lot of NumPy development, kind of like as a corporate caretaker or something, is that not the case?

<comment><USER39> I'd also like to read about what Enthought actually did. Anybody knows the details and willing to tell?

</comment></comment><comment><USER40> I appreciate this article being posted, and have the utmost respect for NumPy developers. The urgency and discrepancy between use of certain important open- source libraries, and their support, is bewildering sometimes.

As I was thinking about it, though, I'm not surprised NumPy hasn't been funded before. The reasons why say a lot about biases in memory.

It wasn't that long ago that the sorts of things NumPy does were seen as fairly niche, and in the domain of statistics or engineering. It's only with relatively recent interest in AI and DL that this has been seen as within the purview of Silicon Valley-comp sci-type business, as opposed to EE or something different. I still am kind of a little disoriented--the other day, looking through our university's course catalog, I realized that certain topics that would have been taught in the stats or psychology departments are now being seen as the territory of comp sci. Statisticians have written excoriations about being treated as if they don't exist, as comp sci blithely barrels forward, reinventing the wheel.

I'm not meaning to take sides with these issues, only pointing out that I think the world we live in was very different not so long ago. It might seem puzzling that NumPy hasn't had more funding, but I think that's in part because what it's most profitably used for now wasn't really seen as much more than academic science fiction not too long ago.

The other part of it too, is that until relatively recently, if you were to do numerical heavy lifting, you'd almost certainly be expected to do that in C/C++ or maybe Fortran. There's a tension in numerical computing, between the performance and expressiveness that's needed, and Python is on one end of that continuum, far from the end that is traditionally associated with complex numerical computing. Sure, you had things like MATLAB with Python in the same functional role, but those were largely seen as teaching tools, or something that engineers did for one-off projects, having learned to do that in school (I still think the use of python in ML derives from the use of Python as a teaching tool in uni).

I'm not trying to knock Python or NumPy or anything, just kind of trying to convey a different perspective, which is that I can remember a time not too long ago when the use of Python in numerics was seen as primarily didactic in nature, or for limited circumscribed applications.

FWIW, it seems to me Python is kind of on a path similar to what happened with javascript, which was treated as kind of an ancillary helper language on the web, until Google started pushing its limits. Then there was browser wars 2.0, and huge efforts put into javascript, and it became a main player in network computing. To me, there's a similar trend with Python: it really kind of existed as a language for prototyping and scripting tasks, and now finds itself in a different role than it has been used for traditionally, and projects in that area are getting an influx of money accordingly. What I see happening is (1) a blossoming diversity of numerical computing communities (Haskell, Python, Julia, Kotlin, Scala, Rust, Go, etc.), due to competition and variation in application scenarios and preferences, (2) a huge influx of resources being put into Python to make it more performant, or (3) people jumping ship from Python into one of those other platforms to get more bang- for-the buck [or (4) some combination of all of these.]

</comment><comment><USER41> Because capitalism is an inherently exploitative economic paradigm?

</comment><comment><USER42> tl;dr:

> "And if you'd like to take action to contribute to project sustainability, > consider becoming a NumFOCUS member today."

[https://www.numfocus.org/community/donate/](https://www.numfocus.org/community/donate/)</comment>