This is a touchy subject for cryptographers. The party line is "you should be able to reveal everything except the keys without decreasing the security of your system." If you assume this party line, you'll generally be well received by the cryptography community. However, the real answer is more murky.
The real answer is that revealing any information makes it easier to attack a cryptosystem. For a trivial example, any encryption, no matter how horridly weak, is 100% secure if the adversary cannot get their hands on the ciphertext. You never know when revealing such information might weaken your system, and giving up information is always worse than not giving up information.
That being said, those who develop cryptographic algorithms explicitly strive to minimize how much these leaks provide value to an attacker. As mentioned in the comments, Kerckhoffs’ principle states that a good cryptosystem should be secure against an attacker who knows everything about the system except the key. This is the ideal, not a statement of reality, but modern cryptosystems like AES and SHA-3 do a remarkably good job of getting close to this ideal. A large body work is dedicated to proving that each algorithm is secure against many kinds of attacks directly targeting the "weak points" of the algorithm. This body of work is so vast and thorough that the community generally just says "reveal all the information you want, other than the keys." Their algorithms are good enough to operate in such hostile environments.
There are times where one may elect to keep these details secret. One example is in the military. When the fate of your entire nation may rest on the assumption that the enemy does not know how to break your algorithm, it may be very reasonable to keep the algorithm secret. Of course, you will still want to strive towards an algorithm that fulfills Kerckhoffs’ principle anyway, so that the system is still secure after the physical devices get captured.
The story of the Enigma machine would be an excellent example of this. The Allies went to great efforts to obtain the physical machines so that they could start breaking the codes. However, on the other side of that argument, even when the physical device was finally acquired, it still took a tremendous amount of work to find exploits to break it, so as far as Kerckhoffs’ principle goes, the Enigma did quite well. This shows an example of both policies working well. The Germans kept the algorithm a secret (and thus truly unbreakable for a time), and even when the secret was revealed, the algorithm was still secure.
I think the key line between the two viewpoints is the difference between wanting to use a secure algorithm and wanting to use an algorithm that the enemy has not yet broken. Publishing the extra information (such as the algorithm and IVs) permits civilian exploration of the algorithm, theoretically making it more secure, but it comes with a tradeoff. If your adversary breaks the encryption and chooses not to tell anyone, you aren't aware that it has a weakness, and that can destroy your nation.
If you're a small fry (like the majority on this website), its better to strive to use a secure algorithm. When you start worrying about keeping the algorithm a secret from your enemies, you make the assumption that that secrecy is worth more than the value added by hundreds of trained eyes looking at your algorithm. If you're the NSA, this could actually be a good trade, because you're employing thousands of trained eyes to look at the algorithm. If you're small, it's a bad trade because you may only be able to afford a half-dozen eyes looking at the algorithm. For us small-timers, its better to rely on the community at large's opinion about the security of these algorithms, and the community at large values the kinds of algorithms that don't mind leaking anything but key information.