Way before Eth, the IMF code (and its business brother BMF) is the law. Think the MF is wrong? Open a case and wait a month for the tax code analyst (often a lawyer) to respond with a writeup why your intepretation of written tax code and regs is wrong and the MF is correct.
The source code is actually available, written in a language called 'M'. It's been discussed a few times here on HN before: https://news.ycombinator.com/item?id=25208853 (just to link one example).
How about we just replace the IRS instead? 5% flat VAT tax. No exceptions. No tax breaks. No more tax incentives.
EDIT:
Ope, my original point is a flat tax. I said VAT as I was trying to decide 'what' to tax in my head, and it seems thats what people are latching onto, instead of my three sentences following of "No exceptions".
In general, I like the idea. Couple it with a UBI to protect the poor, and I like it a lot. (The poor pay very little income tax. They would have to pay the VAT. That would hurt them compared to the current system.)
But that won't get you where you say you want to go. Who's going to collect that VAT, and make sure that everybody pays it? The IRS. Your approach would get rid of the tax code, but not the IRS. (In getting rid of the tax code, it would let you get rid of the computer code in question, though.)
The other problem is, you can't implement a "soak the rich" approach with a VAT. And currently, there's a lot of angst around wealth inequality, and most plans to do something about it involve taxing the rich more than everyone else. So your idea is fighting an enormous political headwind.
You could propose something like VAT + income tax for those who make over $1 million/year or something...
> You could propose something like VAT + income tax for those who make over $1 million/year or something...
What did a person making $1m/year do wrong they are penalized unfairly against another person that doesn't? I have a feeling, much like now, all this accomplishes in reality is the rich hire good enough accounts to hide their largest sums from the IRS. That leaves the middle class and poor once again bearing everything... and we're back to where we started. Carving out 0 exceptions and sticking to it ensures that that literally nobody can say they are being treated unfairly.
Well, spin it how you will, but we've had this idea of a "progressive" tax system for quite a while now. ("Progressive" in the sense that those who make more, pay more, presumably because they can afford it more.) Our tax system has been that way for more than a century. So, you can call that "penalized unfairly", and others can call it "paying their fair share", but the reality is that it is the current default option. If you want a different system, you're going to need a lot better argument than "penalized unfairly". You're going to need an argument that can move the majority of voters, most of whom do not make more than $1 million/year.
My previous point wasn't anything about "should", by the way. I was merely saying that, in the current political climate, not hitting the rich harder was something that would make it harder for a VAT-only scheme to become reality.
You're going to need an argument that can move the majority of voters, most of whom do not make more than $1 million/year.
Note that a lot of voters are convinced that they will make $1 million/year some day. Perhaps not today, but some day, and they seem happy to pay more today to ensure that they are not "penalized unfairly" when it's their turn.
This is not necessarily a rational approach, since very few of them will ever earn that much money. But if your goal is to get votes, you can go a very, very long way with "penalized unfairly". Note how many oppose an inheritance tax that they'll never pay, simply by the expedient of dubbing it a "death tax".
The "penalized unfairly" argument wouldn't wash with most economists, but there's not all that many of them. And nobody really listens to them anyway.
VAT is generally considered to be regressive (lower and middle class people tend to spend a larger percentage of their income and therefore are disproportionally affected).
The taxation system reflects our societal values to an extent: tax breaks incentivize some activities and excess taxes disincentivize. Pure VAT disincentivizes spending and rewards wealth hoarding.
A tax system can be regressive and more efficient. The regressivity of a tax system can be offset by benefits, such as UBI, etc. Why is it that Europe has less income inequality and VAT? Because it is offset with a generous welfare state.
European countries also have significantly higher income and other taxes. For example, in Germany, the marginal personal tax rate above 57K euros per year is 42% and the top rate is 45%. In the US, at $100K the marginal rate is 24% and the top marginal rate (above $540K) is 37%. That 8% difference at the top probably explains the income inequality situation moreso than any other difference
I hear this from a lot of Europeans (I am also European), but it’s not really an apples to apples comparison. In the UK for instance we have a higher income tax rate of 40%. The US 37% rate is lower (but also comes in at a way higher threshold). However, in the US you also have state income taxes which range from 0-12ish percent, so your overall tax rate can end up higher
My main experience with taxes in Europe is in Poland, and that second hand from my mother-in-law, mostly.
In the US, a typical tax payer will pay federal income tax, federal medicare and social security payroll taxes, state income tax (which varies a lot by state, but can be much more regressive than the federal income tax), and municipal or county property taxes (usually real-estate, but may also include things like vehicles), and a state+municipal sales tax on purchases. Not to mention various other taxes specific to things like gasoline, alcohol, tobacco, etc, and various usage fees for toll roads, etc.
I'm sure things are similar in Europe in many ways, and different in others, but it can be a little hard to figure out how much I pay in tax total in a year, and I'm hardly an unusual case. All of this to really underline your point that just talking about US income tax is too incomplete a picture for the purpose of comparison.
That is misleading and misses most of the story. A large reason we have cheap global air travel is due to government intervention, research, and military development since the first World War. The U.S. (and other) governments have massively subsidized the development of the aerospace industry for decades and built/funded key infrastructure such as airports. "Rich guys playing with airplanes" is not how the complex system of air travel was created. Hell, the guys who invented airplanes weren't even rich.
> Hell, the guys who invented airplanes weren't even rich.
Sure, the Wrights were not rich. But Bill Boeing was. And Howard Hughes. Donald Douglas got financing to start Douglas. Allan Lockheed pretty much started from scratch. McDonnell developed its passenger jets from scratch.
Airliner travel was a paying concerned because of rich passengers. Flying for ordinary people did not come about until the 1960s.
BTW, jet engines were conceived and developed by private industry, because the government saw no value in them. Until the government saw flying jet aircraft.
P.S. The government airplane project, the Langley Aerodrome, cost something like twenty times what the Wright Flyer did, and simply fell into the Potomac like a sack of wet cement.
> How about we just replace the IRS instead? 5% flat VAT tax. No exceptions. No tax breaks. No more tax incentives.
How about we not? And instead of a some VAT flat-tax nonsense, how about progressive income and wealth taxes with no tax breaks or incentives at the higher brackets?
Now that we've settled that, lets talk about the IRS's software.
Edit:
> EDIT: Ope, my original point is a flat tax. I said VAT as I was trying to decide 'what' to tax in my head, and it seems thats what people are latching onto, instead of my three sentences following of "No exceptions".
> Progressive (numerically) taxes are socially regressive and profoundly unjust.
What do you mean, exactly? My intuition tells me the definitions you're assigning to "socially" and "unjust" would prove to be peculiar after being unpacked.
The elite don't pay taxes the same as everyone else, this is largely true throughout history.
(Numerically) progressive taxes are a tool by the elite to enact unjust regressive tax structures on the middle and upper-middle class to prevent them from rising to their level.
The goal is to make sure that doctor making $300k never gets all uppity so that his grandkids start challenging the status quo.
I'm not seeing much action, but this is one area where Biden has the right talk. The rich (define north of $500k/yr) can play games. Here's two off hand I know in my circle:
- a family has non-trivial assets and income in three states but for federal and tax purposes they live in TN where's there's no state tax. The other two states are def not cheap compared to TN. This was setup by buying a house and having a part time job in TN for about 1 year to establish bonafide residency much of which stopped once gained
- business owner takes annual trip to Florida for business training with board/ management. That's a write off. But with some fancy accounting the owner smiles saying once they open the meeting with lunch, they left and spent the rest of week playing golf.
Whether the company or individual the rich guys are taxed less than me.
The bottom 40% (??) don't pay much either.
That leaves the upper middle class to foot a lot of the hill. Well I'm calling BS on that.
So you want to cause the greatest impact to those who spend the largest portion of income, rather than invest? This is frankly a terrible policy proposal and would only serve to harm the least well off. Leave it to Silicon Valley types who make a large enough fortune to retire by 40 to not understand the needs of those less well off.
Wealthier people would love it. This was a pretty popular conservative tax proposal back in the 1980s or so. (Actually a flat VAT tax is even more regressive than a flat tax generally.)
If we can dream of reforming the whole system, how about a voluntary tax in exchange for a governance stake? Like, the more tax I pay, the more say I have in the decisions my government makes?
Yep, plutocracy in the open without loopholes, lobbying and corruption. Just directly weigh the votes by the amount of participation to the common pot.
In my opinion, I think a completely voluntary tax system is what we have to achieve as a race to get to the next level as a civilization. I think a flat tax is a step in the right direction because it eliminates an entire swath of corruption.
What about instead, make voting rights a promisory note which can be traded and sold?
Eg, "My share of the House Rep vote from this Friday until next Tuesday" can be traded until "This Friday" for a "Burger" at Double Burger, or maybe some cash.
Sure if you want an even more contorted version of corporate America and to disenfranchise even more poor voters. I'm all for changing up the rules because there are plenty of problems but handing the government to the highest bidder sounds like a big step in the wrong direction
Its not that I disagree, I think the VAT is much better than an income tax; but that has nothing to do with the IRS. The IRS would still have to administer the collection of tax revenue.
While I strongly disagree with the rest of the comment, I also am furiously in support of getting rid of all credits, deductions, exemptions, incentives, and so on.
I think we need a VAT at the federal government level but we also need to increase the federal income tax on everyone. I would like this tax hike to pay for Medicare for all.
Problem is that over sixty percent of the people seem satisfied with the current status of healthcare. Also I imagine they tend to vote in higher proportion than people like me. I have no idea how to fix this situation. Anyone have any thoughts?
I used to be vehemently in favor of medicare for all. I still see all the many problems in the American healthcare system I ever did, but I don't want medicare for all anymore. My faith in our political system and its authoritarian impulses makes the thought of our government having a monopoly on healthcare unacceptable to me.
As someone who has been on both sides of this issue, I think this is common. It isn't about loving the private insurance companies--everyone knows they suck--it's about trusting that the government solution will be better. With our government, can you honestly and with full confidence say it would be? My confidence totally flipped. I'm more confident it would be a disaster than not and then would be weaponized politically.
"I will replace you with a small shell script".
We only need taxes because of government. How about a law that shrinks the size of all governmental budgets and personnel by 3% every year until we decide to stop? We'll make do, I promise. Then our taxes naturally go down.
"Coded in assembly language 59 years ago, the IMF seems small, at 200,000 lines of code. But the nature of assembler is that each line does a lot. Somehow replicating the logic in a more contemporary language has resisted efforts dating back a couple of decades."
Considering that average IQ has been dropping for decades in developed countries, one has to begin wondering if we are even capable of building code or infrastructure as well as they did 50-70 years ago
The part that was shocking to me but shouldn't have been was the rationale for not using what sounds like a transpiler from Kennedy era Assembly to Java:
> White added, “The Java that was created by the automatic tool [Wang’s process] looked a lot like the ALC. However, it’s not the kind of thing where we could hire a journeyman Java programmer off the street, and give it to him or her and and have that person be able to really understand what it was doing.” IRS, he said, in effect would have replaced code it can still deal with, with code no one could.
I can't tell if you're being sarcastic or not. I figured transpiling would get you something that's at least black box testable using modern techniques. Then you start incrementally converting bits of it into idiomatic Java, adding more and more tests as you go. So it didn't seem like madness? But I've never done such a thing before, and am guessing there are a zillion problems with that approach. Not least that it would require an organizational commitment to stick with the conversion. Stop halfway through and sure you've got the opaque spaghetti they were worried about.
Not being sarcastic. They have working code and a staff of engineers that understand it currently. Transpiling it migrates the code to an intermediate state that no one understands, so why do that if you have to rewrite it again anyway?
> Not being sarcastic. They have working code and a staff of engineers that understand it currently. Transpiling it migrates the code to an intermediate state that no one understands, so why do that if you have to rewrite it again anyway?
If you have engineers that understand the old code, couldn't they just continue to maintain it in that form and transpile it until it's converted to idiomatic Java?
So what does the transpiling get you in that world? You can already run the old code on modern hardware (per tfa) and you already have people who understand the existing assembly to help do a rewrite...
> So what does the transpiling get you in that world? You can already run the old code on modern hardware (per tfa) and you already have people who understand the existing assembly to help do a rewrite...
Basically what the ancestor comment enumerated. It basically allows for a more conservative and incremental approach to rewriting things, since it would give you the ability to mix old and new code.
It seems like they plan to do some parallel testing, but if they used the transplier (and it was correct), they could probably do that at a much lower level (e.g. run both functions in parallel in PROD but only use the "old" functions results, log any discrepancies, you know you're done when there haven't been any for a while).
"Excellent" engineering management for sure. Politically adept, sounds right to both business and technical minded folks. Sensible. And doomed.
> However, it’s not the kind of thing where we could hire a journeyman Java programmer off the street, and give it to him or her and and have that person be able to really understand what it was doing
A kind of false equivalency. You can't hire a "journeyman (any) programmer off the street" and have them understand the IMF or ALC. Or any complex app.
> IRS, he said, in effect would have replaced code it can still deal with, with code no one could
So don't do that. Keep the IMF source code and translate it or run on an interpreter. But - they don't want to do that! They are just beating around the bush saying they want a clean-sheet design. OK, then say that.
From the article:
> teams identify what it’s doing and document the rules. Then it gets passed to an architecture and design team that includes "very senior Java developers"
Doomed.
You could take the existing code, refactor it a piece at a time into more procedural code in a higher level language and make it more maintainable. If you try to reverse from assembler into OOA/OOD style requirements and patterns in one step and then implement it top-down. Everything by committee. Doomed.
> A kind of false equivalency. You can't hire a "journeyman (any) programmer off the street" and have them understand the IMF or ALC. Or any complex app.
That's true, but it's way easier to hire people to write in a language that's widely used and has other career opportunities. A language on life support isn't going to be attractive to the vast majority of programmers and with government pay so much lower than industry, low pay + dead end skills makes it very hard to hire. It's not like the engineering leader in charge of this project can just go ask for more budget to hire some rockstar engineers to knock this out, they're stuck with congressionally defined pay scales. So what they're doing is building their architecture and process around their organizational constraints. That's really good engineering management.
Oh, I agree it's good to have picked a modern language. And yes, I agree with doing it in a proper idiomatic style as opposed to java-in-name-only-basically-still-assembly. But the way they made the argument was disingenuous, I suspect expertly political.
No way could they hire engineers "off the street" and understand it right away, that's BS. They say that Wang's method couldn't do this, but slyly imply theirs can. That's what's false.
I think this is politics for "if we say clean-sheet re-implementation it sounds scary".
The problem is that it is and should be scary and instead of papering over it with cleverly packaged and admirable goals, they should come up with a real plan to do it. That's what makes me think, well excellent politics and strategy, but not-so-expert engineering and technical management.
I actually picked up an old book on os/360 assembler at a library sale some years ago. Back in those days assembler was the what applications were coded in. Some of the airlines had their reservation systems in it until fairly recently. It’s not bad so far as assemblers go.
Bad memories of JCL. An IBM mainframe at college, late 70s, and only a few guys that hung around the keypunch room knew the secret incantations. SYSIN DD *
I once worked on a project to convert 200,000 lines of Fortran to C. Mostly F77 with some F4. Fortran and F4, especially in control-flow, is a fairly primitive language. 200K F77 is probably around the same size and complexity of 200K lines of IBM assembly. Computed GOTOs and other constructs that cannot be directly transformed to "structured" code flow. You can jump into and out of the middle of loops or subroutines.
We looked at a F2C compiler process. This would have been exactly analogous to the Wang method. It produced working "C" code, but it was unreadable implementation-level gobbledy-gook. But we, like the IRS, wanted to maintain this product forward in the target language "C", as if it had been originally written in it, if possible.
What we did worked extremely well. It took a bit over 3 man years with about two people.
#1 - we had test cases. And if there was code that the test cases didn't hit we added it first. The IRS has a few hundred million returns a year and could easily make, say every return for the last 10 years, into a "pretty exhaustive" test suite.
#2 - we did an incremental approach. We did NOT convert the F4/F77 into requirements and then do a clean-room top-down re-implement. It would never have worked. We arranged the system so we could run the program with the original F4/F77 and new C in parallel. We replaced one Fortran procedure with C at a time while keeping the test cases working.
In assembly, even the definition of a procedure can be nebulous. But what you do is discover the 10-20 idioms of the assembly procedures, functions, reuse, etc. and tease out how to replace with "C" or ???
If this is a big issue, use either IDA Pro or Ghidra. If they don't support IBM assembly, then that's the first subcontract you let.
#3 - My partner was fastidious. Instead of the test cases simply passing, he added the self-imposed restriction of bit-identical outputs. It took work but it was possible.
One function/procedure at a time, one line at a time, the system was converted from old to new. All the time it produced bit-identical outputs for all tests. In the IRS case, the test cases should be every return ever processed yields bit identical results.
#4 once the last F4/F77 was removed, any C that was not idiomatic C was lifted and rewritten in a normal procedural style. Stuff like weird state machines to simulate computed GOTOs and non-structured code. This refactoring, again, was bottom up and was tested to bit identical results of all tests (which is kind of excessive!)
At the end we had a maintainable "high-level" language (C, yes, yes HN) exact equivalent.
This is the kind of task where rigor and bottom up is precisely what is needed and is actually much more effective.
Someone should do an FOIA act to get the source and then do a nice dissertation or senior project to do this and produce maintainable Java (and/or something nicer). I find the timeframe and budget the IRS proposed to be ridiculous and the odds of success negligible. A good hacker or two could do this with a 100th the resources.
Epilogue: I believe this process was completed about 15 years ago. Since then, the system remains in constant heavy use. There have been exactly ZERO bugs due to the conversion. We later moved the system from an antique RISC environment to x64 Linux. This exposed 2-3 bugs due to word length and endian-ness, that process (since it was already standard C) took one person about 3 months.
76 comments
[ 2.9 ms ] story [ 139 ms ] threadThe source code is actually available, written in a language called 'M'. It's been discussed a few times here on HN before: https://news.ycombinator.com/item?id=25208853 (just to link one example).
* https://en.wikipedia.org/wiki/Hercules_(emulator)
Not sure how hard it is to get the system software.
There are other ways to get time on one, including via IBM in an 'online course' of sorts:
* https://mainframenation.com/mainframe/how-to-get-a-mainframe...
Sounds like a feature
Each and every line written by whoever the lowest bidder managed to hire to do it.
EDIT: Ope, my original point is a flat tax. I said VAT as I was trying to decide 'what' to tax in my head, and it seems thats what people are latching onto, instead of my three sentences following of "No exceptions".
But that won't get you where you say you want to go. Who's going to collect that VAT, and make sure that everybody pays it? The IRS. Your approach would get rid of the tax code, but not the IRS. (In getting rid of the tax code, it would let you get rid of the computer code in question, though.)
The other problem is, you can't implement a "soak the rich" approach with a VAT. And currently, there's a lot of angst around wealth inequality, and most plans to do something about it involve taxing the rich more than everyone else. So your idea is fighting an enormous political headwind.
You could propose something like VAT + income tax for those who make over $1 million/year or something...
What did a person making $1m/year do wrong they are penalized unfairly against another person that doesn't? I have a feeling, much like now, all this accomplishes in reality is the rich hire good enough accounts to hide their largest sums from the IRS. That leaves the middle class and poor once again bearing everything... and we're back to where we started. Carving out 0 exceptions and sticking to it ensures that that literally nobody can say they are being treated unfairly.
My previous point wasn't anything about "should", by the way. I was merely saying that, in the current political climate, not hitting the rich harder was something that would make it harder for a VAT-only scheme to become reality.
Note that a lot of voters are convinced that they will make $1 million/year some day. Perhaps not today, but some day, and they seem happy to pay more today to ensure that they are not "penalized unfairly" when it's their turn.
This is not necessarily a rational approach, since very few of them will ever earn that much money. But if your goal is to get votes, you can go a very, very long way with "penalized unfairly". Note how many oppose an inheritance tax that they'll never pay, simply by the expedient of dubbing it a "death tax".
The "penalized unfairly" argument wouldn't wash with most economists, but there's not all that many of them. And nobody really listens to them anyway.
The taxation system reflects our societal values to an extent: tax breaks incentivize some activities and excess taxes disincentivize. Pure VAT disincentivizes spending and rewards wealth hoarding.
In the US, a typical tax payer will pay federal income tax, federal medicare and social security payroll taxes, state income tax (which varies a lot by state, but can be much more regressive than the federal income tax), and municipal or county property taxes (usually real-estate, but may also include things like vehicles), and a state+municipal sales tax on purchases. Not to mention various other taxes specific to things like gasoline, alcohol, tobacco, etc, and various usage fees for toll roads, etc.
I'm sure things are similar in Europe in many ways, and different in others, but it can be a little hard to figure out how much I pay in tax total in a year, and I'm hardly an unusual case. All of this to really underline your point that just talking about US income tax is too incomplete a picture for the purpose of comparison.
Sure, the Wrights were not rich. But Bill Boeing was. And Howard Hughes. Donald Douglas got financing to start Douglas. Allan Lockheed pretty much started from scratch. McDonnell developed its passenger jets from scratch.
Airliner travel was a paying concerned because of rich passengers. Flying for ordinary people did not come about until the 1960s.
BTW, jet engines were conceived and developed by private industry, because the government saw no value in them. Until the government saw flying jet aircraft.
P.S. The government airplane project, the Langley Aerodrome, cost something like twenty times what the Wright Flyer did, and simply fell into the Potomac like a sack of wet cement.
How about we not? And instead of a some VAT flat-tax nonsense, how about progressive income and wealth taxes with no tax breaks or incentives at the higher brackets?
Now that we've settled that, lets talk about the IRS's software.
Edit:
> EDIT: Ope, my original point is a flat tax. I said VAT as I was trying to decide 'what' to tax in my head, and it seems thats what people are latching onto, instead of my three sentences following of "No exceptions".
That doesn't improve your point as much as you think it does. It's still the kind of tax proposal that the wealthy put out because it's friendly to them (e.g. https://en.wikipedia.org/wiki/Steve_Forbes#Campaigns_for_pre...).
What do you mean, exactly? My intuition tells me the definitions you're assigning to "socially" and "unjust" would prove to be peculiar after being unpacked.
(Numerically) progressive taxes are a tool by the elite to enact unjust regressive tax structures on the middle and upper-middle class to prevent them from rising to their level.
The goal is to make sure that doctor making $300k never gets all uppity so that his grandkids start challenging the status quo.
- a family has non-trivial assets and income in three states but for federal and tax purposes they live in TN where's there's no state tax. The other two states are def not cheap compared to TN. This was setup by buying a house and having a part time job in TN for about 1 year to establish bonafide residency much of which stopped once gained
- business owner takes annual trip to Florida for business training with board/ management. That's a write off. But with some fancy accounting the owner smiles saying once they open the meeting with lunch, they left and spent the rest of week playing golf.
Whether the company or individual the rich guys are taxed less than me.
The bottom 40% (??) don't pay much either.
That leaves the upper middle class to foot a lot of the hill. Well I'm calling BS on that.
Eg, "My share of the House Rep vote from this Friday until next Tuesday" can be traded until "This Friday" for a "Burger" at Double Burger, or maybe some cash.
While I strongly disagree with the rest of the comment, I also am furiously in support of getting rid of all credits, deductions, exemptions, incentives, and so on.
I think we need a VAT at the federal government level but we also need to increase the federal income tax on everyone. I would like this tax hike to pay for Medicare for all.
Problem is that over sixty percent of the people seem satisfied with the current status of healthcare. Also I imagine they tend to vote in higher proportion than people like me. I have no idea how to fix this situation. Anyone have any thoughts?
As someone who has been on both sides of this issue, I think this is common. It isn't about loving the private insurance companies--everyone knows they suck--it's about trusting that the government solution will be better. With our government, can you honestly and with full confidence say it would be? My confidence totally flipped. I'm more confident it would be a disaster than not and then would be weaponized politically.
You can get rid of the IRS the day after you get rid of the rich.
Considering that average IQ has been dropping for decades in developed countries, one has to begin wondering if we are even capable of building code or infrastructure as well as they did 50-70 years ago
https://ourworldindata.org/intelligence#by-country
> White added, “The Java that was created by the automatic tool [Wang’s process] looked a lot like the ALC. However, it’s not the kind of thing where we could hire a journeyman Java programmer off the street, and give it to him or her and and have that person be able to really understand what it was doing.” IRS, he said, in effect would have replaced code it can still deal with, with code no one could.
That's good engineering management right there.
If you have engineers that understand the old code, couldn't they just continue to maintain it in that form and transpile it until it's converted to idiomatic Java?
Basically what the ancestor comment enumerated. It basically allows for a more conservative and incremental approach to rewriting things, since it would give you the ability to mix old and new code.
It seems like they plan to do some parallel testing, but if they used the transplier (and it was correct), they could probably do that at a much lower level (e.g. run both functions in parallel in PROD but only use the "old" functions results, log any discrepancies, you know you're done when there haven't been any for a while).
> However, it’s not the kind of thing where we could hire a journeyman Java programmer off the street, and give it to him or her and and have that person be able to really understand what it was doing
A kind of false equivalency. You can't hire a "journeyman (any) programmer off the street" and have them understand the IMF or ALC. Or any complex app.
> IRS, he said, in effect would have replaced code it can still deal with, with code no one could
So don't do that. Keep the IMF source code and translate it or run on an interpreter. But - they don't want to do that! They are just beating around the bush saying they want a clean-sheet design. OK, then say that.
From the article:
> teams identify what it’s doing and document the rules. Then it gets passed to an architecture and design team that includes "very senior Java developers"
Doomed.
You could take the existing code, refactor it a piece at a time into more procedural code in a higher level language and make it more maintainable. If you try to reverse from assembler into OOA/OOD style requirements and patterns in one step and then implement it top-down. Everything by committee. Doomed.
That's true, but it's way easier to hire people to write in a language that's widely used and has other career opportunities. A language on life support isn't going to be attractive to the vast majority of programmers and with government pay so much lower than industry, low pay + dead end skills makes it very hard to hire. It's not like the engineering leader in charge of this project can just go ask for more budget to hire some rockstar engineers to knock this out, they're stuck with congressionally defined pay scales. So what they're doing is building their architecture and process around their organizational constraints. That's really good engineering management.
No way could they hire engineers "off the street" and understand it right away, that's BS. They say that Wang's method couldn't do this, but slyly imply theirs can. That's what's false.
I think this is politics for "if we say clean-sheet re-implementation it sounds scary".
The problem is that it is and should be scary and instead of papering over it with cleverly packaged and admirable goals, they should come up with a real plan to do it. That's what makes me think, well excellent politics and strategy, but not-so-expert engineering and technical management.
Past Technical Lead, "Don't bother w/ creating the JCL, copy it from <this job>"
We looked at a F2C compiler process. This would have been exactly analogous to the Wang method. It produced working "C" code, but it was unreadable implementation-level gobbledy-gook. But we, like the IRS, wanted to maintain this product forward in the target language "C", as if it had been originally written in it, if possible.
What we did worked extremely well. It took a bit over 3 man years with about two people.
#1 - we had test cases. And if there was code that the test cases didn't hit we added it first. The IRS has a few hundred million returns a year and could easily make, say every return for the last 10 years, into a "pretty exhaustive" test suite.
#2 - we did an incremental approach. We did NOT convert the F4/F77 into requirements and then do a clean-room top-down re-implement. It would never have worked. We arranged the system so we could run the program with the original F4/F77 and new C in parallel. We replaced one Fortran procedure with C at a time while keeping the test cases working.
In assembly, even the definition of a procedure can be nebulous. But what you do is discover the 10-20 idioms of the assembly procedures, functions, reuse, etc. and tease out how to replace with "C" or ???
If this is a big issue, use either IDA Pro or Ghidra. If they don't support IBM assembly, then that's the first subcontract you let.
#3 - My partner was fastidious. Instead of the test cases simply passing, he added the self-imposed restriction of bit-identical outputs. It took work but it was possible.
One function/procedure at a time, one line at a time, the system was converted from old to new. All the time it produced bit-identical outputs for all tests. In the IRS case, the test cases should be every return ever processed yields bit identical results.
#4 once the last F4/F77 was removed, any C that was not idiomatic C was lifted and rewritten in a normal procedural style. Stuff like weird state machines to simulate computed GOTOs and non-structured code. This refactoring, again, was bottom up and was tested to bit identical results of all tests (which is kind of excessive!)
At the end we had a maintainable "high-level" language (C, yes, yes HN) exact equivalent.
This is the kind of task where rigor and bottom up is precisely what is needed and is actually much more effective.
Someone should do an FOIA act to get the source and then do a nice dissertation or senior project to do this and produce maintainable Java (and/or something nicer). I find the timeframe and budget the IRS proposed to be ridiculous and the odds of success negligible. A good hacker or two could do this with a 100th the resources.
Epilogue: I believe this process was completed about 15 years ago. Since then, the system remains in constant heavy use. There have been exactly ZERO bugs due to the conversion. We later moved the system from an antique RISC environment to x64 Linux. This exposed 2-3 bugs due to word length and endian-ness, that process (since it was already standard C) took one person about 3 months.
FWIW, parallel development sucks and likely to fail, but I've not seen another strategy work at all.