[prev in list] [next in list] [prev in thread] [next in thread] 

List:       quanta-devel
Subject:    Re: [quanta-devel] new template ideas
From:       Eric Laffoon <sequitur () easystreet ! com>
Date:       2005-12-27 10:13:53
Message-ID: 200512270213.53753.sequitur () easystreet ! com
[Download RAW message or body]

On Monday 19 December 2005 5:08 pm, Jens Herden wrote:
> > I would also like more from Eric, based on this. I want to base our
> > discussion on your ideas, so we have something concrete that we can
> > modify, extend, discuss, instead of talking in general terms about
> > ideas.
>
> Agreed, but if possible I would like to think now not about the
> implementation details but about what use cases we have, what we want to
> cover with such a system.
>
> Jens

This is a very intersting idea. I want to ponder it and discuss it some more, 
but it's fundamentally different from what I was proposing. That doesn't take 
away from it's merit or interest, though it might be somewhat confusing to 
introduce a lot of stuff at once. What is interesting is the on-the-fly 
nature of this and the ability to set up merging of elements.

Let me reiterate my thinking with templates, which is fundamentally different. 
I'd be open to both and open to ideas integrating into mine too. I'll try to 
relate it to Jens' perspective here to see if it makes more sense to him.

1) Container template - The idea is to have a master "parent" template which 
can accept child templates. So in order to use "object templates" you must 
first have a parent object. It should be easy to take an existing file and 
import it as an object template. This would manage interactions. Note that 
initially I did not conceive that any template dropped onto it would go to 
any location other than where it was dropped, but my idea was that in 
managing relationships it would be aware of where things were in the head of 
the document and such.

2) Child template - When dropping a template on a container it would 
communicate it's requirements to the container along with it's drop request. 
This opens a lot of doors for things that could be done. For instance in a 
very advanced application it could even disallow a drop of templates that 
didn't meet certain requirements and thow an error dialog.

3) Mediation engine - The container template would communicate with rules, 
instructions and requirements with the mediation engine. The actual hard 
coding should be minimal, simply allowing definitions and instructions to 
interact with attributes. In this way a flexible system could be populated 
with basic HTML and CSS management tools, but it could also be used for other 
things like XML databases or PHP and Javascript library management.

3) Template attributes - Containers and child templates would carry their data 
here. A Kommander interface would be generated to manage attributes as they 
are defined by the user for their object system.

First of all this is probably more complex than what would be carried inside 
templates, but it could be. Alternately dot files could be used. This could 
be written in XML or some other readable format that could be accessed by 
other programs.

Now, to distinguish between what Jens proposed and what I proposed. Jens' idea 
is interesting for it's purpose, and may have useful aspects for inclusion in 
my idea. His point about simplicity and not adding anything is valid if your 
objective is a basic and simple tool enhancement. My idea is really a radical 
design departure. It is to be able to use design elements you have now, 
assuming good object oriented design is being used, and gradually transform 
from repetitive work to automating your design decisions. As such I feel it 
warrants a more radical approach. As to whether you can use it in other 
editors... I would only agree to that if it was not imposing a severe 
limitation on what we were trying to do. In this case I think it's up to 
other editors to copy us. This is meant to be a radical departure.

Combined with the above is the ability to group elements. So you could look at 
all containers from a particular root or all containers which use a given CSS 
structure or layout. Clearly this is still open to discuss particular 
details, but the objective in my mind is clear... when you work on a document 
in a word processor you can look at and modify the whole thing. When you work 
on a web site you can only work on one little thing at a time. This is 
because nobody has defined an interface paradigm that works to look at the 
site as a whole and I find that to be a serious deficiency. We need to get 
away from looking at this as an HTML issue like they did with Dreamweaver. We 
got away from looking at just HTML with DTEPs and now we can bring the 
benefits to XML or PHP. Likewise this design concept needs to be just as 
flexible. I have no intention of starting to copy others now. ;-)

Getting back to where something goes on a page, initially I was thinking of 
marking it for where a class would go, such as header, content, script, 
form... Of course this gets more complicated where more than one instance 
could be there. Possibly a syntax for instances would work. It would be 
possible if we drop a child object on a view for it to ask for clarification 
as to the drop point. All of this would be handled by the mediation engine 
and the rules defined for the container and child. As the user works with the 
objects they can open an object attribute dialog and refine it's behavior.

To sum up what I said before, this should be something that can be gradually 
incorporated with existing code and the user should be able to use it as a 
loose framework and optionally develop a very tight environment to handle 
most of the development tasks. Obviously it's easy for them to adopt as a 
framework and very involved to use as the primary design interface, but it 
should transition at their discretion. 

The payoff for the tools that manage these concepts is the ability to extend 
any development model, create cleaner more consistent design work more 
quickly, see the project based on conceptual linkage and most importantly 
reduce development overhead substantially over several months use. I think 
that's worth the trade offs. 

Now to address the aspect of using another editor to develop with... Given 
that our templates are just part of the file system it would still be 
possible to copy and paste snippets into files with any editor. Provided 
these carry identification the only limitation would be how they interacted 
at that time. It would be possible to open the project in Quanta and instruct 
it to rerun the addition of all templates to a given file or tree and have it 
re-process. Even more interesting is that I'd really like to use scripting as 
much as possible for the actual instructions... So it would be possible to 
add a template with another editor and then manually tell a script to run.

At the moment it's 2 am and I'm still recovering from the mad holiday rush, 
but I know there are some really brilliant people on this list when it comes 
to fleshing out details. I can do details better when I'm not so tired. I 
know though that if Andras and Jens and I argue enough that we're all 
moderately happy with the outcome it will be awe inspiring to everyone who 
sees it. ;-)

Eric
_______________________________________________
quanta-devel mailing list
quanta-devel@kde.org
https://mail.kde.org/mailman/listinfo/quanta-devel
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic