I figure that the source code is not the hard part of the IRS making this available to the public, but the interoperability with the revenue system, and its verified adherence to the current tax code. Couldn't those things still be killed by the administration even if the source code is available publicly?
"Direct File interprets the United States' Internal Revenue Code (26 USC) as plain language questions, the answers to which should be known to taxpayers without need of external instructions or publications. Taxpayers' answers are then translated into standard tax forms and transmitted to the IRS's Modernized e-File (MeF) API, which is available for authorized public use."
So in theory it's useful now, but as you say it could easily change.
The tax code is riddled with euphemisms like EITC that don't mean what it says on the tin. There's no way normies can manage that without instructions.
Piggybacking, I think the "hard part" also includes the decades of success that the tax prep lobby's had in protecting its business interests at the cost of US citizen's welfare. Although the number of states that provide free direct filing has grown from last year -- which I only remember to be substantially less than the 25 who do so today -- it's unclear what the problem is with the remaining 25 including DC where I live
Right, politicians and officials working on behalf of the tax-filing lobby could introduce lots of changes to the tax code with a view to making this software useless.
The point of open sourcing from a dying ship is that the groups that can modify this software and resell it all start from it as a baseline. Is TurboTax all lean mean code available at a low enough price while still meeting profit expectations if it needs drastic changes?
Imagine this source code becoming the unit tests for the legal code. Future tax-code changes would be accompanied by corresponding changes in GitHub. Inconsistencies would surface as new code and tests break the old ones. As courts introduce new nuances to the law's interpretation, new unit tests would follow.
This wouldn't replace human judgment; nobody in power would allow that. But even the capriciousness of politics can be expressed as Boolean logic (var isDeductible = taxpayerIsMe && !taxpayerIsYou). The tests could at least memorialize all the pork.
good luck with that; interpretation make things like this very difficult, if not impossible.
I agree that this would be nice, however. as a non-lawyer and someone who considers themself to be not a "real" developer (even though I write software every day) I have often wondered how alike law and code are, really, when it comes to defining intent via a keyboard.
> Taxpayers' answers are then translated into standard tax forms and transmitted to the IRS's Modernized e-File (MeF) API, which is available for authorized public use
The interoperability with the revenue system is provided by a different project, and this API is also used by turbotax and the like. It won't be going away.
It could easily go away, if there are claims of people abusing the API, or using "unlicensed software to use the API" causing errors. By licensed, I mean "approved to use the API".
There could also be pushes to monetize the API, "Why is this service free!?". Meaning they'd likely require a need to be incorporated, setup a commercial account with them, and have payment method on file, and on and on.
My point is, I can think of dozens of sneaky ways to make that pesky API go away, and I'm not even trying.
I wouldn't say interop is a huge deal, the main time and cost sink is translating the recursive Gordian knots of tax law into a logically cohesive structure that can be evaluated programmatically. And then you (ideally) must prove its correctness.
Imagine pair programming with a tax lawyer. I'd rather eat my own hands.
DirectFile wasn’t meant to handle complicated edge cases. Most filers have a w2 and a few 1099s, use the standard deduction, and claim a few common credits (e.g., child and earned-income). They could file for free in a few minutes with directfile.
Yes and no. This is a common pattern, but implemented very lazily. Most of this can (and probably should) be refactored out to separate classes/functions.
But no, I don't think this would faze most Java devs. It's ugly and bad practice, but more or less acceptable depending on personal taste. It works, at least.
Point of interest: LLMs tend to go too far in the opposite direction with code like this. They will break everything apart into functions or classes, even trivial one-line lambdas. I find that even more obnoxious than the monstrosity you linked.
I can tell you as a person working in a spring boot webflux shop that is pretty bad code. You really don’t want to nest that much. Using atomic references outside the reactive flow is a huge red flag that they don’t know how to program in webflux properly. Not that webflux is easy to use at all and the dx is garbage.
> Not that webflux is easy to use at all and the dx is garbage
My experience with pretty much any Java framework ... It's sad because I do think (especially since Java 8) that Java is a great language for many things. But the community as this insane tendency to create incredibly convoluted pattern-on-top-of-pattern tooling.
I don't really know Java, but .flatMap(...) seems to be equivalent to C# .SelectMany(...) which famously can be interpreted as a monadic bind operator.
The C# query syntax
from x in xs
from y in GetYs(x)
from z in GetZs(y) ...
which is similar to monadic do-notation in Haskell.
So since there is monadic Scala code elsewhere in the project, I wonder if this is a result of someone thinking in Scala and translating it into Java in their head.
If you are a non-Java developer, it does look daunting. But in my opinion it’s much much better use of the Java streams api and reactor library that I have seen compared to most shitty corp firms.
I saw an internal “sso” auth app that iterated a byte array and concatenated the values into a string instead of base64 encoding it when I worked at HP/HPE/DXC
Fuck no, it's not. But I've seen it because it gets promoted by some smartass tech lead chasing so called webscale performance. But they never do comparative benchmarks against regular blocking code for fear that it would demonstrate the true nature of their head trip. Then they leave to go shit elsewhere and leave other people to deal with the consequences of their hubris.
Wow, that's frustrating code. I feel vindicated in using an ultrawide to code with. When I mentioned on here I use it because sometimes you have to work on code with super-deep indents I got downvoted to negative infinity for shitty code management.
Aside from the code, there's also a ton of great design documents and notes under /docs/design [0], including detailed process diagrams for many of the user flows (unfortunately not directly viewable online since they're within zip files; see flow1.zip and flow2.zip)
It's also fun that, because this is from the US, they can't just use CC0, but instead need to clarify that this must be public domain, separately from the worldwide CC0.
Another way of saying this: Creative Commons, based in California, USA, did not publish a license that can be used by one of the largest domestic authors of software.
Less snarkily, I do wonder about the discrepancy there.
Category Error.
Public Domain is not a license. It is a state of being.
Creative Commons is a worldwide organization, not a jurisdiction-specfic organization. Creative Commons does not have the authority to harmonize laws worldwide.
It's not that they can't, it's just pointless to offer a licence for something that's in the public domain.
Also it's important to remember these works are not in the public domain because someone declared them to be, they are simply because they are works carried out by the US government. Similar to how copyright is automatic, it's not applied only when you put the copyright symbol, that's just informational.
>But as I told the team as the end closed in, “We took a pipedream, and made it a policy choice.” No one can claim with a straight face that Direct File is impossible anymore; bringing it back requires only that our elected leaders make a different choice.
>What I mourn the most, though, is the dissolution of the team, the disregard for the vast impact they were poised and eager to deliver. The team itself is what I am proudest of from my time working on Direct File. Their manic dedication to the mission. The care they consistently took to get it right. The trust and love they had for each other.
> Not all source code, documentation and metadata used in the development of Direct File is included in this repository. Specifically, any code or data that is considered Personally Identifiable Information (PII), Federal Tax Information (FTI), Sensitive But Unclassified (SBU), or source code developed for National Security Systems (NSS), as defined in 40 U.S.C. § 11103, is exempt. Due to these restrictions, certain pieces of functionality have been removed or rewritten.
Very curious about what these pieces are that were removed
It's probably a boilerplate notice put on all releases. Sometimes they aren't even allowed to explicitly state that something was excluded, so they have to put that notice on all releases, so there's no way to infer which releases have exclusions.
Saying Goodbye - https://chrisgiven.com/2025/06/saying-goodbye/
"Direct File interprets the United States' Internal Revenue Code (26 USC) as plain language questions, the answers to which should be known to taxpayers without need of external instructions or publications. Taxpayers' answers are then translated into standard tax forms and transmitted to the IRS's Modernized e-File (MeF) API, which is available for authorized public use."
So in theory it's useful now, but as you say it could easily change.
Dead Comment
This wouldn't replace human judgment; nobody in power would allow that. But even the capriciousness of politics can be expressed as Boolean logic (var isDeductible = taxpayerIsMe && !taxpayerIsYou). The tests could at least memorialize all the pork.
I agree that this would be nice, however. as a non-lawyer and someone who considers themself to be not a "real" developer (even though I write software every day) I have often wondered how alike law and code are, really, when it comes to defining intent via a keyboard.
The interoperability with the revenue system is provided by a different project, and this API is also used by turbotax and the like. It won't be going away.
The interoperability is not the hard part.
There could also be pushes to monetize the API, "Why is this service free!?". Meaning they'd likely require a need to be incorporated, setup a commercial account with them, and have payment method on file, and on and on.
My point is, I can think of dozens of sneaky ways to make that pesky API go away, and I'm not even trying.
Imagine pair programming with a tax lawyer. I'd rather eat my own hands.
https://github.com/IRS-Public/direct-file/blob/9dd76a786ea69...
The giveaway is the Mono<T> return type.
I see the most of it stems from reactive-style programming (reactor.core.publisher.Mono).
Maybe they just tried to fit into one screen? Anyway I'd ask to simplify it, if I was a their team lead.
But no, I don't think this would faze most Java devs. It's ugly and bad practice, but more or less acceptable depending on personal taste. It works, at least.
Point of interest: LLMs tend to go too far in the opposite direction with code like this. They will break everything apart into functions or classes, even trivial one-line lambdas. I find that even more obnoxious than the monstrosity you linked.
My experience with pretty much any Java framework ... It's sad because I do think (especially since Java 8) that Java is a great language for many things. But the community as this insane tendency to create incredibly convoluted pattern-on-top-of-pattern tooling.
The C# query syntax
is equivalent to which is similar to monadic do-notation in Haskell.So since there is monadic Scala code elsewhere in the project, I wonder if this is a result of someone thinking in Scala and translating it into Java in their head.
Or if you’re in the business of selling extremely wide aspect ratio monitors.
Deleted Comment
I dislike Java but if it can get me back to the On Error Resume Next days I might reconsider.
Deleted Comment
Just another shitty Java middleware that never amounted to anything, 200000 lines of code that don't express even a handful of ideas.
0: https://github.com/IRS-Public/direct-file/tree/main/docs/des...
https://github.com/IRS-Public/direct-file
Dead Comment
It's also fun that, because this is from the US, they can't just use CC0, but instead need to clarify that this must be public domain, separately from the worldwide CC0.
Less snarkily, I do wonder about the discrepancy there.
Creative Commons is a worldwide organization, not a jurisdiction-specfic organization. Creative Commons does not have the authority to harmonize laws worldwide.
https://creativecommons.org/public-domain/pdm/
https://creativecommons.org/public-domain/cc0/
Also it's important to remember these works are not in the public domain because someone declared them to be, they are simply because they are works carried out by the US government. Similar to how copyright is automatic, it's not applied only when you put the copyright symbol, that's just informational.
>But as I told the team as the end closed in, “We took a pipedream, and made it a policy choice.” No one can claim with a straight face that Direct File is impossible anymore; bringing it back requires only that our elected leaders make a different choice.
>What I mourn the most, though, is the dissolution of the team, the disregard for the vast impact they were poised and eager to deliver. The team itself is what I am proudest of from my time working on Direct File. Their manic dedication to the mission. The care they consistently took to get it right. The trust and love they had for each other.
Deleted Comment
> Not all source code, documentation and metadata used in the development of Direct File is included in this repository. Specifically, any code or data that is considered Personally Identifiable Information (PII), Federal Tax Information (FTI), Sensitive But Unclassified (SBU), or source code developed for National Security Systems (NSS), as defined in 40 U.S.C. § 11103, is exempt. Due to these restrictions, certain pieces of functionality have been removed or rewritten.
Very curious about what these pieces are that were removed