What is "Open Language"?
Mark Waddingham
mark at livecode.com
Mon Oct 26 11:27:47 EDT 2015
On 2015-10-26 15:51, Rick Harrison wrote:
> Whenever one deprecates code, it destroys someone’s code somewhere.
> Don’t do it.
Indeed, we have tried and do continue to try our very best not to break
people's code as the platform evolves (even though this is a huge
constraint to put on a programming environment which evolved from
something born in the late 1980's - it makes the assumption that all
decisions taken then and up until were correct then and correct relative
to any future consequence and thus have no forward consequences - which
is definitely not the case).
However, I'm not going to commit us to never deprecating things - we do
and will continue to do so as needed. Deprecated features will continue
to work for as long as it is feasible to do so.
> A work around is to let all previous versions work, and put the final
> winning
> candidate into the dictionary, the others will no longer appear in the
> documentation. This solves the problem with the least disruption as it
> doesn’t break anyone’s code, but helps to streamline the desired future
> syntax for the language.
The problem here is that you are assuming it is possible for 'all
previous versions to work' from now until some arbitrary point in the
future. This just isn't the case - code ages and computer technology
continual renews.
For example, the 'liveResizing' property no longer does anything. Why?
Because Cocoa has no facility to turn liveResizing off.
Similarly, things like the 'pixmapId' properties and such used to allow
you to do really funky things on certain platforms which it was not
possible to continue to make work when we brought the graphics
capabilities up to scratch with other environments in 2.7. (Fortunately,
long before these 'funky things' stopped working we provided a much
better way to have the same effect - i.e. export/import snapshot from
object).
In terms of syntax / synonym related suggestions - then the situation is
much easier. We might deprecate some, just to make it clear what the
'preferred' form is and to discourage further usage. We would never
remove them until such a point that we do have a suitable migration tool
/ method of expressing them which means people can choose to use them,
or not, depending on their own personal preference.
In terms of current functionality (from a semantics point of view) there
are a growing list of 'anomalies' in the bug database which are things
which really aren't 'correct' at the moment (and never have been). It
would be better for all new code and new users if they were not ladened
with the baggage of those things being how they currently are. However,
again, we aren't going to change that functionality until we can
implement a compatibility mechanism meaning you don't have to update old
code.
I suspect the environment you have been bitten by in the past was one
which was hugely monolithic in terms of implementation. They probably
redid the internals with little regard for backwards compatibility
(because it wasn't a viable business avenue for them to be concerned
about it - or they simply did not know how to) to reduce the engineering
burden and to breath new life into it in the modern era (and thus
continue to be viable).
The difference in LiveCode's case is that whilst the entire refactoring
project, widgets and (eventually) Open Language is about turning
something monolithic and hugely constrained into something modular and
open, we are trying to do it in such a way that will ensure existing
code will continue to run.
Warmest Regards,
Mark.
--
Mark Waddingham ~ mark at livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps
More information about the use-livecode
mailing list