Hacker News new | past | comments | ask | show | jobs | submit login
An M1 for Curl (haxx.se)
234 points by HieronymusBosch on Dec 30, 2022 | hide | past | favorite | 175 comments



I am always amazed at the generosity of some people who use free/open-source software. It definitely makes me want to try and become more supportive to such efforts myself.

I make a (closed-source but completely free/ad-free) minimal macOS app for Hue, and every other day (sometimes a week goes by) I get a lovely price-of-a-coffee-sized donation from someone in the community. And when I ask for their name to include them in a credits or supporters panel, most don't even want me to mention it or credit them.

One time, I struggled to replicate an issue for which I didn't have the necessary hardware (multiple Hue bridges), and the bug reporter simply offered to buy and send me "a bunch of bridges and lights" to make debugging easier. I couldn't accept it, but it's gestures like that, combined with positive feedback from people wanting the project to keep going and succeed, that are such a tremendous motivational driver for working on "free stuff". I had totally underestimated that (coming from the SaaS side).


Whenever I donate something it’s always on condition of anonymity.

Recently I donated my old top-spec race MTB to a bike club, under the condition it was to be gifted to one of the Ukrainian’s who’ve been displaced and now live in our community. Nobody knew I had the bike. Within a few days I got a message back saying there was a teenager that loved racing bikes back in his home country, and can now look forward to the 2023 season with additional financial/logistical support from the club.

I’ll probably bump into them on the local trails and seeing their beaming (and muddy!) smile is worth a thousand times more than publicly being connected to the donation.


"I couldn't accept it"

Why not?


Probably because its too much - I struggle to accept donations on my project as well, especially when theyre larger than price-of-a-coffee.


Accepting a large donation but then not having any free time to work on the project (eg. Due to family or other commitments) feels very dishonest.

So I only accept substantial donations if I'm very sure I'm going to be able to do a substantial amount of work on the project going forward.


You can accept the donation as a thank you for what you've already done. It should be motivation, not obligation.


I actually have different experience, I spend all my time on projects but see very few donations :) But thank you to all who donate to open source and other projects.


I once got an unsolicited donation that was larger than my lifetime earnings...

The sender didn't reply to messages.

I really wasn't sure what to do. And without a document saying it was a gift from the sender, I had to give half away as taxes, and then there was no possibility of returning it (I wouldn't be able to reclaim the taxes).


Yeah no such luck here ^_^ [1] But I like doing my projects so much that this is not discouraging me to continue. But it does motivate me more when I get donations.

[1] https://news.ycombinator.com/item?id=34084960


For some jurisdictions like Germany, accepting "donations" - no matter if cash or in goods - is a nightmare tax-wise. Yes, you can just throw up a PayPal, but if some random troll wishes to cause you pain, all it takes is an e-mail to the tax office and they'll fleece and nail you.


What is the name of the app?


I'd guess https://huemenu.app/ (I'm a user)


Can anyone think of the reason Apple wouldn't provide hardware support to curl and similar projects?

To my mind "this dev tool doesn't work, only on Apple, only on Apple's flagship chips" is the opposite of what they'd like to see happen.


Any of us working in an enterprise can probably relate to this similar thing: If I want to purchase a $500 piece of software, that’s a five minute conversation with my manager.

If I wanted to donate $50 to a single person who has developed a critical bit of open source we as a company gas relied on for ten years, it would be a major hassle.


Relevant Patio11 comment from 2016:

> We don't donate to OSS software which we use, because we're legally not allowed to.

> I routinely send key projects, particularly smaller projects, a request to quote me a commercial license of their project, with the explanation that I would accept a quote of $1,000 and that the commercial license can be their existing OSS license plus an invoice. My books suggest we've spent $3k on this in 2015. My bookkeeper, accountant, and the IRS/NTA are united on this issue: they don't care whether a software license is OSS or not. A $1k invoice is a $1k invoice; as a software company, I have virtually carte blanche to expense any software I think is reasonably required, and I think our OSS is reasonably required.

> I would do this more often if OSS projects made it easier for me to do so. Getting me to pay $1,000 for software is easy; committing me to doing lots of admin work over the course of a week is less easy. Take a look at what e.g. http://sidekiq.org/ , which is an OSS project with a commercial model, does. Two clicks gets me to a credit card form. If I actually used Sidekiq, Mike would have had my credit card on file the day that form went up.

https://news.ycombinator.com/item?id=10863939


Invoices seem like a great idea. Becomes a business expense and can claim it off taxes. Essentially gov't kicks in whatever your tax rate is.


Sending an invoice might require some sort of contract, which may imply some level of support. Something OSS devs generally cannot guarantee.


Support contract:

1. For the given amount of $5000 for the period 2023-01-01 to 2023-12-31 you are entitled to

2. Create a feature or bug request on our support system

3. Have a first response back in 96h

4. No warranties explicit or implicit that we'll be able to solve your problem blah blah blah etc


And then you are on vacation and some asshole in legal sues you because you didn't respond in time when a dev had a small problem they could've solved by looking in the source code for 5 minutes but wanted support instead.

Way too risky.


Agreed, this is only an example (but as you grow you can have someone look at your email - this is part of why it's a good idea to offer support contracts)


Most open source software licenses explicitly say there is no support.


> ... the commercial license can be their existing OSS license plus an invoice

Of course, Patio11 was running his own show, and a larger company might demand more, but it is worth asking.


Nah, even purchasing a 500€/$ piece of anything involves a lot of talking, procurement and waiting. At least in most german companies.


Sure, but even in German companies if you want to purchase a 500€ piece of software there's a procurement process that you can go through.

There's no process for buying a laptop for an open-source dev who's code the business depends on but who is not an employee, so especially in German companies, you don't do that.


Well, correct, you wouldn't buy it for a donation

You would usually proceed as a donation from inventory or you'd give them some type of credit for purchase (might come off the marketing dept)

When donating something never go with the more expensive option (in this case, actually going and buying something you make on the market)


Can’t you donate the money and then they buy the hardware?


If by "you" you mean "the corporation", then no. A software BU doesn't make donations. It can purchase things, which is the point of the quoted comment, but it can't just give money away.

From a corporate accounting perspective, a "purchase" is "we pay money and we get a thing". Sometimes the thing needs to fit a stereotype; "a hardware", "a service", "a contract", but the dance is the same; request a quote, get a quote, place an order, get an invoice, pay the invoice, get a receipt, get confirmation of delivery.

Iff the transaction fits that mold, then it's generally straightforward. If it doesn't, then you need to find someone with the power to override the organisation; in an organisation resistant to internal tampering ("corruption") that can be quite difficult.


Could you elaborate on that? I am not German but a few months ago I contacted a German company because we use their open source products and want to move to their new SaaS model. Instead of being the typical few clicks automatic experience they start to engage in a personal conversation to define the correct price. From the business perspective I couldn’t understand their approach, it surely kills more sales.


This is really common for b2b sales, it gives you both flexibility to negotiate price and terms, especially for more complex/niche products or services.


It is not common if we are competing with multiple companies where you sign up and onboard in 5’.


If you are taking a company to a Saas solution costing XXXXX euros surely it would be worthwhile to spend a couple of hours investigating how you get the best price?


Could it be something with European privacy laws for storing data?

I wish we could just buy licenses sometimes ... I really hate fucking around with procurement processes


I think this is why US way of business is unique in terms of business and goes beyond Europe or Germany specifically. US (as a multicultural platform) pushes toward the acquisition of the good, BNPL (Buy Now Pay Later) approach. It should be fast and will be faster. There is a lot of criticism about credit debt but US offers a lot of credit, the problem is more about how education and health were inflated that to credit itself. (IMHO). This is not about nationality but context of business.


Mid-2020, when the ARM transition was announced, Apple had a program where they'd send out developer transition kits (a Mac mini with an A14Z), but you had to request one, and actually qualify.

But yeah, it should be in their best interest to reach out directly to the developers of software like curl, zsh, git, Python... Everything they've been shipping as a part of their OS for 20+ years.


A12Z, and you had to justify it and pay for it. And then return it, for which Apple initially offered a token incentive but later ended up effectively waiving the fee with.


Creating a recurring meeting that cost company >1000 weekly? Sure do it.


Its not that much of a hassle, many open source folks have donation setups these days and some can send you an invoice for support/maintenance services. In my experience it isn't even hard for a company to hire random maintainers as contractors to add features that are needed by the company.


Most maintainers don't want to offer paid support though. It comes with expectations of support. I just want to hand someone $50 for many hours of work already spent. But that's tricky.


I expect that for a lot of projects/people it wouldn't be hard to send money. Either the project already accepts donations and sends those to maintainers, the person already has donation systems setup, or the person doesn't need the money and ask you to send it to a FOSS charity (like Software Freedom Conservancy) instead, or you send the person and email and they go sure, here is my PayPal/etc account number for transfers. Personally, I'd be very happy with money for paid support though, in my experience its pretty hard to extract money from most open source projects, basically no-one wants to give you cash because the project already meets their needs.

https://sfconservancy.org/


For 20 years they’ve gotten it for free. Why start paying now? Apple is not a friend to the little guy, quite the opposite.

Remember, Steve Jobs was good friends with Larry Ellison who famously said that open source is there to be exploited. These guys all think the same way.



Ah yes the old X is friends with Y and they are all the same.


Wasn’t it offered for free?! Or was something asking in exchange?

There are plenty of licenses which are free only for non-commercial use. The author choose the “free for all” license for a reason though.


This is missing the point and focusing on the 1st paragraph of the article. 2nd paragraph:

> Yet, there are many curl users on the different Apple platforms and sometimes these users run into issues that are unique to those platforms and are challenging to address without direct access to such.

In other words, it's to Apple's own detriment if the author of curl doesn't have access to Apple hardware.

curl is offered for free, and the consequence of that is the author of curl is under no obligation to support Apple platforms or shell out money for Apple hardware.


So change the license or stop supporting Apple OS's. Or ask them, or the community for a donation.


> Or ask them, or the community for a donation.

First sentence of the article: "A generous member of the wider curl community stepped up and donated an unused Mac mini m1 model to me to be used for curl development."


So where is the problem?


The problem is that you've taken legitimate criticism of a BigCo and turned it into some kind of superfluous unsolicited advice for the critic.


Why is it a "legitimate" criticism. That's just you opinion. Doesn't make it any more (or less) valid than the question I'm posing; why is the developer entitled to Apple providing hardware for testing? Do people purchase Macs purely for cURL - I doubt it. It's merely a convenient tool that is not encumbered by a GNU license. It sounds to me more like the typical outpourings of the oft-entitled developers. You develop software for MacOS, do you expect a free Mac? The cURL license permits the form of re-distribution that apple are employing, does it not? Are other hardware manufacturers expected to donate hardware? Does the developer have reference machines from Intel or AMD?

Edit - Looking at https://opencollective.com/curl, the project received $64,000 in donations, and the developer is employed, full-time, by a company to work on cURL. You'd have slightly more of a point if this were not the case, however as it stands it looks like a whine about Apple.


> That's just you opinion.

If you read the other comments on this submission, it's not just my opinion.

> Doesn't make it any more (or less) valid than the question I'm posing; why is the developer entitled to Apple providing hardware for testing?

That's the wrong question. The developer is not entitled to Apple hardware and never claimed to be entitled.

The issue is explained in my earlier comment in this thread: https://news.ycombinator.com/item?id=34183736

To repeat myself:

> Yet, there are many curl users on the different Apple platforms and sometimes these users run into issues that are unique to those platforms and are challenging to address without direct access to such.

In other words, it's to Apple's own detriment if the author of curl doesn't have access to Apple hardware.

curl is offered for free, and the consequence of that is the author of curl is under no obligation to support Apple platforms or shell out money for Apple hardware.

> You develop software for MacOS, do you expect a free Mac?

This is a straw man. Apple does not ship my software with macOS, unlike curl. Also, I make money selling Mac software, unlike curl.


Same goes for Apache Cordova a framework for building mobile apps for Android and iOS. Apple knows a big chunk of apps in the App Store are using it.

You can only use it for iOS apps if you have Apple hardware. I am one of the maintainers and thankfully I got a Mac Mini donated as well when I lost my company Mac.


Thank you for your work on Cordova. Have you also worked on Capacitor?


Apple would rather you build native apps, not cross platform ones.


IIRC, at least around the time Apple Silicon was introduced, they were running some kind of taskforce to make code contributions to key open source projects to ensure they were compatible.


Did they? They provided pre-M1 mac minis (aka DTK), but I don't know that they actively contributed code. I don't remember seeing code from them for Firefox, at least (I was involved in getting Firefox to work on Apple Silicon)


They did for obs[0], didn't see any other projects (I just remember I saw it a while ago, I may have missed other software if they tried).

[0]: https://news.ycombinator.com/item?id=30112595


A handful received support. I think Mono got a PR too.


There's no good reason beyond, "Apple doesn't do that, and never has."


Bexause they don't want to. its that simple.

Any time you see a behemoth like Apple not doing something it's because they don't want to.

They don't consider whatever gains they get from it to be worth the time and money.


Apple would more likely develop their own similar code instead.


The logistics I imagine of doing so for projects would be immense. For ten projects, maybe it wouldn’t be bad, but which ten? Etc.


Hmmm I believe Apple must have datacenter full of m1 powered machines for their CI/CD farm. Sending individual devices to individual developers working for n projects might be complicated, however offering a CI/CD environment to projects with ssh access to test virtual machines shouldn't be too complicated for them provided they were ideologically willing to help and cooperate the open source world.


Assuming they do proper due diligence and third party tracking just search the database for the ten libraries they use in the most places themselves ... and yes, that will need some time to coordinate, for identifying the right people in the open source project. But as they certainly depend on quite a few good relations is also in their interest to deal with security issues.


Curl ships preinstalled on macOS, supporting such preinstalled tools would be a good start (I would hope that Apple has a list somewhere of all the OSS tools they are shipping with macOS).



Yeah my guess is they just don’t have a process for this. Sure, sending a MacBook to the devs of curl probably makes sense and costs virtually nothing. But everyone writing open source is going to want one next so you need some full process to approve requests.


Apple could just donate a coupon or something like that.


Well they get great publicity from all the "Now available on M1 too!" posts on HN.


They probably don't want to set up a precedent and that would be against the true spirit of open source - to get people writing software for free, so big corporations can save on R&D and employment costs, while making a ton of money.


Apple has proprietary, in-house solutions for these tasks. If I were an employee working on one of those, I wouldn't like if a different part of the company provided support to or funding for an alternative to the thing I'm working on.


Then they should ship those solutions with their products and provide support for it to end users instead of pawning them off to the curl team for support.


They do?

https://developer.apple.com/library/archive/documentation/Ne...

But it's a big company, so presumably some team used curl for some project, leaked that in an error message, and whoever runs the Apple Support social media account apparently didn't know about that after someone contacted them about the error message. Or something like that, it's hard to figure out what was going on without more context.


curl is shipped (by Apple) as a command line tool and libs to link against on stock MacOS (unless Xcode installs it these days, but I don't think so?).


I’d like to post the Apple GitHub account where you can find quite a few repositories Apple is developing open source for not only Apple platforms. They even just announced that the new Swift native Foundation framework will be completely open source. I think that’s pretty significant.

https://github.com/apple


Look, I happily make my living on Apple's platforms, and I like their tech, but their "open source" stuff is a farce. They maintain private forks of pretty much everything for Darwin. Previous discussion here: https://news.ycombinator.com/item?id=29494808


While this is great, there are so many more FOSS projects that OSX relies on that Apple doesn't support in any way.


I'm surprised the performance stats weren't more dramatic. Is the compilation not taking advantage of multiple cores? Or for this task is the m1 really do comparable to an Intel 3rd gen cpu?


M1 is particularly spectacular when compared to other chips with similar thermal characteristics. i7-3770K has TDP of 77 W, without a GPU, so it has 7-8 times the power budget of M1 for the CPU.

In raw performance, M1 cannot match workstation-class CPUs. Since Apple was almost exclusively offering only ultra-mobile Intel chips with horribly dated GPUs, M1 was a giant leap in their offering, but in the desktop PC market there are more powerful chips available. And even some old ones can perform quite well.


I don't even think it's as cut and dry as all that.

I have an M2 Macbook air (IE; fanless little thing) but it completely desicrates the memory of its predecessor (Precision 5520 w/ Xeon E3-1505m v6) which has a 45W TDP.. (IE. double and a bit).

In single core it continues to readily beat my Theadripper 3970x workstation which has a 280W TDP... (more than 12x the TDP of the M2, though it definitely beats it in multi-core...)

I think something else is at play here. Be it a terrible filesystem or (as mentioned in another comment: the use of efficiency cores for compilation).


New Ryzen CPUs behave extremely interestingly when you manually apply TDP limits. As I mentioned in a sibling post in this thread, my 7950X is TDP limited to 105 watts (from the 170 watts factory default), and it loses around 8%-10% performance under perfectly multithreaded loads (and nothing if only e.g. half the cores or less are utilised). It is also possible to limit it to 65 watts, at which you lose around 20% or so but that's still very-very fast. At 105 watts it's around as fast as an M1 Ultra, which draws ~ 60 watts if all cores are used. Significant difference, but not something that's a very big problem in workstations. The 7950X is also competitive when limited to 65 watts -- it's barely underperforms the M1 Ultra.


I don't think it's an efficiency core thing. On ~the same machine (I have a smaller SSD, but otherwise identical):

  > time make -j
  real 0m8.716s
  user 0m29.786s
  sys 0m15.102s

  > time taskpolicy -c background make -j
  real 0m42.196s
  user 1m13.041s
  sys 0m30.957s
(The latter command forces use of the efficiency cores, the former is allowed use everything)

One thing that _is_ notable is that it isn't really managing great parallelism (particularly visible in the efficiency core one).

(Only looking at the actual build, as IME autoconf has remained reassuringly slow for the last 20 years, in defiance of all progress in CPUs, so I'm not at all surprised by that one...)


> Theadripper 3970x workstation which has a 280W TDP

Is your RAM running at 3600MT/s (i.e. IF @ 1800MHz)? If not, that's 30% loss for some workloads.

Also, compilation is a multi-threaded process. It doesn't make sense to blame things on single core perf.


A threadripper isn't a single thread monster, M1 should smash it (and does)


It’s also a decade older and benchmarks at half the performance.

I’d bet that 90% of the issue is that make, /bin/sh, and autotools all use fork() on macOS instead of posix_spawn() (I think that’s still the case…), and fork is slow on macOS. But not quite slow enough to get all that fixed by default.


In an Apple laptop, the real killer is being able to work for more than 5 minutes without thermal throttling. The i9 in a Macbook pro is plenty fast for 2 minutes, then slows to a crawl because the laptop was designed to be slim, not fast


> M1 is particularly spectacular when compared to other chips with similar thermal characteristics. i7-3770K has TDP of 77 W, without a GPU, so it has 7-8 times the power budget of M1 for the CPU.

Performance doesn't scale linearly with TDP, and that's always been the case. Take any laptop vs desktop CPU, and you'd see the same ratios at play.


Its even less meaningful in this particular case as the M1 has a working temperature of ~100°C, whereas the intel targets ~65°C.

Nonetheless, the M1 will most definitely be drawing much less power, its essentially an Atom processor after all. Its just gonna be hard to really put a number on it - even if you could read out the consumption from the BIOS, as they're doing things differently (integrated GPU and SSD controller for the apple silicone chips etc)


> intel targets ~65°C

are you certain you arent swapping these? Intel CPUs are famously running up to 100C before stopping their boost clock.

One need only watch a single episode of Linus Tech Tips.

people have reported barely any cooling requirements on the M1 and M2s comparitively.


Yes, i'm sure. It would've taken you about 20 seconds to find it out yourself too, as the Intel 3770K has a published spreadsheet which clearly states the working temperature. The M1 doesn't, but there are enough unofficial sources to confirm the 100°C too. Including LTTs own video.

Its a quiet old model, and consumer CPUs of that generation where generally targeting ~60-70°C. Nowadays they're all going for 95-100°C, wherever its Intel, AMD or Apple


Tcase is different than Tjunction. Tjunction has been around 100 since like Yonah at least.


Both of your statements are true, but Tjunction isn't the target operating temperature. Tjunction is the maximum operating temperature after which damage of the chip becomes likely.


Intel doesn't publish or even have a "target operating temperature" or "working temperature"; I have no clue what you're pulling that out of.


Honestly those numbers are miserable and not in-line with what I have experienced with M1 (or M2).

The numbers make me think it's using the 'efficiency' cores, or might indicate a lot of memory pressure issues (which seems unlikely at 16GiB)

There's a better write-up about compilation performance here: https://build2.org/blog/apple-m1-compilation.xhtml

For macOS there is a `taskpolicy` command to set the usage of efficiency and high performance cores. I'd expect that it's using high performance cores by default but you can force it by running `taskpolicy -c utility <program>`.

You can also force it to be run on efficiency cores by running `taskpolicy -c background <program>`


Without knowing specifics, it's difficult to say... could be different compilers (clang on MacOS, maybe gcc on Linux?), linkers, file system caches could be warm on one, etc. There could be different code being generated (#ifdefs, etc) per platform and architecture.

Having said that though, as someone who got an M1 MBP (10-core) a few months ago, I also found that CPU-wise (ignoring memory/cache bandwidth, which is much faster on the Mac), it wasn't really any faster than a 2012-era dual-socket 4 core Xeon at 3.3 Ghz for compiling and raytracing (the latter doing lots of FP calculations which I'd expect the M1 to compute OOO really well with how wide it is) when the code was CPU-bound. The power usage is very different though obviously. Hyperthreading also helped the Xeon quite a bit.

Battery life is very impressive though, and haven't really heard the fans yet.


Note that clang's arm64 backend is faster, presumably because it has less optimizations than the x86-64 one. So even comparing clang on an intel mac and clang on arm64 mac would be skewed. You'd want to cross-compile on one of them for a better comparison relevant to CPU performance. There is still value on comparing native compilation, though.


Is it?


A few years ago my X220t with i7 CPU was finally tortured beyond endurance, so I went around and checked how I could get a decent laptop for compiling stuff. At that point, I was mostly single threaded CPU bound. It turns out that i7 had still a very good performance comparable to most laptops.

E.g. thinkwiki says its an i7-2640M , in an X220T laptop from 2011. Passmark gives it a single threaded rating of 1516. The current best CPU I can see in a thinkpad with a quick lookup is a i7-1185G7, with a single threaded rating of 2843. That's almost double, but we're comparing with a system of 12 years ago.

Laptops have become a lot more power efficient, GPUs, multi core USB and WIFI are better. But the i386 days where you could more than double your CPU performance after 1.5 years are clearly over. That x220, if upgraded with SSD and 16GB ram and a new battery still does quite well today, and I paid about €500 for it over its whole lifetime.


It always depends on the use case. The casual tests I did for my own use case found a M1 Pro with 10 cores to be comparable to a Ryzen 3700X, which is pretty impressive for a machine that basically makes zero noise when it's not under sustained load.


I’ve seen some benchmarks that put the M1 Pro about on par with a desktop 5700X. Probably depends on the task.

That performance level is maintained when the laptop is unplugged too, which is hard to find in a laptop. Most of them will throttle themselves pretty hard the moment you’re no longer tethered to a wall because otherwise they’ll burn through their batteries in a flash.


From what I understand, most of the dramatic performance difference mentionned in benchmarks where comparing laptops/tinyformfactor machines on intel and m1 where throttling is quickly an issue. The intel Macbook pros where known to throttle very quickly.

I understand from the CPU model that the main development machine of the author is desktop with decent ventilation for the hot and power hungry i7 CPU, which makes a huge difference.


I assume compilation is IO bound for the most part, also I really doubt the ability of autoconf/make to be much faster on modern platforms


I had an M1 and I know my current workstation is faster, but I didn't expect it to be that much faster. I have a 7950X TDP-limited to 105 watts (it hits it only when all cores are utilised), and it's 3-4x faster in curl compilation than what's on the site.


I'm wondering why the configure step was worse on M1 than old Intel.


Exactly. You'll note the author didn't test against, say, a modern intel or ryzen system. My guess is that he'd get similarly lackluster results, probably because the makefiles are ass.

...but that would deflate his ragebait post.


Ahh yes, Daniel Stenberg, best known for 'ragebait'.

You're welcome to confirm your assertion at anytime thanks to Daniel and nearly 1k others generosity. Feel free to let us know what you find.

https://github.com/curl/curl


If you're looking to support open source projects, Open Collective has a workable model: https://opencollective.com/curl

If you want your employer to contribute, check your expense policy. Most companies have a threshold below which you don't need a receipt or even explicit approval. At my last company, that was $50 so I convinced Daniel (of curl) to add a $25/month level specifically to take advantage of it. :)


"Most companies". I've never even heard of such a thing.


I have no relationship with Apple, but from my experience, the usual way big corp contributes to open source is to have their engineers sending patches, instead of sponsoring money/hardware directly.

For example Apple sent patches to some open source projects to add support for Apple Silicon: https://twitter.com/markvillacampa/status/127520044676491264...


That is great, but what if the maintainer wants to test those patches before merging? :)


Reject the patch until has testing results


“I expected the differences to be bigger” is some serious shade!


Apple gave me a G4 once when I was contributing to Darwin but, that was a long time ago and the culture may have changed. However I suspect if you had an existing relationship with an engineer there, they'd throw some surplus hardware your way.


The most amazing thing in that article is: "The source code is stored on an OCZ-VERTEX4 SSD on the Intel,"

That must be the only surviving OCZ Vertex4 in existence.


Are there any places where Apple contributes back to the open source ecosystem?

Their engineers are prohibited from contributing back to the ecosystem so it's not possible to engage with them in a reasonable manner.

They don't acknowledge popular open source projects. Is it too much to ask to even have a single engineer talk to popular projects like Homebrew?

They make us pay to build on their platforms. CI is more expensive, harder to get access to. Emulation is prohibited.

Everywhere I look, it looks like they are a negative force. Sucking out good will and not giving anything back.


> Their engineers are prohibited from contributing back to the ecosystem

Things have changed and this is no longer true. A significant number of projects receive frequent contributions from Apple engineers. The majority of active committers on Apache Cassandra are at Apple for example, contributing major features such as a new transactional system[1].

My team actively contributes to Spinnaker, and we're currently hiring someone with a focus on open-source contributions, quoting the second "key qualification" in the job listing[2]: "Interest in developing with open source software and contributing back to the community".

[1] https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15...

[2] https://jobs.apple.com/en-us/details/200361051/apple-cloud-p...


> Interest in developing with open source software and contributing back to the community

That's a bit odd phrasing, that has guilt undertone. Individuals are unlikely using open source for personal financial gain, but somehow this sounds like they actually "owe" something, kind of shifting the blame from corporations that are actually making money with open source software and often not paying contributors anything.

Also hiring someone to contribute to open source, makes that person likely represent interest of the corporation rather than the project they will contribute to and these are not always aligned. It also takes time of maintainers to actually review and gauge value and viability of the contribution rather than actually spending time on development of the project.

I think much better idea to "contribute back" is to actually pay the existing contributors rather than having own pet one.


I didn't write the job listing, but I understand it as being interested in OSS contributions, maybe already being a contributor to some projects.

> hiring someone to contribute to open source, makes that person likely represent interest of the corporation

That's true, and this is why my team is active within the project by having a member on the Technical Oversight Committee and several others in SIGs. The point is not to push our own agenda, we have made a lot of changes that are mainly relevant to our use cases and that don't necessarily make sense to upstream. Whenever we work on features that we know others would benefit from, we engage with the project's relevant committees and make the changes requested in pull request reviews.

To be clear, I don't speak for my employer and this is only my own experience. Not all teams are like this.

> I think much better idea to "contribute back" is to actually pay the existing contributors rather than having own pet one.

Contributing features and supporting existing contributors in other ways are not incompatible. We have a whole team working on this code base full time, and so do other companies. Of course all of these people collaborate. This project is not really run by volunteers but mostly receives contributions from a number of companies (originally created at Netflix, large parts came from Google, etc).

edit: See TOS members here for a list of the companies involved: https://cd.foundation/blog/2022/11/01/new-spinnaker-technica...


They donate money and resources to blender! https://www.blender.org/press/apple-joins-blender-developmen...


They also do code contributions as well (porting various components of Blender to work on Metal)


> Are there any places where Apple contributes back to the open source ecosystem?

They've donated $1,000–$4,999 to The FreeBSD Foundation this year[1] :-)

[1] https://freebsdfoundation.org/our-donors/donors/?donationTyp...


I'm glad they donated.

The amount is a lot less than I expected, given the size of Apple's pockets.


It could be that the donation comes from matching the donations of some employees, or similar programs.


I assume this kind of small donation is usually in return for some favor. Ie. Can you help debug and fix this bug. It looks like about 2 days work, so we'll donate $2000.


4,999 is also just at the upper limit most mid tier managers are allowed to spend without getting an approval process involved.


Apple contribute a lot to open source, and I think your last statement of them being a negative force is kind of ridiculous given some of the work that heavily depended on their engineering.

Firstly, they have a site that lists some of their work https://opensource.apple.com/ but going further, projects like Chrome wouldn’t exist without Safari having forked KHTML and then massively worked on WebKit. Clang + LLVM would likely not exist in their current form either (clang started at Apple, llvm was earlier but a lot of early push came from them). Which in turn would have changed the landscape today regarding other languages like Rust.

Those are just two of the major ones. There are other major ones like OpenCL that come to mind too, let alone other projects that get code contributions (OBS, Blender, etc…)

They probably don’t contribute as much as they could , in an ideal world, but the foundation of your comment is untrue.


LLVM and WebKit are two key examples


That's because they have no other choice.

LLVM needs to be extended to support their platforms and it's too expensive to maintain a fork.

WebKit was forked from a LGPL project (KHTML) so they have to keep publishing the source.


Blessed is the GPL. We need more of that and less of MIT.


Foundationdb is a pretty big thing to open source



The 10 year old post says they added it shortly after. Plenty of companies small and big forget the Openstreetmap attribution. Apple these days has a full-time team of employees working on improving OSM data, with dedicated public contact person.



uh

...

Swift?


They declined to hire the homebrew guy because he sucked at whiteboarding. Apple is terrible for FOSS. I like their phones but I’d never write for them or use/support their machines.

Edit: I was wrong, twas the Goog, in fact.


It was Google and not Apple.

source: https://twitter.com/mxcl/status/608682016205344768


Apple did end up hiring him for a short period.


Since the author mentions there are many users of curl on Apple platforms, there should be a pool of engineers from which a volunteer could be found to help out.

The author didn't mention reaching out to Apple for help? My opinion is if Apple documentation call out the use of curl as part of a workflow or enabling step, or actually as part of a product, then there is a moral duty to help out (not a legal or license duty).

I would prefer to see the big tech companies contribute to a foundation who could redistribute funds to key open source groups. A credit for a cloud instance of the machine would be sufficient in most cases. It would also remove undue influence of one vendor over another. Maybe such a thing exists, and I would welcome if someone pointed it out.


> then there is a moral duty to help out (not a legal or license duty).

May I invite you to descend off that hobby horse for a moment ?

Let us perhaps replace the word "Apple" with a variable parameter, say, $VERY_LARGE_CORPORATION

Lets say you turn up at said $VERY_LARGE_CORPORATION and start talking to them about something wishy-washy, intangible and wholly subjective such as a "moral duty".

You will be laughed out of the room.

Once a company grows to a size where employees are measured in the tens or hundreds of thousands then it is simply impossible to get involved in edge-cases and subjective matters. Everything has to be defined and measurable because otherwise the whole caboodle descends into utter chaos very quickly.


If you work somewhere that you feel that talking about a "moral duty" would be laughed out of a room, please take a moment to consider whether you want to continue toiling for that organization.

Look at the page for curl.se: Fastly is a sponsor. Look at sqlite's page: Bloomberg is a sponsor. Look at openssls page: nginx, Shiguredo, Activision, and Microsoft are sponsors.


All of those companies use all of those tools. Where js the indignation over them only supporting one? I posit that there either is no moral duty as supposed, or its been fulfilled by the single sponsorship. In which case Apple's open-source contributions have paid over their debt multiple times over.


> Where js the indignation over them only supporting one

Most of those companies sponsor many projects.

> I posit that there either is no moral duty as supposed, or its been fulfilled by the single sponsorship

Maybe but the issue in OP is that Apple has specific hardware requirements and various OSS developers are struggling to support M1 chips without paying out of pocket to support them. Whether it's moral or not, there is definitely a logistics issue between Apple and the very real and very important OSS communities.


> You will be laughed out of the room.

Let me introduce you to the group of companies that belong to https://www.bcorporation.net/

They very much care about things like "moral duty". And there's more of those that aren't officially certified members.


> Let me introduce you to the group of companies that belong to https://www.bcorporation.net/

Whilst I have heard of B Corporation, I will admit I don't know a great deal about it/them.

However a brief look round their website suggests to me that what they do is basically structured ESG (Environmental, Social and Governance).

ESG is somewhat different to what we are talking about here. ESG has become a hot-topic in the corporate world, especially for listed companies where investors can now screen for companies based on ESG metrics.

Over-simplified definition of ESG is treating your staff well (working conditions etc), treating your immediate community well (not polluting rivers etc) and contributing to good causes through corporate philanthropy.

The whole point is ESG is about how corporations interact with the humans in their operational environment.

BUT You cannot extrapolate ESG to open-source software, because ultimately, if you look at it through the corporate eye, software is software. And the corporate eye looks at software through the legal (licensing) lens, because that gives them something tangible and measurable to work with, which is the preferred modus-operandi of the corporate mind.

Therefore if a piece of software is openly published with an extremely permissive license then you cannot blame the corporation for taking the path of least resistance (i.e. using it inline with the written terms of the license, which, depending on the license wording, could be little more than ensuring a credit is written in the correct places).

Again, this comes down to the problem with scale. If you have tens of thousands of employees, software licensing is difficult, and if you had to "do deals" for each and every piece of open-source software then it would very quickly become unmanageable.

Equally, a typical corporation with thousands of employees, could easily use thousands of pieces of open-source software. Because there is no price-tag on open-source software, you would then be in a position of having to engage in lengthly discussions that involve multiple departments in order to agree on what to pay each and every open-source developer. It all becomes very messy very quickly.

Don't get me wrong, I see where you are coming from on this.

But to be perfectly honest, OSS developers are not entirely without blame here.

Sitting there, releasing code on an overly permissive license and then wondering why nobody is paying you .... it's sort of a case of dream life meeting harsh reality, really.

OSS developers live in the wishy-washy world of subjective views and "moral duty".

Corporations need standardisation and clarity because otherwise they descend into chaos.

The easiest way to do that is through less-permissive licenses that have a clear requirement for remuneration.

Otherwise, if you start talking about "donations" or anything else, then you start walking into that subjective ground again. And especially in terms of "donations", every man and his dog thinks corporates are "rich" and can afford to donate to their cause. So your request for "donations" will be lumped in the in-box along with everyone else's.


Software is a lot more than software. Here is why open source should be part of the ESG calculations; because a random person from Nebraska maintains a critical dependency of some part of your stack and could get bored or worse.

https://xkcd.com/2347/

Thats just the easy obvious answer, there are other scenarios too, like a project changing direction making it less suitable for your use.

Companies need to be active participants in and supporters of the OSS communities for the software they rely on.


Well, ignore "moral duty", it's just not a notion expressible in corp-speak.

Take "good PR"; it's readily understandable. Why won't Apple, or any other company that won't mind spending $2k on good PR among the IT crowd, pick up the lead? Any PR department worth their free lattes should.


I agree with your assessment of the current state of things, but we shouldn't just accept that as the only option.

Is it really too much to expect that the most senior engineers in a company could carve off a small portion of the marketing budget for "community good-will" and make small donations of platform credits (which cost close to zero) or cash?

If each of the $100B+ tech companies put just $10M into open source with a bit of care, I wager they would make the money back in developer job satisfaction and evangelism alone.


> I would prefer to see the big tech companies contribute to a foundation who could redistribute funds to key open source groups.

You mean like the Linux Foundation? Or the Cloud Native Computing Foundation? Or the Rust Foundation? Or the Python Software Foundation? Or the Free Software Foundation? Or the Software Freedom Conservancy? Or the Mozilla Corporation?


Why would Apple do anything? They're getting it for free while contributing nothing. It's what you should expect when developing permissively licensed software.


Apple do contribute to some open source projects, by employing developers and also being actively involved. IRRC clang + llvm for example.

There are global enterprises which (internally) explicitly forbid any empolyees to contribute to open source code used to develop their product (tools, IDEs) and even used in their product (The Linux kernel for example).

That said, Apple providing Daniel / the Curl project with a machine should be a no-brainer.


>That said, Apple providing Daniel / the Curl project with a machine should be a no-brainer.

The problem with that is where do you stop ?

How many OSS projects are there ? Where do you draw the line on who gets a free machine ? Then we get into the question of whether it's just the project maintainers or any contributor ? And if the contributors, then how many LoC do they need to contribute before they get a free machine ? If Bob just submits a PR to bump a version number, does he get a free machine ?

Giving a free machine to any Tom, Dick or Harry who has ever published a piece of OSS code is simply not a serious proposition.


> How many OSS projects are there ? Where do you draw the line on who gets a free machine ?

Surely a reasonable minimum is the software that Apple are themselves shipping with macos


Here's a solid proposal. One machine per project. Project defined as a source tarball/repo used when building the OS. So all the stuff that comes from FreeBSD base counts as one project, sorry developer(s) of /usr/bin/cal, you'll have to fight for access with the rest of the FreeBSD team.

Exception policies for shenanigans.

It's not that hard to share a mac among a developer team, so one mac per project is a good start. There's natural downward pressure on the number of upstream projects used, so one for each of those is a good start. If you also make it request based rather than reaching out to send them, the capex won't be too bad; some upstreams won't be interested anyway.


You could say the same thing to giving to charity. Pick a budget and then stick to it. It's not complicated.


It's not very difficult if Apple wants to bother.

Several possible criteria:

A) OSS which Apple uses internally - e.g. I'd be very surprised if there's no usage of curl out there.

(and / or)

B) Very popular projects.

(and / or)

C) Projects where Apple has a strategic interest in being able to run on M1. e.g. certain developer tooling.


If I were Tim Apple and wanted to donate a machine to particular projects; anonymously through an engineer or lawyer is exactly how I’d do it. Having it be known that Apple is a hardass and gives nothing helps keep the noise down.


Let's stop at Daniel for the first attempt. No Toms, no Harrys.


> Apple has shipped and used curl in their products for twenty years but they never assist, help or otherwise contribute to the development. They also don’t sponsor us in any way, like with hardware.

Do they have an obligation to? Even a moral one? Honestly I don't think (I hope!) Apple actually uses curl in their products (probably a good thing). It's just provided as a convenience to developers who might be used to it.

I got curious about Apple's use of Curl and Googled it. One of the top hits was another blog post complaining about Apple not donating Macs:

https://daniel.haxx.se/blog/2021/09/25/curls-first-twenty-ye...

I think you could replace 99% of the uses of Curl (download one file via HTTPS) with like 100 lines of Python or Rust or Go. It's not critical infrastructure in the same way that OpenSSL or LLVM or WebKit are.


I don't think they have a moral obligation to, necessarily. But in exchange for $1000 of hardware (at retail price, mind) they would easily get >>$1000 of value for them and their customers.

It doesn't make sense not to do it, if the corporation is a single rational hive mind. Of course, it isn't. A corporation is a collection of individuals, each operating with different goals and limited information.


> It's not critical infrastructure in the same way that OpenSSL or LLVM or WebKit are.

libcurl is for sure


It's not. The main application of libcurl could be very easily replaced. Just because it is widely used (assuming it is) doesn't mean it is valuable.

You wouldn't say `ls` is critical infrastructure.


I would absolutely call coreutils critical.


Ok maybe "critical" doesn't convey what I mean. What I mean is it's not something that would be difficult to replace.

It's like... you might use your phone's timer app all the time. But if it suddenly started nagging you for donations all the time you aren't going to donate; you'd just switch to a different timer app. It isn't uniquely valuable.


"Fetch files over HTTP/S" is easy to replace, but lib/curl is a lot more than that, both in protocols and in the endless "fun" edge cases that pop up in the wild west that is the internet.


Yeah but almost nobody is using it for any of those weird protocols.


Cars use it and they're almost always not connected to the internet constantly. I am willing to bet they use weird protocols all the time.


>it's not something that would be difficult to replace

That's very naive. It's just not something that hard to imagine to replicate. Why do you think a 26 year old project exists, if it's something that could be replaced by a 100 lines something? Is the author stupid, or does he just include a lot of cruft and boilerplate? Are Apple and all the other users wrong?


Because it's useful and it works? Also we didn't have as many HTTP implementations available in the past.

How old do you think `cat` is? Does that mean it would be hard to replace?

> Is the author stupid, or does he just include a lot of cruft and boilerplate?

I never suggested that. Curl had it's own HTTP implementation. A replacement would obviously not do that. Also curl supports a gazillion protocols that almost nobody uses.


Cat is an interesting example because it's not as trivial as it seems, especially when it comes to performance and resilience:

https://endler.dev/2018/fastcat/

https://ariadne.space/2022/07/17/how-efficient-can-cat1-be/

I think this is one of these "not built here" discussions. It's very easy to underestimate the number of edge-cases to support especially in the case of network transfer. You start implementing your own, then you've got to handle non standard certificates, 300 redirects, temporary failures, backoff strategies, optimizing chunk size, handling proxy calls, etc. Using a standard library makes sense.


have you ever tried? How was it complexity-wise?

(And critical IMO means 'important in fact' not 'not replaceable in theory'.)


I’d suggest learning what libcurl is used for before throwing it out with the bath water ¯\_(ツ)_/¯


It's used for downloading files (and occasionally uploading them) over HTTP(S). It has plenty of other features but that's what it's used for 99% of the time.

What do you think it is used for?


Almost every new car uses libcurl. You can find curl in TVs, gaming consoles, smart watches, smart phones and so on.


Right... and they use it for downloading files over HTTP(S).

Also smart phones, smart watches and TVs generally don't use libcurl for that. Android, iOS and WebOS have their own HTTP stacks. I don't know about cars or consoles.


You seem fixated on "downloading files over HTTP(S)" and are missing the point.

Nearly every videogame for instance use libcurl as their HTTP stack. You know why? Because it's the best HTTP library for C/C++.

If you have a C/C++ application doing HTTP traffic it's likely using cURL. Or, I dunno, you could look at this page to find out: https://curl.se/docs/companies.html


So the Curl Project in GH has 9751 issues closed. You are talking about 100 lines of Python or Rust/Go. That claim is kind of funny given the amount of edge cases HTTP requests come across and Curl having solved them. As a web dev we use frequently Curl for Downloading file, post request, follow redirects, check HTTP status. There are countless other usage of Curl apart from File downloading as you are repeating.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: