http://qs321.pair.com?node_id=1167777


in reply to Re^3: Calling splice() on Immutable Arrays
in thread Calling splice() on Immutable Arrays

I can't say I've ever accidentally modified any data structure I didn't intend to change either. There's a real dog food problem with Readonly; I don't even use it in my own code. But apparently loads of people need to remind themselves not to do the thing they don't want to do. The fact that 350+ modules depend directly on Readonly (or depend on any of the value locking modules, actually) boggles the mind.

Tirade incoming: I only took over the module because it was messing up code I was actually depending on and the original author of Readonly abandoned it a decade earlier. Days after I fixed that one issue, even though I made Readonly exponentially faster and more stable, my pride quickly faded and I started to regret it. I regularly get bug reports for code written for perl 5.6, I get people who want mutable copies of immutable structures, I get people who want automatic toggling for parts of a structure ('elements 3, 5, and 6 should be read-only...') part of the time ('...unless element 3 is true' at lease 3 people in the last few years want that? Why? What's the use case?), I get people who want me to work on making objects of any type immutable (because I can just insert that in MOP and inside-out objects, and blessed structures, etc.), I get people who want values to be deleted but not modified, and on and on... And no one likes to be told 'No.' Mostly I get rage filled messages when I mention dropping support for ancient perls in order to fix things that are otherwise unfixable or when I tell them I can't fix what they think is fixable. If you want to meet the most hateful and vile side of the Perl community or just generally bad programmers, take over a 16 year old module that has 30+ critical bugs that can't be resolved without breaking a good portion of Darkpan. *throws up hands* It's too early in the day to drink... :) Bright side? They've helped get a lot of really stupid edge cases like this one in perl itself fixed.