I am very fond of the idea of “stateless” code, which may seem strange coming from a person that likes OOP. When I say “stateless”, I am really referring to the fact that no class method should ever have any side-effect. Either it is an explicit set
method, or it shouldn’t affect the output from other methods of the object. Objects should be used as convenient ways of storing/manipulating data in predictable/readable ways.
I’ve seen way too much code where a class has methods which will only work"as expected" if certain other methods have been called first.
Software is a tool. I develop stuff that i know is of interest to companies working with everything from nuclear energy to hydrogen electrolysis and CO2 storage. I honestly believe I can make a positive contribution to the world by releasing that software under a permissive licence such that companies can freely integrate it into their proprietary production code.
I’m also very aware that the exact same software is of interest to the petroleum industry and weapons manufacturers, and that I enable them by releasing it under a permissive licence.
The way I see it, withholding a tool that can help do a lot of good because it can also be used for bad things just doesn’t make much sense. If everybody thinks that way, how can we have positive progress? I don’t think I can think of any more or less fundamental technology that can’t be used for both. The same chemical process that has saved millions from starvation by introducing synthetic fertiliser has taken millions of lives by creating more and better explosives. If you ask those that were bombed, they would probably say they wish it was never invented, while if you ask those that were saved from the brink of starvation they likely praise the heavens for the technology. Today, that same chemical process is a promising candidate for developing zero-emission shipping.
I guess my point is this: For any sufficiently fundamental technology, it is impossible to foresee the uses it may have in the future. Withholding it because it may cause bad stuff is just holding technological development back, lively preventing just as much good as bad. I choose to focus on the positive impact my work can have.