What's good enough for you?
And the rule that so many people miss is:
What's good enough for you?
The answer varies wildly and in the same way that a county of libraries and schools don't all need expensive Cisco switches on every site, you often don't need too much complexity, or top-end software or huge expensive products to get a job done.
I get asked by people who work in IT (but not schools) why the schools I've worked for don't "just run Exchange", for example. They could. But they don't need it. So they don't have it. Their email is covered. Their calendaring is non-existent or very specialist. The other features they wouldn't understand, let alone use. And by the time you set it all up, what you've actually "saved" (in terms of some poor sod not having to make up a calendar or appointments once in a blue moon) is actually chicken-feed next to the overall cost of implementation.
There are some things where you can just say "Why?" and do it yourself quicker or cheaper than the original solutions because you just don't know if it will work, be used, have value, etc. Sometimes, yes, they expand and you find yourself having to migrate to a bigger product anyway, but a lot of the time the system deployed is perfectly adequate or nobody even uses it and thus it's cheaper to keep it running and/or throw it in the bin.
I put a Linux server into some of my schools - the initial reason often differs but I've put them in for everything from web-caching (overloaded external lines due to no decent on-site caching), web-filtering, or even just things like internal web-serving without having to deploy IIS.
Sometimes they weren't sure about it, but the reason it was put in varied and I clearly stated "this is a test" - a free test to see if the feature they demand is what they want, works how they want, can be done more cheaply than existing products, will be used, etc. They are free to say it's inadequate if they can show it is (and, hell, then I'll be the first to rip it out and replace it with something else because that means PROGRESS).
And in more schools that not, years later the "free test" server (usually some old office machine or spare server) is still running and doing the job it was deployed for AND MORE. Because it ends up being just that useful to warrant its continued existence but not unsuitable enough to warrant changing it for a piece of hardware dedicated to that purpose with support, etc. Hell, in one school I was given the job of making their "network go faster" and in the first week tripled their Internet speeds (measured by the Head using Speedtest, because he was obsessed with it) in the middle of the day just by some transparent proxy/caching. If the box broke, or there was a problem, I demonstrated how taking the "in" Ethernet and the "out" Ethernet out of the machine, throwing the machine away, and joining them with a connector made everyone else carry on working exactly how they always had (and, thus, we could just throw it away if it was a problem).
When I upgraded the machine three years later (without a single day of downtime), the connector was still in the same "dust shadow" on the top of the machine. It was even "good enough" to deploy more services and more things on it - some of them got used, some of them didn't, some of them were useful, some of them weren't, some of them were better than a commercial equivalent, some weren't.
Anyone who just spends a fortune on something, deploys it, and doesn't do small scale tests to see if they even NEEDED it first isn't really doing their job. The best way is to build an in-house, temporary solution and see how far you get. If you can't get the results that you DEFINITELY get with a better product, buy the product - you've proved it's worth having. If you get results similar to it or better, why bother to change from in-house? You've proved your own solution is better.
"Good enough". It's said like it's a bad thing, if you say it wrong, but it means the exact opposite. I wish my bank account were "good enough" for the things I wanted to do. My current school has a Mediawiki Intranet. It's "good enough" that it hasn't changed in years, and we haven't bothered to trial any alternatives. It has a IT ticket system. It's "good enough" that it hasn't changed in years, and we haven't bothered to trial any alternatives. It runs all sorts of things that we would have had to buy, but a quick test of something in-house, custom-made or just open-source etc. was often "good enough" that we don't bother to go any further.
Sure, there are advantages depending on your scale and business to having outside support, or being able to hire people instantly familiar with the products you're using, etc. But for most stuff, an in-house or even a cheaper solution is "good enough", so why spend money on something that won't provide tangible benefits over that "good enough" solution? Even if you have to throw it out when the guy leaves and put in something else because you can't replicate his solution, surely that's saved you years of licensing and support that you would otherwise have had to pay for? And if his solution wasn't "good enough" while he was there, you should have been replacing it/him anyway.
Most small businesses do not need Oracle, Cisco or even Microsoft. They just don't. You can point out flaws, support issues or whatever else but the fact of the matter is if they are happy and the system is good enough for them, why not use it? Why spend money you don't have to? If they have to take contingency and staffing skills into account, they will, it still doesn't mean it's not better to have some solution for X amount of years before they determine they NEED something more. It's just saved them X years of support, licensing, maintenance, training, etc.
It's a disease rife within the upper echelons of IT where people who deal with millions of desktops tell people who have a few hundred what they "should" be doing. You can normally spot them by the way they have no consideration of buying extra licenses or vast systems. Some things just don't scale. And a bodge in an SQL script to save hours of database time for a one-off (or even only occasional) query? Yeah, I'll take that bodge, please. If it works adequately, I have no need to do anything else. If it doesn't, well I've cut out some of the work in the meantime and will have to do EXACTLY what I would have needed to do anyway - go find a better solution. Even if it only works for a week - that's an extra week I can spend researching and testing alternatives.
Guess what? I object to paying for an SQL Server license and CAL's just to run a piece of access control software that stores a few hundred entries a day of an ID card number and door number, or something fires up the school boilers at 6am each day. EVEN if I already have an SQL Server doing other things. And especially when they have the option to use a MySQL database or whatever instead (currently have one piece of access control software that uses FireBird as an internal SQL server if you don't have one of your own - works perfectly and with the right software you can query it like it was any other remote database using standard SQL).
I have several MySQL instances for various things, I have cron scripts giving my scanners a helping hand to archive scanned documents (the scanners don't have such functionality, so I have them save scans to a server, which copies them to the right destination and archives them for my purposes too - sure we have one huge expensive photocopier that's capable of doing that itself too, but it's easier to tie it into the same system that even the featureless scanners can benefit from), I have fax-to-email gateways run by scripts on a Linux server (when I could just buy a proper fax add-on for the telephony system we have, but that's expensive and a USB-56k fax modem was much cheaper and more powerful, even with the software setup), I have all sorts of similar time-saving, money-saving and effort-saving tricks running.
Good enough for myself, my employers and my purposes might not be good enough for you. But that's not your decision. It might have flaws, but they might not affect my usage. And it may not be ideal, but that depends on how much money and in-house support rather than journeys through phone menus contributes to your vision of "ideal".
And, at worst, I have to do what you'd like me to anyway. If it buys me a year of having to do that, that's a year spent on other things (both intellectually and financially) - maybe I spend the money saved on the "proper" solution for something much more vital and expensive, for instance!
The only question is "What is good enough?".