Readit News logoReadit News
tomhow · 3 months ago
hydrogen7800 · 3 months ago
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?
BryantD · 3 months ago
Yeah, absolutely. FWIW, the repo notes:

"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.

kevin_thibedeau · 3 months ago
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.

Dead Comment

fitsumbelay · 3 months ago
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
xhevahir · 3 months ago
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.
glookler · 3 months ago
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?
sowbug · 3 months ago
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.

naikrovek · 3 months ago
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.

NoahZuniga · 3 months ago
> 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.

The interoperability is not the hard part.

bbarnett · 3 months ago
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.

freeone3000 · 3 months ago
I do not know of this capability currently, but if it has enough for eFile, it can also be used to generate a paper return.
yencabulator · 3 months ago
For years prior to last good commit. The rules change every year.
mystified5016 · 3 months ago
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.

rsti0000 · 3 months ago
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.
HPsquared · 3 months ago
Sounds like a business opportunity.
nitwit005 · 3 months ago
The whole point of the program was to eliminate that business opportunity.
90s_dev · 3 months ago
mattgreenrocks · 3 months ago
That's reactive programming in Java, where you return a callback to be run when an operation completes.

The giveaway is the Mono<T> return type.

deepsun · 3 months ago
My eyeballs bleed, and I'm pretty comfortable with Java for many years.

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.

Hilift · 3 months ago
100% test coverage (fingers behind back).
pjc50 · 3 months ago
Is this what people have to do when they don't have the C# async/await autogenerated state machine?
winrid · 3 months ago
Yup. Although to be honest it probably doesn't need to be reactive.
mystified5016 · 3 months ago
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.

jryan49 · 3 months ago
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.
maeln · 3 months ago
> 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.

okeuro49 · 3 months ago
With virtual threads it's difficult to see WebFlux being used in new projects.
mcv · 3 months ago
I've seen similar things, in Java as well as some other languages. It's obviously not the preferred way of doing it.
readthenotes1 · 3 months ago
Unreadable+undebuggable has been the preferred way of doing it for as long as I have seen software
contextfree · 3 months ago
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) ...
is equivalent to

  xs.SelectMany(x => GetYs(x).SelectMany(y => GetZs(y).SelectMany(z => ...)))
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.

koolba · 3 months ago
It is if you’re doing government style work and you want have a job for life creating code that nobody else can read.

Or if you’re in the business of selling extremely wide aspect ratio monitors.

tempest_ · 3 months ago
It is nested sure but the entire thing fits on 1080p monitor

Deleted Comment

77pt77 · 3 months ago
Better make those monitors curved
evantbyrne · 3 months ago
The atomics are goofy, but reactor can often lead to messy code structure when you actually need sequential blocking behavior.
PeeMcGee · 3 months ago
It's very common to see from devs that don't really grasp reactive programming. You often see similar things in Angular projects because of RxJS.
tomashubelbauer · 3 months ago
> .onErrorResume

I dislike Java but if it can get me back to the On Error Resume Next days I might reconsider.

xyst · 3 months ago
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.
hk1337 · 3 months ago
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
tomsmeding · 3 months ago
Looks like callback hell, but in Java. Async/await would solve it, but it's Java.

Deleted Comment

speed_spread · 3 months ago
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.
stefan_ · 3 months ago
Really puts that whole "our wonderful journey" "our incredible team" post into context, haha.

Just another shitty Java middleware that never amounted to anything, 200000 lines of code that don't express even a handful of ideas.

qingcharles · 3 months ago
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.
pimlottc · 3 months ago
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)

0: https://github.com/IRS-Public/direct-file/tree/main/docs/des...

jmisavage · 3 months ago
Found the repo over here if anyone is curious.

https://github.com/IRS-Public/direct-file

Dead Comment

timerol · 3 months ago
Who among us has not accidentally made a new repo as just a submodule pointer instead of actually committing the files? https://github.com/IRS-Public/direct-file/commit/2f3ebd66932...

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.

runako · 3 months ago
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.

gowld · 3 months ago
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.

https://creativecommons.org/public-domain/pdm/

https://creativecommons.org/public-domain/cc0/

globular-toast · 3 months ago
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.

ronbenton · 3 months ago
Favorite quote(s)

>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.

tomhow · 3 months ago

Deleted Comment

timhigins · 3 months ago
> Exempted Code

> 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

dlcarrier · 3 months ago
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.