I often see people saying that certain software is "very opinionated" or that Microsoft tends to write "un-opinionated" frameworks. What does this actually mean?
If a framework is opinionated, it lock or guides you into their way of doing things.
For example: some people believe that a template system shouldn't provide access to user defined methods and functions as it leaves the system open to returning raw HTML. So an opinionated framework developer only allows access to data structures. By design, the software is limiting and encourages the designer into doing things their way.
Another example (taken from the signals link) is that of wiki. The designers of wiki had a lot of opinions. They thought HTML was too complicated for people to write, so they came up with what they felt was a more natural way to update content. They also stripped it of fancy design because they felt the focus ought to be more on content than design.
Apple has strong opinions when it designs its products.
Un-opinionated software design is more like PERL/PHP. It allows the developer and trusts the developer to make the right decisions and puts more control in their hands.
I would also place Microsoft in the non-opinionated column. A good example of a Microsoft framework which is un-opininated: .NET
. By opening the CLR and the specs, it opened it to all sorts of languages and styles of implementations.