[development] Data API

adrian rossouw adrian at bryght.com
Wed Sep 6 19:22:47 UTC 2006


On 06 Sep 2006, at 5:24 PM, Mark Fredrickson wrote:

> I'd like to pick at this point specifically. While I agree that
> forcing developers into a 1:1 relationship between form elements and
> db columns is bad, why not start with that as a default? Given a data
> definition that is 1:1, Drupal could do the hard work of storing that
> data, leaving the programmer to work on other things. If the
> programmer needs something more complicated, he/she could certainly
> register a "#callback' on the data element which did the appropriate
> validation and storage.

I agree with mark on this, the default case , which in 99.999% of the  
time is
more than adequate, for both input AND output (forms and displays), can
very very very easily be codified and not even be a concern for the  
developer.

Using the 'fapi' structure of sensible defaults that can be  
overridden, you could
really make it be anything.

Also, 99% of the time you only need the aggregate fields on output,  
not input.
so it would be much much cleaner to create a widget (theme function)  
that displays multiple
fields. Like for instance a graph that can display multiple points  
associated associated with a node.
It's one view of multiple data fields.

Also, we use data models for a hell of a lot of things, We have data  
models re-implemented
with subtle differences for
a) node definitions through fapi
b) cck
c) importexportapi
d) views
e) node_import module
f) probably pubsub module. and several other places.


This is also about having consistent, well defined, validation rules  
for all
inputs, which are separate from the forms. So they can be re-used  
more cleanly.

This is also about providing context for many other systems, such as  
the filters,
to provide a modicum of safety when doing output (ie: knowing that a  
'title' field
will need to be check_plain'ed, and a content field could be html and  
might have to
have a filter selector).

It's also about creating far far cleaner abstraction for things like  
file handling, so you can
just add a file field to any 'model', and the CRUD of the file  
'model' knows how to save and handle
it properly.

It's also about providing the place for the much needed relationship  
API.

it's also about getting rid of the distinction between userapi and  
nodeapi, and instead provide
a sensible place for all objects to be extended (ie: anythingapi).

it's also about improving granular caching of objects, and even  
markup. With realistic
methods for rebuilding cached objects when needed (this will lead to  
big performance benefits)

There are at least a dozen MAJOR concerns this will allow us to  
cleanly and consistently resolve,
and many dozens more new features we will be able to implement  
because of a system like this.

Being against an API like this because other systems have implemented  
something similar before
(really, what kind of a reason is that?), is incredibly incredibly  
short sighted. The simple fact that
other people have implemented it before should be a benefit , because  
we have the ability
to learn from their mistakes.

I'll be discussing this all at DrupalCamp in Brussels in 2 weeks  
time, and I will be making my presentation
available online too.

In the mean time, if anyone would like to discuss this with me, I  
will be available on skype username: vertice123

If you've had experience implementing a similar system, or working  
with systems like RoR / CakePHP or anything
similar , or have some major concerns with the idea, I would like to  
speak to you. I am especially interested in
any forms you feel will be impossible with a system like this.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.drupal.org/pipermail/development/attachments/20060906/523f2f92/attachment-0001.htm


More information about the development mailing list