This is a tidied up re-post of something that I posted on the dev thread "Drupal as a moving Target".
I am someone who nearly had a heart attack when I first found out about this tendency to just drop / change stuff in core api for major version releases. My background is enterprise development so this really did not sit well with me at all and nearly made me back out of our decision to bet the bank on Drupal.
We stuck with it and now, while I fully understand peoples concerns I must say that my initial worries were badly founded and what I initially perceived as a major problem is actually an important positive for the drupal development cycle.
To be clear, my view is a commercial one as the owner of a company who makes money from Drupal via consulting and running our own Drupal sites, not one of a developer or drupal purist!
Overtime the vast majority of software "bloats" by its very nature and if you don't allocate time to revisit software on a semi regular basis it becomes a mass of spaghetti as a result of "tactical" fixes and changes, which complicates development and slows it down.
The real commercial question for me is whether is more efficient to regularly have to go back and revisit code in order to update it to stay in sync with the latest release or whether its better to live with a reduced work rate that exacerbates over time for all developers (our own and the community).
The answer is simple, commercially its better that developers have to revisit old code on a semi regular basis.
As they inevitably improve the way it was written as they have gotten better as developers over time and in a lot of cases their knowledge of drupal has significantly improved.
The other massive benefit is that when they revisit it they will see opportunities to tie in with new modules. At one point CCK and Views were new modules, a lot of people did a lot of work to make sure when they updated for d5 that their modules played nicely with these and we all benefited.
The end result is that as long as you build your processes around the fact that it can and will change you end up with a more efficient internal development environment.
As long as you take a longer term view, there is a net commercial gain as a result of improved software, more rapid adoption of new more advanced methods/modules and more rapid delivery to clients.











