frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

OpenAI and Nvidia Announce Partnership to Deploy 10GW of Nvidia Systems

https://openai.com/index/openai-nvidia-systems-partnership/
2•meetpateltech•1m ago•0 comments

SWE-Bench Pro

https://github.com/scaleapi/SWE-bench_Pro-os
1•tosh•2m ago•0 comments

Show HN: Tensorpack a CLI tool for semantic discovery across datasets

1•AyodeleFikayomi•2m ago•0 comments

La Machine

https://la-machine.fr
2•oliviermevel•3m ago•0 comments

Show HN: An AI Career Agent to help professionals stay relevant and visible

https://www.vulk.ai/
1•sanduckhan•4m ago•0 comments

Chowa Blogging Editor

https://chowa.tech/
1•smooke•5m ago•0 comments

Imgur: The Magic of the Internet

https://imgur.com/gallery/buy-verified-square-accounts-to-safely-site-A848xLn
1•fernando1473•6m ago•0 comments

Medical Confessions (2008)

https://www.theguardian.com/society/2008/feb/04/health.healthandwellbeing
1•bookofjoe•7m ago•0 comments

Tired of fucking YouTube SHORTS? Here the solution

https://chromewebstore.google.com/detail/gcpgcplbhnnmiednbbglipmggahpfnfi
1•beastdevmoney•8m ago•1 comments

AI Has Moved from a Niche Sector to the Primary Driver of All VC Investment

https://www.apolloacademy.com/ai-has-moved-from-a-niche-sector-to-the-primary-driver-of-all-vc-in...
1•toomuchtodo•8m ago•0 comments

AI Podcast Start Up Plans 5k Shows, 3k Episode a Week

https://www.hollywoodreporter.com/business/digital/ai-podcast-start-up-plan-shows-1236361367/
1•pavel_lishin•10m ago•2 comments

Redo: A recursive, general-purpose build system

https://redo.readthedocs.io/en/latest/
1•kblissett•11m ago•0 comments

Tup: A file-based build system for Linux, OS X, and Windows

https://gittup.org/tup/index.html
1•kblissett•11m ago•0 comments

TLinFormer, a Path to Exact, Full Context-Aware Linear Attention

https://arxiv.org/abs/2508.20407
1•P_qRs•13m ago•0 comments

The American nations across North America

https://colinwoodard.com/new-map-the-american-nations-regions-across-north-america/
2•loughnane•16m ago•0 comments

AI agents still can't solve 1/3 of SWE-Bench problems. Why not? (A Case Study)

https://surgehq.ai/blog/when-coding-agents-spiral-into-693-lines-of-hallucinations
1•egilliehhc•18m ago•0 comments

The Story of Musium

https://ruudvanasseldonk.com/2025/musium
3•Bogdanp•20m ago•0 comments

Search for any movie or TV show. Follow your favorites to track their premieres

https://diditdrop.com/
1•mooreds•20m ago•0 comments

From Burwood to Bulgaria: How $1 Australian home designs are taking on the world

https://www.smh.com.au/politics/nsw/from-burwood-to-bulgaria-how-1-australian-dream-homes-are-tak...
1•skissane•20m ago•0 comments

After a slow start, Europe's reusable rocket program shows signs of life

https://arstechnica.com/space/2025/09/after-a-very-slow-start-europes-reusable-rocket-program-sho...
1•rbanffy•21m ago•0 comments

What Is Blueskyism?

https://www.natesilver.net/p/what-is-blueskyism
8•ImJamal•21m ago•7 comments

UK Millionaire exodus did not occur, study reveals

https://taxjustice.net/press/millionaire-exodus-did-not-occur-study-reveals/
40•mooreds•22m ago•19 comments

Human-Oriented Markup Language

https://huml.io/
2•vishnukvmd•22m ago•0 comments

Studying Lee Robinson, Cursor's New VP of Developer Experience [audio]

https://scalingdevtools.com/podcast/episodes/studying-lee-robinson-cursors-new-vp-of-dx
2•mooreds•22m ago•0 comments

Long-term decline in montane insects under warming summers

https://esajournals.onlinelibrary.wiley.com/doi/10.1002/ecy.70187
1•PaulHoule•23m ago•0 comments

Architectural mechanisms of a universal fault-tolerant quantum computer

https://arxiv.org/abs/2506.20661
1•rntn•25m ago•0 comments

New AI Tool Predicts Which of 1k Diseases Someone May Develop in 20 Years

https://www.scientificamerican.com/article/new-ai-tool-predicts-which-of-1-000-diseases-someone-m...
1•Brajeshwar•25m ago•0 comments

A Mysterious Jupiter-Sized Planet Is Heading Toward Our Solar Neighborhood

https://modernengineeringmarvels.com/2025/09/20/a-mysterious-jupiter-sized-planet-is-heading-towa...
2•Brajeshwar•25m ago•0 comments

Brilliant Books to Demystify the Brain

https://bigthink.com/books/5-brilliant-books-to-demystify-the-brain/
1•Brajeshwar•25m ago•0 comments

The "New Economic Geography", now middle-aged [pdf]

https://www.princeton.edu/~pkrugman/aag.pdf
1•Terretta•25m ago•0 comments
Open in hackernews

Dear GitHub: no YAML anchors, please

https://blog.yossarian.net/2025/09/22/dear-github-no-yaml-anchors
110•woodruffw•1h ago

Comments

baobun•1h ago
YAML anchors are a welcome feature and will allow us to DRY some of our uglier workflows that currently have a lot of redundancy/duplication.

OPs main argument seems to be "I don't have a use for it and find it hard to read so it should be removed".

woodruffw•1h ago
(I'm the author.)

I don't think this is a fair characterization: it's not that I don't have a use for it, but that I think the uses are redundant with existing functionality while also making static and human analysis of workflows harder.

willseth•57m ago
I think the main reason you see overwhelming support for anchors is that the existing Actions functionality is typically so cumbersome to implement and often makes it harder to understand a workflow. Anchor syntax is a little esoteric, but otherwise very simple and grokable.
woodruffw•45m ago
To be clear, I understand why people want to use anchors. The argument isn't that they aren't useful: it's that the juice is not worth the squeeze, and that GitHub's decision to support them reflects a lack of design discretion.

Or in other words: if your problem is DRYness, GitHub should be fixing or enhancing the ~dozen other ways in which the components of a workflow shadow and scope with each other. Adding a new cross-cutting form of interaction between components makes the overall experience of using GitHub Actions less consistent (and less secure, per points about static analysis challenges) at the benefit of a small amount of deduplication.

btreecat•37m ago
So GitHub shouldn't implement the spec because you personally don't like that the spec solves a problem you can optionally solve at another layer?
woodruffw•31m ago
No; GitHub shouldn't support YAML anchors because it's a deviation from the status quo, and the argument is specifically that the actions ecosystem doesn't need to make analysis any harder than it already is.

(As the post notes, neither I nor GitHub appears to see full compliance with YAML 1.1 to be an important goal: they still don't support merge keys, and I'm sure they don't support all kinds of minutiae like non-primitive keys that make YAML uniquely annoying to analyze. Conforming to a complex specification is not inherently a good thing; sometimes good engineering taste dictates that only a subset should be implemented.)

btreecat•28m ago
> No; GitHub shouldn't support YAML anchors because it's a deviation from the status quo, and the argument is specifically that the actions ecosystem doesn't need to make analysis any harder than it already is. > > (As the post notes, neither I nor GitHub appears to see full compliance with YAML 1.1 to be an important goal: they still don't support merge keys, and I'm sure they don't support all kinds of minutiae like non-primitive keys that make YAML uniquely annoying to analyze. Conforming to a complex specification is not inherently a good thing; sometimes good engineering taste dictates that only a subset should be implemented.)

That's a long way to say "yes, actually"

woodruffw•25m ago
> That's a long way to say "yes, actually"

"Because I don't like it" makes it sound like I don't have a technical argument here, which I do. Do you think it's polite or charitable to reduce peoples' technical arguments into "yuck or yum" statements like this?

VGHN7XDuOXPAzol•24m ago
> Conforming to a complex specification is not inherently a good thing

Kind of a hard disagree here; if you don't want to conform to a specification, don't claim that you're accepting documents from that specification. Call it github-flavored YAML (GFY) or something and accept a different file extension.

https://github.com/actions/runner/issues/1182

> YAML 1.1 to be an important goal: they still don't support merge keys

right, they don't do merge keys because it's not in YAML 1.2 anymore. Anchors are, however. They haven't said that noncompliance with YAML 1.2 spec is intentional

woodruffw•18m ago
> Call it github-flavored YAML (GFY) or something and accept a different file extension.

Sure, I wouldn't be upset if they did this.

To be clear: there aren't many fully conforming YAML 1.1 and 1.2 parsers out there: virtually all YAML parsers accept some subset of one or the other (sometimes a subset of both), and virtually all of them emit the JSON object model instead of the internal YAML one.

GuinansEyebrows•53m ago
is your criticism leveled at yaml anchors or github? in my anecdotal experience, yaml anchors were a huge help (and really, really not hard to grasp at a conceptual level) in maintaining uniform build processes across environments.
woodruffw•52m ago
It is specifically leveled at YAML anchors in GitHub. I don't have a super strong opinion of YAML anchors in other contexts.

(This post is written from my perspective as a static analysis tool author. It's my opinion from that perspective that the benefits of anchors are not worth their costs in the specific context of GitHub Actions, for the reasons mentioned in the post.)

detaro•46m ago
in what ways do they make static analysis harder? Don't they flatten out trivially after parsing?
woodruffw•40m ago
The flattening out is the problem: most (all?) widely used YAML parsers represent the YAML document using the JSON object model, which means that there's no model or element representation of the anchors themselves.

That in turn means that there's no way to construct a source span back to the anchor itself, because the parsed representation doesn't know where the anchor came from (only that it was flattened).

VGHN7XDuOXPAzol•28m ago
This is something that a custom parser library could figure out, no? The same as how you have format-preserving TOML libraries, for instance.

I think it makes way more sense for GitHub to support YAML anchors given they are after all part of the YAML spec. Otherwise, don't call it YAML! (This was a criticism of mine for many years, I'm very glad they finally saw the light and rectified this bug)

woodruffw•21m ago
> This is something that a custom parser library could figure out, no? The same as how you have format-preserving TOML libraries, for instance.

Yes, it's just difficult. The point made in the post isn't that it's impossible, but that it significantly changes the amount of of "ground work" that static analysis tools have to do to produce useful results for GitHub Actions.

> I think it makes way more sense for GitHub to support YAML anchors given they are after all part of the YAML spec. Otherwise, don't call it YAML! (This was a criticism of mine for many years, I'm very glad they finally saw the light and rectified this bug)

It's worth noting that GitHub doesn't support other parts of the YAML spec: they intentionally use their own bespoke YAML parser, and they don't have the "Norway" problem because they intentionally don't apply the boolean value rules from YAML.

All in all, I think conformance with YAML is a red herring here: GitHub Actions is already its own thing, and that thing should be easy to analyze. Adding anchors makes it harder to analyze.

VGHN7XDuOXPAzol•1m ago
> conformance with YAML

maybe, but not entirely sure. 'Two wrongs don't make a right' kind of thinking on my side here.

But if they call it GFY and do what they want, then that would probably be better for everyone involved.

> they don't have the "Norway" problem because they intentionally don't apply the boolean value rules from YAML.

I think this is YAML 1.2. I have not done or seen a breakdown to see if GitHub is aiming for YAML 1.2 or not but they appear to think that way, given the discussion around merge keys

nirvdrum•1h ago
The argument that this is a security issue isn't very well fleshed out either. As far as I can tell, it boils down to his opinion that this makes YAML harder to read and thus less secure. But, the reality is we have to copy & paste config today and that's a process I've seen fail when a change needs to be made and isn't properly carried forward to all locations. I suppose I could argue that's a security concern as well.

Half the argument against supporting YAML anchors appears to boil down some level of tool breakage. While you can rely on simplifying assumptions, you take a risk that your software breaks when that assumption is invalidated. I don't think that's a reason to stop evolving software.

I've never seen a project use any of the tools the author listed, but I have seen duplicated config. That's not to say the tools have no value, but rather I don't want to be artificially restricted to better support tools I don't use. I'll grant that the inability to merge keys isn't ideal but, I'll take what I can get.

dan_manges•1h ago
We support anchors in our CI/CD syntax at RWX, but only in a specific `aliases` section. I think this is a nice compromise.

  aliases:
    common-env: &common-env
      key1: value1
      key2: value2

  tasks:
    - key: some-task
      run: ...
      env:
        <<: *common-env
https://www.rwx.com/docs/mint/aliases
willseth•1h ago
YAML anchors may be a sharp tool but no one is forced to use them. I have written many verbose Github workflows that would have benefited from using anchors, and I am relieved to learn I can clean those up now.
raincole•1h ago
It seems that any data-orient approach would inevitably evolve into a programming language given enough time.

One day we might even see for-loop in CSS...

andreareina•1h ago
There are languages specifically for writing configs. Like dhall https://dhall-lang.org/
eblume•1h ago
That's my thought as well. I predict we'll be seeing SDK's for generating github workflows by mid-2026. Maybe pulumi will get an extension for it. (I'm well aware that codegen yaml has been a thing for a long time, but I'm thinking about something targeting github workflows _specifically_.)

TBH it's getting a bit exhausting watching us go through this hamster wheel again and again and again.

jerf•48m ago
I have a theory that in such cases one might as well just give up and write a Turing-complete language in the first place, as the sort of TC-complete languages we get with this sort of "slowly but surely backed against the wall" situations are way worse than just starting from scratch.

I hypothesize a TC-complete language for something like CSS that included deep tracking under the hood for where values are coming from and where they are going would be very useful, i.e., you would have the ability to point at a particular part of the final output and the language runtime could give you a complete accounting of where it came from and what went into making the decisions, could end up giving us the auditability that we really want from the "declarative" languages while giving us the full power of the programming langauges we clearly want. However I don't have the time to try to manifest such a thing myself, and I don't know of any existing language that does what I'm thinking of. Some of the more powerful languages could theoretically do it as a library. It's not entirely unlike the auditing monad I mention towards the end of https://www.jerf.org/iri/post/2958/ . It's not something I'd expect a general-purpose language to do by default since it would have bad general-purpose performance, but I think for specialized cases of a TC-complete configuration langauge it could have value, and one could always run it as an debugging option and have an optimized code path that didn't track the sources of everything.

anttiharju•1h ago
I think YAML anchors in GitHub Actions are very welcome, for example for DRYing the push/pull_request 'paths:' filters [1].

Now only if they supported paths filter for `workflow_call` [2] event in addition to push/pull_request and my life would be a lot easier. Nontrivial repos have an unfortunate habit of building some sort of broken version of change detection themselves.

The limit of 20 unique workflow calls is quite low too but searching the docs for a source maybe they have removed it? It used to say

> You can call a maximum of 20 unique reusable workflows from a single workflow file.

but now it's max of 4 nested workflows without loops, which gives a lot of power for the more complex repos [3]. Ooh. Need to go test this.

[1] https://docs.github.com/en/actions/reference/workflows-and-a...

[2] https://docs.github.com/en/actions/reference/workflows-and-a...

[3] https://docs.github.com/en/actions/how-tos/reuse-automations...

TheDong•1h ago
Wanna DRY out your github actions yaml?

Generate it from Dhall, or cue, or python, or some real language that supports actual abstractions.

If your problem is you want to DRY out yaml, and you use more yaml features to do it, you now have more problems, not fewer.

usrme•51m ago
Seconded. I've had huge success with generating workflows with CUE. Would definitely recommend it to anyone struggling with YAML.
Spivak•47m ago
Just introduce a templating language and the CI to generate the yaml as part of your pipeline as way to make it simpler?

Above a certain level of complexity, sure. But having nothing in between is an annoying state of affairs. I use anchors in Gitlab pipelines and I hardly curse their names.

nirvdrum•46m ago
Having used CI systems and application frameworks that support YAML anchors for configuration, adding in a programming language would be a massive amount of complexity for very little gain. We're not talking about dozens of locations with hundreds of lines of shared code.

Asking the team to add a new build dependency, learn a new language, and add a new build step would create considerably more problems, not fewer. Used sparingly and as needed, YAML anchors are quite easy to read. A good editor will even allow you to jump to the source definition just as it would any other variable.

Being self-contained without any additional dependencies is a huge advantage, particularly for open source projects, IMHO. I'd wager very few people are going to learn Dhall in order to fix an issue with an open source project's CI.

baq•35m ago
Your team doesn't know YAML, it knows github actions. There's zero transferable knowledge when switching from github actions to kubernetes deployments, as there is precisely the same zero correlation between kubernetes and ansible configs. 'It's all YAML' is a lie and I'm continuously surprised so many people are falling for it for so long. YAML is the code-as-data, but the interpreter determines what it all means.
WorldMaker•17m ago
Use the language you are already working in? Most languages have good YAML serialization and I think in most languages a function call taking a couple parameters that vary to produce slightly different but related objects is going to be as readable or more readable than YAML anchors.
phanimahesh•44m ago
This. So true. Yaml has always been an overly complicated format, with weird quirks ( like norway becoming false in a list of country codes ).

I find it an absolute shame that languages like Dhall did not become more popular earlier. Now everything in devops is yaml, and I think many developers pick yaml configs not out of good reasons but defaulting to its ubiquity as sufficient.

true_blue•32m ago
>norway

yaml 1.2 was released in 2009, and it fixed this problem. this is an implementation issue.

https://yaml.org/spec/1.2.2/#12-yaml-history

esafak•11m ago
If we're going there let's just stay there and not translate it back to YAML, which is absolutely inappropriate for specifying CI pipelines.
a_t48•1h ago
Anchors will be exceptionally useful for a few workflows for me. We have what is essentially the same setup/teardown for three jobs within one workflow. I’d love to be able to factor that stuff out without introducing yet another yaml file to the repo, this will be a big help.
qwerty2000•1h ago
Just because it is expressed in YAML doesn't make YAML the party to blame here. I would say one of the main concerns I have with anything in GitHub Actions related to the word "merge" has to do with identifying the last commit for a merge, not merging of objects in YAML.

If you have two workflows... one to handle a PR creation/update and another to address the merge operation, it is like pulling teeth to get the final commit properly identified so you can grab any uploaded artifacts from the PR workflow.

theamk•1h ago
Author's replacement for anchors is to use global syntax, like a top-level "env:" block.

This is a terrible advice from security endpoint - given that env variables are often used for secrets data, you really _don't_ want them to set them at the top level. The secrets should be scoped as narrow as possible!

For example, if you have a few jobs, and some of them need to download some data in first step (which needs a secret), then your choices are (a) copy-paste "env" block 3 times in each step, (b) use the new YAML anchor and (c) set secret at top-level scope. It is pretty clear to me that (c) is the worst idea, security wise - this will make secret available to every step in the workflow, making it much easier for malware to exfiltrate.

cluckindan•34m ago
I agree. OP’s statement ”the need to template environment variables across a subset of jobs suggests an architectural error in the workflow design” does not ring true for cases where you want developers to be able to quickly deploy a separate environment for each development branch, especially if said branch needs to connect to a matching backend/API/other service.
pacoWebConsult•1h ago
Can YAML go away entirely and instead allow pipelines to be defined with an actual language? What benefits does the runner-interpreted yaml-defined pipeline paradigm actually achieve? Especially with runners that can't be executed and tested locally, working with them is a nightmare.
red_hare•1h ago
I'm surprised by this take. I love YAML for this use case. Easy to write and read by hand, while also being easy to write and read with code in just about every language.
Pxtl•59m ago
It's less about YAML itself than the MS yaml-based API for interacting with build-servers. It's just so hard to check and test and debug.
TheDong•57m ago
> Easy to write and read by hand, while also being easy to write and read with code in just about every language

Language implementations for yaml vary _wildly_.

What does the following parse as:

    some_map:
      key: value
      no: cap
If I google "yaml online" and paste it in, one gives me:

{'some_map': {False: 'cap', 'key': 'value'}}

The other gives me:

{'some_map': {'false': 'cap', 'key': 'value'}}

... and neither gives what a human probably intended, huh?

sauercrowd•54m ago
That only matters if you're parsing the same yaml file with different parsers, which GitHub doesn't (and I doubt most people do - it's mostly used for config files)
sevensor•50m ago
“The meaning of YAML is implementation-defined” is a big reason I stay far away whenever I can.
Perz1val•30m ago
The classic Norway bug
shadowgovt•56m ago
Easy to write and read until it gets about a page or two long. Then you have to figure out stuff like "Oh gee, I'm no nesting layer 18, so that's... The object.... That is.... The array of.... The objects of....."

Plus it has exactly enough convenience-feature-related sharp edges to be risky to hand to a newbie, while wearing the dress of something that should be too bog-simple to have that problem. I, too, enjoy languages that arbitrarily decide the Norwegian TLD is actually a Boolean "false."

pacoWebConsult•54m ago
Sure, easy to read, but quite difficult to /reason/ about in your head, let alone have proper language server/compiler support given the abstraction over provider events and runner state. I have never written a CI pipeline correctly without multiple iterations of pushing updates to the pipeline definition, and I don't think I'm alone on that.
baq•37m ago
YAML is a serialization format. I like YAML as much as I like base64, that is I don't care about it unless you make me write it by hand, then I care very much.

GitHub Actions have a lot of rules, logic and multiple sublanguages in lots of places (e.g. conditions, shell scripts, etc.) YAML is completely superficial, XML would be an improvement due to less whitespace sensitivity alone.

datadrivenangel•1h ago
Locally hard to test is the point. Lockin.
Pxtl•1h ago
Yes. Most of my custom pipeline stuff is a thin wrapper around a normal-ass scripting-language because the yaml/macro stuff is so hard to check and debug.
mhh__•56m ago
I'm not convinced there should be anything to define at all versus basically just some extremely broad but bare platform and a slot to stick an executable in.
jbjbjbjb•48m ago
I couldn’t agree more. I think we should just write our pipelines in languages our teams are familiar with and prioritise being able to run them locally.
delusional•40m ago
> prioritise being able to run them locally.

That is the key function any serious CI platform needs to tackle to get me interested. FORCE me to write something that can run locally. I'll accept using containers, or maybe even VMs, but make sure that whatever I build for your server ALSO runs on my machine.

I absolutely detest working on GitHub Actions because all too often it ends up requiring that I create a new repo where I can commit to master (because for some reason everybody loves writing actions that only work on master). Which means I have to move all the fucking secrets too.

Solve that for me PLEASE. Don't give me more YAML features.

giancarlostoro•46m ago
Wouldn't Terraform solve this? You can have all your infrastructure as code in a git repo.
wiether•44m ago
Basically what we ended up doing at work is creating some kind of YAML generator.

We write Bash or Python, and our tool will produce the YAML pipeline reflecting it.

So we dont need to maintain YAML with over-complicated format.

The resulting YAML is not meant to be read by an actual human since its absolute garbage, but the code we want to run is running when we want, without having to maintain the YAML.

And we can easily test it locally.

imiric•44m ago
Agreed. YAML is not a great format to begin with, but using it for anything slightly more sophisticated (looking at you Ansible, k8s, etc.) is an exercise in frustration.

I really enjoyed working with the Earthfile format[1] used for Earthly CI, which unfortunately seems like a dead end now. It's a mix of Dockerfile and Makefile, which made it made very familiar to read and write. Best of all, it allowed running the pipeline locally exactly as it would run remotely, which made development and troubleshooting so much easier. The fact GH Actions doesn't have something equivalent is awful UX[2].

Honestly, I wish the industry hadn't settled on GitHub and GH Actions. We need better tooling and better stewards of open source than a giant corporation who has historically been hostile to open source.

[1]: https://earthly.dev/earthfile

[2]: Yes, I'm aware of `act`, but I've had nothing but issues with it.

ericHosick•43m ago
Yes! Hopefully a language that supports code as data (homoiconicity).
ivanjermakov•43m ago
Notable mentions are Zig build system and nob: https://github.com/tsoding/nob.h.
ZYbCRq22HbJ2y7•38m ago
You could make a builder to do this for you. It could build your actions in a pre-commit hook or whatever.

Although, I think it is generally an accepted practice to use declarative configuration over imperative configuration? In part, maybe what the article is getting at, maybe?

jayd16•33m ago
Why do we think an arbitrary language is easier to reason about? If it was so easy you could just do it now. The yaml could be extremely simple and just call into your app, but most don't bother.

I'm certainly willing to believe that yaml is not the ideal answer but unless we're comparing it to a concrete alternative, I feel like this is just a "grass is always greener" type take.

VGHN7XDuOXPAzol•20m ago
Is it actually possible to just have the YAML that calls into your app today, without losing the granularity or other important features?

I am not sure you can do this whilst having the granular job reporting (i.e. either you need one YAML block per job or you have all your jobs in one single 'status' item?) Is it actually doable?

esafak•9m ago
> If it was so easy you could just do it now.

Some do just that: dagger.io. It is not all roses but debugging is certainly easier.

devmor•1h ago
Obviously they are very useful. I still don't think they should exist in this usage of yaml.

Once you allow setting and reading of variables in a configuration file, you lose the safety that makes the format useful. You might as well be using a bash script at that point.

nirvdrum•57m ago
You already can set and read variables. The `matrix` section is often used to test against multiple versions of software. Environment variables can be referenced. And the project configuration supports both secrets and variables configured at the project level.
Pxtl•1h ago
Honestly, everything about GH actions/AzDO pipelines is infuriating. The poor tooling with poor write-time assertions are just so frustrating.

Give me a proper platform that I can run locally on my development machine.

but, if those anchors are a blessed standard YAML feature that YAML tools will provide real assertions about unlike the ${{}} stuff that basically you're doing a commit-push-run-wait-without any proper debug tools besides prints?

Then yes, they should use them.

javcasas•59m ago
General YAML anchors as implemented by the standard: good (not great, just good).

Custom YAML anchors with custom support and surprise corner cases: bad.

kpcyrd•53m ago
For context:

- The complaint is Github using a non-standard, custom fork of yaml

- This makes it harder to develop linters/security tools (as those have to explicitly deal with all features available)

- The author of this blogpost is also the author of zizmor, the most well-known Github Actions security linter (also the only one I'm aware of)

junon•47m ago
I disagree. Instead of anchors we had to rely on third party file change actions to only trigger jobs on certain file path changes, instead of using the built in mechanism, because each job required the list, and the list was long.

Using anchors would have improved the security of this, as well as the maintenance. The examples cited don't remotely demonstrate the cases where anchors would have been useful in GA.

I agree that YAML is a poor choice of format regardless but still, anchor support would have benefitted a number of projects ages ago.

OJFord•46m ago
Ok, now make the 'redundancy' argument with anything other than `env` or `permissions`.

I think they should be supported because it's surprising and confusing if you start saying 'actually, it's a proprietary subset of YAML', no more reason needed than that.

baq•41m ago
'Dear GitHub: no YAML, please' would be a so much better title (content optional)
beder•34m ago
A very pedantic point, but merge keys are not part of the YAML spec [1]! Merge keys are a custom type [2], which may optionally be applied during the construction phase of loading. I definitely wouldn't say that merge keys are integral to anchors.

(Also, as a personal bias, merge keys are really bad because they are ambiguous, and I haven't implemented them in my C++ yaml library (yaml-cpp) because of that.)

[1]: https://yaml.org/spec/1.2.2/

[2]: https://yaml.org/type/merge.html

woodruffw•26m ago
Yeah, I find the situation here very confusing: I agree that merge keys are not part of YAML 1.2, but they are part of YAML 1.1. The reason they don't appear to be in the "main" 1.1 spec itself is because they were added to 1.1 after 1.1 was already deprecated[1].

[1]: https://ktomk.github.io/writing/yaml-anchor-alias-and-merge-...

imcritic•22m ago
I think the author is nuts.

First, he can just not use the feature, not advocate for its removal.

Second, his example alternative is wrong: it would set variables for all steps, not just those 2, he didn't think of a scenario where there are 3 steps and you need to have common envs in just 2 of them.

woodruffw•10m ago
The author does not think he's nuts :-)

> First, he can just not use the feature, not advocate for its removal.

I maintain a tool that ~thousands of projects use to analyze their workflows and actions. I can avoid using anchors, but I can't avoid downstreams using them. That's why the post focuses on static analysis challenges.

> Second, his example alternative is wrong: it would set variables for all steps, not just those 2, he didn't think of a scenario where there are 3 steps and you need to have common envs in just 2 of them.

This is explicitly addressed immediately below the example.