Refactoring and development economy - was: Re: [sldev] sljirastats.com
Linden Metrics Report
Felix Duesenburg
kfa at gmx.net
Sat Apr 19 03:05:50 PDT 2008
Kent Quirk (Q Linden) wrote:
>
> You're proposing the creation of an additional step to the build
> process, to take something out of data and put it into code. We're
> moving much more in the direction of moving things out of code and
> into data. I see that you're trying to draw a bright line between the
> model and view parts of the UI, and there's a certain argument for
> your position -- in stable code. But high quality UI development
> requires lots of iterations. The cycle time for edit/build/test is
> critical to controlling how many shots you get at making it good. In
> that scenario, the more you can do in data without a rebuild, the
> better off you are.
>
> To tie in the other discussion going on right now, we're fully aware
> that the viewer isn't as modular as anyone would like, and that
> there's too much coupling between the various pieces. Some of us are
> working very hard on taking some of that apart right now. I, for
> example, am one of three developers who have been working on
> refactoring the notifications and alerts systems, with the help of our
> UI team and some excellent feedback I got earlier from this list.
>
> We're also doing a lot of work toward making the viewer more and more
> data-driven. For example, the Notifications system is quite a bit more
> flexible now, because we're adding capabilities to the XML file we use
> for localization.
>
> I'm not being authoritarian about this, just trying to express the
> reality of our goals and that I think they're incompatible with what
> you're proposing. As far as I can tell, there's little chance that
> we'll move in favor of moving things into compiled code, especially if
> doing so also requires adding to build time and complexity.
>
> Q
>
And these goals are a crucial thing to learn i.o. to reach any degree of
coherence, thanks for taking the time to clarify. Looking at a mountain
(workload) and trying to figure out where it makes sense to start
digging and where there's bedrock under the surface. No point in being
religious about anything. Still, maybe one more shot at this concrete
step to "make it compatible", and at the broader strategy:
The cycle time is really a strong argument. What I'm trying to find out
is, are we compromising in favour of a more economic development
process, or is a strict separation as taught in the MVC philosophy not
seen as that important when talking about refactoring? If the former is
the case, there is certainly headroom for improving on what was
previously said.
A compromise could be to switch on the custom build step only for
shelling out a new release viewer, and to leave it out while GUI
elements are being developed. I don't foresee a lot of problems/bugs
that could occur only because of that step, because once established it
runs automatic, same as with Bison for the script compiler. I find it
hard to imagine that anyone would prefer to have that ditched as well
for a data driven approach? Although this would enable the possibility
to hook up any programming language with the script engine by finding a
way to describe how it is to be translated into bytecode (current or
mono). No need to recompile... hmmm, /scratching my head if someone
would like to have this, or rather drill a hole into their kneecap than
adding such complexity...
The main point of this now is to shed light on the distinction between
what is/should be flexible for the developer for reaching a better work
economy, and what is/should be mutable/immutable to the end user or
"light developer" (i.e. skinning, customizing the surface only). I don't
think there's an argument that there has to be a certain core which the
user is not to touch, and that strictly ought to be developed with the
goal of stability. What exactly that core comprises is a subject of
discussion and needs to be clearly defined. So I'm wondering if maybe a
design paper already exists that is a bit more concrete than just saying
"we're moving towards a more data-driven approach"? Call me donkey if I
missed a wiki on that. Is anyone possibly thinking of a client/server
architecture in the fashion of the X window system under Linux?
By the way, when starting this I didn't really think of the GUI
initially, and didn't mean to focus on it either. I took my first stab
at the LSL parser and was dealing with keywords.ini there. If I had my
way I'd shoot it and write the definitions into a header, because the
actual collection of keywords and their function in LSL is immutable
outside of development. (I'm contradicting myself with the loadable
bytecode compiler mention above, but that would be a thing of the future
if at all.) Customizable are the colours for the categories in syntax
highlighting, and of course the tooltips that could be translated into
other languages, so those should be going into XML somewhere. As it is,
this flexibility does not exist anyway, and maybe there are similar
situations in other parts of the application. Would that be seen as a
small but worthwhile task in the bigger picture?
Forgive me if I perceive the criticism of "adding complexity" as a
little political in this context... every time a new big feature is
introduced, it adds a lot more complexity than what we're talking about
here :)
Felix
More information about the SLDev
mailing list