For many years standardization
and uniformity have ruled the day concerning application
interfaces. Other than
some level of appearance and limited functionality customization,
programmers have had to learn
to
work within the confines of what they are given. For example, if
a ListView object does 90% of what they want but 10% differently, they
will either have to learn to adapt or use something else. They
are also not
given access
to source code or other resources that might better help them
understand what
their tools are capable of or how to even use them.
From the
ground up Vision has
been designed purely as an engine with no specific interface design
elements (windows, buttons, menus, etc) built into it. All of the
interface objects and interface code can be customized by the
programmer at
runtime. This means that programmers are not restricted
to using any one set of interface designs and objects. They can
use any set
that they have available to them and even use them in conjunction with
each other. A
programmer or designer can even produce their own custom interface
objects and
choose to keep them for private use or make them available to
others. No longer are programmers restricted to designing
application interfaces to fit within the tools but they can now tailor
the interface specifically to the application. Now they
can take
advantage of 90% of the ListView's functionality and override or add
the remaining 10% that their specific application needs.
This
kind
of a system lends itself very greatly towards open source code
repositories where maintainers publish a standard set of code and
accept bug fixes/feature additions pending evaluation and
testing. Vision was built with this kind of open source
"middleware"
system in mind because one of the best ways to learn how to use a
system and understand how it works is to be able to see its source
code. However, commercial middleware development can still exist
and any portion of a middleware module can be either closed or open
source. Even though middleware modules can potentially be closed
source
they can still still be extended and customized by using Objective-C
language features such as subclassing and message overriding.
For many years standardization and uniformity have ruled the day concerning application interfaces. Other than some level of appearance and limited functionality customization, programmers have had to learn to work within the confines of what they are given. For example, if a ListView object does 90% of what they want but 10% differently, they will either have to learn to adapt or use something else. They are also not given access to source code or other resources that might better help them understand what their tools are capable of or how to even use them.
From the ground up Vision has been designed purely as an engine with no specific interface design elements (windows, buttons, menus, etc) built into it. All of the interface objects and interface code can be customized by the programmer at runtime. This means that programmers are not restricted to using any one set of interface designs and objects. They can use any set that they have available to them and even use them in conjunction with each other. A programmer or designer can even produce their own custom interface objects and choose to keep them for private use or make them available to others. No longer are programmers restricted to designing application interfaces to fit within the tools but they can now tailor the interface specifically to the application. Now they can take advantage of 90% of the ListView's functionality and override or add the remaining 10% that their specific application needs.
This kind of a system lends itself very greatly towards open source code repositories where maintainers publish a standard set of code and accept bug fixes/feature additions pending evaluation and testing. Vision was built with this kind of open source "middleware" system in mind because one of the best ways to learn how to use a system and understand how it works is to be able to see its source code. However, commercial middleware development can still exist and any portion of a middleware module can be either closed or open source. Even though middleware modules can potentially be closed source they can still still be extended and customized by using Objective-C language features such as subclassing and message overriding.