Longer reply is at
Read my comments on the animation.. I don't consider animation
just animating.. To make animations believable you have to do more..
Also its possible in a integrated environment like blender
its possible for the environment to know more about what you are trying to create than a pluggable environment.. For instance you could later associate sounds with lines that a particular actor say, then you could associate the sounds one-to-one with the object that represents the actor, then you could produce an environment that does sound rendering to simulate the reverberations off the walls of the scene to simulate the effect of the sound, and then specify the origin of the sound for the actor, possibly multiple sources, possibly the origin for the low frequency harmonics (say through the skin and bone) and mid frequencies from teh mouth and high frequencies coming from the teeth..
This is a complex problem that is not easily
done on a closed-source plugin system nor with seperate applications
that each do something specific. But, it would
more easily be done in blender because of its overlapped
functional design (I'm not saying it would be very easy to manage,
just that it would be easier to do because it can know more about the internal functionality of the application).
As for the bloat..
There probably should be a distinction made between
"bloated" in terms of usability (too many features,
improper continuity across the interface) and
"bloated" in terms of speed and size..
Blender is about 4 megs in size.. It runs pretty quick
but adding of features won't affect the runtime performance becuase
the way a CPU accesses memory it has access to all registers at once,
you could have a thousand functions and the program could be
designed to run extremely fast dependent on how much of the program is available at any given time..
Try this turn off your virtual memory and run Maya.. I'm sure you will notice a increased runtime efficiency of the program.. This is because
the operating system does some things to allow you to run larger applications, it tries to predict what you will use next. when you do something unexpected, like render, it could slow down the machine
until all the pages for the application and data are swapped into memory.. This has prbably gotten easier over the years, but if you have a 1 gigabyte scene, it may take you a minute more to render the scene
than if you had not used virtual memory at all.. A Minute is enough to frustrate the average user..
Feature bloat is runtime efficiency on the part of the user (causing them to ask a lot, where is that function?). That can be fixed by well design of the interface..
But it doesn't cause a computer to run slow if you program is huge, especially if you turn off your virtual memory, its dependent on how much code is executed to do something useful.. How we battle this is also by thinking carefully now the source is written and reducing the amount of "copy&paste" that we do across the source.. Its okay to copy&paste, its
not okay to copy&paste versus use an external function.. Its also not okay to copy&paste without really understanding what the copy copied code is doing.. It really bloats the sources to copy source everytime you want to do something similar but different, rather than fixing the function
you end up duplicating code that isn't needed but is executed anyhow, probably because one doesn't understand what is being done..
Sorry I have a tendency to use the pronoun "you" and I know that can be quite offensive to some people.. Just substitute "you" with "one" throughout the above.. Wait don't do that..
Really I should do that, because when I do mean "you" I may say something that is completely meaningless..
( I just turned something I said into an example of poor coding practice,
that is just an example of the kind of problem coders make, more because they make a general assumption about the code and are
lazy enough not to deal with it specifically.. But if blender's sources were
well abstracted, methods could be added where "you" has a method
that acauses it to look like "one" when used in a the context of a sentence that is meant to be an example.. In the case of blender, such distinctions are not possible because the data is not aware of itself in and of the environment, nor is the application aware of what might lurk in the data, so it leaves development to be hacked with generalized approaches to
the state of the data and the functionality.. )..
Anyhow to have a trully pluggable environment blender will
need to be better abstracted, either in C or C++, but currently
its not possible, and the only way to add on to the sources is to hack them, so sizable and feature bloat is inevitable.. But execution bloat is avoidable..