That said, I basically agree with you. If you have specific expectations of whoever uses your code, you should absolutely pick a license that requires the behaviors you want. (With the understanding that fewer people may use your code as a result.)
You speak of academic code, and precisely some projects require (or at least ask for) citations in their license file if use in a research context.
Incorrect. See clause 4, especially 4.c.
https://www.apache.org/licenses/LICENSE-2.0.html#redistribut...
> c. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
In the case of WinGet attribution was theoretically not required because the code was not copied directly, so a copyright license was not needed and the Apache License did not come into play. (Of course if AppGet's creator had Microsoft-level lawyering available, he could quite possibly persuade a court that copyright infringement did occur.)
But the Apache License 2.0 absolutely does require acknowledgment!
Of course you can copy someone's design and not acknowledge it unless it's patented. You're going to be a dick then, not a criminal.
Of course if your goals are different it is the wrong license, but that isn't the fault of the license or Microsoft from using it as intended.
Note, I have not read the apache license in a while. I might not have the exact details of what it encourages wrong. The point should stand anyway.