Re: an outsiders view

"Wim Niemans" <[email protected]> Mon, 19 Dec 2005 12:42:22 +0100
Newsgroups gmane.comp.lib.binarycloud.devel
Organization Pb Solo
Message-ID <43A6AAAE.6875.8BF410@localhost>
--===============1189654493==
Content-type: text/html; charset=US-ASCII
Content-transfer-encoding: 7BIT
Content-description: Mail message body

<?xml  version="1.0" ?><html>
<head>
<title></title>
</head>
<body>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New" color="#7f0000"><span style="font-size:10pt">&gt; one could do:</span></font></div>
<div align="left"><font face="Courier New" color="#7f0000"><span style="font-size:10pt">&gt;</span></font></div>
<div align="left"><font face="Courier New" color="#7f0000"><span style="font-size:10pt">&gt; $related_node = $this-&gt;getRelatedNode('../someid');</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">Wim, do you have any input here?</span></font></div>
<div align="left"><br/></div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">Well, yes. I could have something to say.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">As we discussed, Bas, I've got a version of Node where all 
redundant code is removed: Caching, Navigating, Creating.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-: I deleted Caching since it is a bare copy of Smarty Caching.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-: I've developed a NodeFactory to encapsulate the tree creating 
process. Nodes are created using a NodeCreator Object.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-: Nodes are equipped now with a 'pivot', meaning that all 
referencing to an UpperNode or a Sibling goes through it's Pivot.</span></font></div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">This frees Nodes from traversing, since the pivot is 'visiting' a 
Node on preOrder and postOrder traversal. Yes, it works clean and 
efficient.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-: To locate a Node in the tree, I don't think one should use the 
naming ID's, since BC creates a Top node everywhere with the same 
name. Alternatives are position (in the tree, horizontally) and 
level (in the tree, vertically). However the need to do something 
like that is merely a symptom of bad design.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-: I came to the conclusion that a Node belongs to a Tree and 
points to its Top (I'm naming that a 'trunk'), and has some 
important anchestor (like form and its inputs). It's amazing how 
clean and easy the code can find them using the className or 
attached Interface (I am using Interfaces): isInstanceOf.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-: Well, the proposed methode of locating a Node using a 
slashed_path could be easily added to the pivot concept. Must 
evaluate that. :-]</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">To disclose some more on my private efforts:</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-/ I didn't cope with translation, yet. It seems to me that using 
Flexy rather than Smarty will do the job, without extending the 
code or caching zillion translation files.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-/ I stuck with Phing, which runs pretty smooth under PHP5. I do 
think Phing is indispensable. I've introduced a three level 
nameSpaceSystem: farm --&gt; crop --&gt; work.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-/ I've redone the 'project' into an Application Tree. I'm 
supporting now plain Static, traditional BC, MVC, ActionFacade, 
AJAX, Hamlet and Portal. These applicationtypes can be mixed 
freely and may process in parallel. I'm calling this the Staging.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-/ I've always had my own 'conf', but it's a component of a 
Mapping system: plain Map, Object Map, Parameter Map, Tensor Map, 
Context Map. So, Children in Node is an ObjectMap and Conf is a 
TensorMap. Parameters, Definition etc. are straight parameter 
maps. Mapping is eliminating all those messy isset statements 
everywhere.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">In order to comment on the outsiders view:</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-- I think having conf as a main component of any Node is right.</span></font></div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">I've implemented that in my NodeConstructorObject. It adds the 
feature of 'configurable' nodes.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-- To integrate conf and params is however wrong. There is a 
conceptual difference between conf and params. Whilst there are 
preferences as well, needing a whole different interface.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-- The event system is oke, but lacks registering and calling 
runtime Objects. This comes into play when accessing Event from 
already created Nodes. As said, the navigation into the Tree is a 
separated class. It means also, that the Node itself *only* 
contains hooks for 'Input', 'Processing' and 'Output'. The 
'Hierarchy is the Tree, and it's an elegant copy of HIPO, 
introduced by IBM in the (19)seventies.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-- Since BCNode has a 'preInput' and 'postInput' method, several 
surrounding methods of 'Process' and 'Output', well, honestly, 
they can *and* must be replaced by an Event like 'onTreeInput', 
'onTreeProcess' etc. Node may register to Event for these events 
and process when fired.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-- Example: I've defined an AccessDenied Event in Rbac. Several 
Nodes listen to this and do something on firing. Works elegant.</span></font></div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">No need to bail with an errormessage or such.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">Actually, there is so much more to exploit in this type of 
framework. It's a pity that some key people fled the team with 
priorities that do not match the key-purpose of the framework.</span></font></div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">To me, personally, their reasons to abandon BC have to do with 
fatigue and the need for quick results. Off course, their new 
home is trendy, exciting and thrilling. However, the innovating 
thinking was already done at Rails. I compare the enthousiastic 
stories about Rails with the ones emitted when Alfa-four and/or 
C-scape hit the streets. You may think 'alfa-what'? Exactly. It's 
gone.</span></font></div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">FYI: My very personal feeling is that Rails compares to 
professional frameworks as DBASEIV does to Oracle. A matter of 
taste.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">Enough said about the 'empty' mindSpace. Thoughts as Nathan 
expressed are truly proof of concept. I agree with quite a lot of 
them. Also because they came on my mind as well :-) and some of 
them are worked out already. See my roadMap:</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-] Currently I'm working on the entity concept and shortly 
(thanks, Jason), I've got an Eureka feeling about that.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-] Creole and Jargon are installed in my version, but my system 
is still clashing with Propel. Entities can be build with an IOC 
container, which resembles a NodeTree (well, not really, but the 
code does). There is a strong relation with the propel-schema in 
XML, the Form-node and CRUD forms (compare scaffolding). In fact 
one may distinguish the physical database, the scheme describing 
it and the FormNodes using it. It's just a matter of which comes 
first. I think I can build a system utilizing one of them at 
will, in order to generate the other ones. This in effect means 
the availability of an iterative system for developing.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-] Such thing is done before, and is still available in legacy 
environments.</span></font></div>
<div align="left"><br/></div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-] IOC: Inversion of Control; see picoContainer.</span></font></div>
<div align="left"><br/></div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">Anyway, a lot of things to explore further. For the moment I'm 
doing that in a lone environment. Don't know if contributing will 
get it faster ahead. </span></font></div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">My project is called Okklusion and consists of a few independent 
components (some prefer saying 'packages'). It's my intention to 
go commercial, and/or using a Creative Commons License.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">Cheers,</span></font></div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">wim niemans</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><br/>
</div>
<div align="left"></div>
</body>
</html>

--===============1189654493==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
dev mailing list
dev-PnctHDZWAvB/Cz2I37pSEPZ4XP/[email protected]
http://lists.binarycloud.com/mailman/listinfo/dev

--===============1189654493==--