[Mapbender-dev] GUI elements

Samson, Marko Marko.Samson at wald-und-holz.nrw.de
Tue Jul 8 03:15:12 EDT 2008


+1 to the elements idea. 


> -----Original Message-----
> From: mapbender_dev-bounces at lists.osgeo.org 
> [mailto:mapbender_dev-bounces at lists.osgeo.org] On Behalf Of 
> Arnulf Christl
> Sent: Monday, July 07, 2008 5:36 PM
> To: Mapbender Developer List
> Subject: Re: [Mapbender-dev] GUI elements
> 
> Christoph Baudson wrote:
> > How about this motion?
> > 
> > There have been no votes yet. Let's extend the voting period until 
> > July 21st. If no votes have been cast until then, let's 
> abandon the motion.
> > 
> > With the separation of "gui_element" into "element" and 
> "gui_element" 
> > we would have control over the modules delivered with 
> Mapbender. These 
> > could be certified modules and their core could not be altered.
> > Mapbender is very error prone because it gives 
> administrators way too 
> > much freedom to misconfigure their applications. It would also make 
> > updates a lot easier.
> > 
> > Maybe people were more enthusiastic if we deferred the 
> split into two 
> > tables? Maybe we add a read only column, and the read-only 
> column only 
> > affects certain columns. Redundant, but people don't seem to like 
> > changes. :-)
> > 
> > I still think it's a necessary step and in my opinion 
> ignoring it is 
> > not an option. But please prove me wrong.
> > 
> > Christoph
> 
> +1 Arnulf
> 
> > Christoph Baudson schrieb:
> >> Marc Jansen schrieb:
> >>> Hi all,
> >>>
> >>> the proposed changes will influence mapbenders structure 
> heavily... 
> >>> so all of this is due in version 3.0, right?
> >>>
> >>> As for the motion I have some further questions... sorry if they 
> >>> have already been answered previously, I'll vote quickly when 
> >>> everything seems clear to me:
> >>>
> >>> ad 1) I like the motion alot, but does this mean that every 
> >>> "application_element" is inherited from an "element"?
> >>
> >> Yes. The columns of gui_element are split into two tables 
> element and 
> >> application element. There is a 1:n relation of element to 
> >> application_element, which means that a single element can 
> exist in n 
> >> configurations.
> >>
> >>> Or is it more like: There is a "element" "mapbender_logo" 
> (unique to 
> >>> all applications) another "application_element"
> >>> "logo_of_certain_application" (unique only within this 
> application). 
> >>> I could modify certain attributes of both fo my application and 
> >>> these changes would then be stored as application_element 
> settings, right?
> >>
> >> I think that's not what I meant.
> >>
> >> An application would contain application elements only. But these 
> >> application elements are inherited from (globally unique) elements.
> >>
> >> Take the logo element for example. The element would contain the 
> >> columns which should be constant (e.g.  JavaScript, elementId etc).
> >> Application_element would contain the columns which are 
> configurable, 
> >> like position, image src, title etc.
> >>
> >> A proposal for the split is here
> >>
> >> 
> http://lists.osgeo.org/pipermail/mapbender_dev/2008-April/001137.html
> >>
> >> Let's discuss if this is the way to split...on a second thought, 
> >> "e_url" (URL to help site) would better be stored in 
> application_element.
> >>
> >>>
> >>> Where would you save the "logo_of_certain_application"? As a new 
> >>> element AND as a new application_element? Sorry, I'm confused
> >>
> >> If you wanted to modify the certified logo element which 
> is delivered 
> >> with Mapbender, you would only be able to modify the application 
> >> element settings. So there would be a new entry in 
> >> application_element only.
> >>
> >> If you wanted to generally change the logo element, you 
> would have to 
> >> copy the element and rename it. Then you would deal with a 
> >> non-certified element! This would create a new element, and if you 
> >> loaded it into an application, a new application_element as well.
> >>
> >> The main idea is quality control. If you change the "application 
> >> element" settings and the application fails, it's a 
> Mapbender problem.
> >> If you change the "element" setting and the application 
> fails, it's 
> >> your problem. At the moment we are unable to detect if anyone is 
> >> toying around with the elements that came with the 
> release. It would 
> >> be nice to prevent it in the first place.
> >>
> >> You see that it will be easy to automatically update elements that 
> >> are certified. Customized elements (manipulated copies of certified
> >> elements) will NOT be updated! The user has to update 
> these manually.
> >>
> >> It would really make it easy to identify an element. It 
> would consist 
> >> of a set of files (with a checksum for each file):
> >> With the checksum we could identify if the files belong to 
> a certain
> >> version: when building a release, an automated routine 
> would generate 
> >> checksums for all files. Somewhere we would have a list 
> (XML) of all 
> >> elements with the files they use (including an SQL for element 
> >> creation!). So an element in a certain Mapbender version could be 
> >> described precisely by these files and their checksums. An update 
> >> routine could match these checksums to determine what the 
> status of 
> >> Mapbender is. In other words, we would have sth like 
> module version 
> >> numbers. (You could also easily identify obsolete files 
> too, now you 
> >> can't).
> >>
> >> Idea: For creating the dump for the release, we could have another 
> >> XML (created by a Mapbender administration interface), that states 
> >> which application holds which elements + links to SQLs of their 
> >> configurations. The build script would then parse these XMLs and 
> >> compile the dump dynamically. The same could be done for services, 
> >> i.e. a context document storing the whole GUI WMS data.
> >>
> >> I'm not sure about calling this 3.0, and what the implications are 
> >> when calling it 3.0. I would just like to have that as soon as 
> >> possible, preferably now, as our GSoC students could work 
> on it. We 
> >> could maintain the old version and slowly build the new 
> one parallel.
> >> We could have an incubation process for modules to have 
> full quality 
> >> control. People could use this new version (maybe 3.0) although it 
> >> would only contain a single map application and a single 
> >> administration application, each with only a few modules.
> >>
> >> I think it's time for another dev sprint :-)
> >>
> >> Sorry for my verbosity
> >>
> >> Christoph
> >>
> >>
> >>>
> >>> ad 2) In bundle with 1) this makes perfect sense...
> >>>
> >>> ad 3) I like that a lot, too. but this is certainly a 3.0-thing, 
> >>> isn't it?
> >>>
> >>> Bye,
> >>>
> >>> Marc
> >>>
> >>>
> >>> Christoph Baudson schrieb:
> >>>> Astrid Emde (WhereGroup) schrieb:
> >>>>> Hello devs,
> >>>>>
> >>>>> I second Christophs motion. Let's vote.
> >>>>>
> >>>>> 1.)  +1
> >>>>> 2.) +1
> >>>>> 3. ) I am not sure what this means in detail and how 
> this "light" 
> >>>>> version  could look like. need some more concreate 
> description on 
> >>>>> this.
> >>>>
> >>>> I think of it as the core. We could take this as an 
> opportunity to 
> >>>> build new application templates. We could start with a 
> single basic 
> >>>> application, and incubate the necessary modules. During 
> incubation 
> >>>> we could also apply more quality control, like code conventions, 
> >>>> updating interfaces or removing redundant code. Incubation would 
> >>>> also include creating a new administration interface (maybe this 
> >>>> could be Len's job).
> >>>>
> >>>> I'm not sure if it's too much but Mapbender has a lot of bloat 
> >>>> which makes it VERY hard to add innovations. By starting a light 
> >>>> version we could get rid of that bloat.
> >>>>
> >>>>>
> >>>>> best regards astrid
> >>>>>
> >>>>> Christoph Baudson schrieb:
> >>>>>> I think it's about time we make a decision
> >>>>>>
> >>>>>> <motion>
> >>>>>> I motion to
> >>>>>>
> >>>>>> 1) split "gui_element" into "element" and 
> "application_element". 
> >>>>>> This implies:
> >>>>>> - "element" is globally unique
> >>>>>> - "application_element" is unique only application-wide (like 
> >>>>>> "gui_element" was)
> >>>>> you have to make sure that every element in table 
> element has an 
> >>>>> entry in table application_element.
> >>>>> e_src - should be part of application_element ( we have 
> to get rid 
> >>>>> of the iframes first)
> >>>>>>
> >>>>>> 2) add a "readonly" column to element. This implies:
> >>>>>> - You can't modify or delete "readonly" elements
> >>>>>> - You can only modify or delete your own elements
> >>>>>> - You can only modify "readonly" elements via 
> >>>>>> "application_element" settings
> >>>>>>
> >>>>>> 3) The above changes have severe consequences. A lot 
> of scripts 
> >>>>>> are affected. My plan would be to set up a "light" version of 
> >>>>>> Mapbender with a single admin and map application, and slowly 
> >>>>>> incubate other modules into this version. Users could 
> still work 
> >>>>>> with the 2.5 series while incubation is in progress, but devs 
> >>>>>> (including the GSoC students) could focus on the 
> "light" version.
> >>>>>>
> >>>>>> </motion>
> >>>>>>
> >>>>>> Slimming down Mapbender would have a lot of effects. We could
> >>>>>> - have trouble with a lot of merging
> >>>>>> + get rid of deprecated files
> >>>>>> + reorganise the file system
> >>>>>> + add changes quickly (less files are affected) make it easier 
> >>>>>> + for our GSoC students (they could work in a less
> >>>>>> complicated environment and have clearer tasks)
> >>>>>> + eliminate iframes
> >>>>>> + move SQL statements from dump to modules, and 
> compile the dump
> >>>>>> with a build process (less error-prone)
> >>>>>>
> >>>>>> This is not a motion that you should nod off with a casual +1. 
> >>>>>> Voting 0 is acceptable yet not helpful. Voting -1 implies you 
> >>>>>> present alternatives or reasons why to stick to the 
> current model.
> >>>>>>
> >>>>>> The only -1 I could think of are insufficient funding and 
> >>>>>> backwards compatibility, yet I see more pros than 
> cons. I see it 
> >>>>>> as an investment that will pay off in the near future.
> >>>>>>
> >>>>>> Please vote +1, 0 or -1, don't be shy to use either option.
> >>>>>>
> >>>>>> Christoph Baudson schrieb:
> >>>>>>> Christoph Baudson schrieb:
> >>>>>>>> In order to enhance the modular character of Mapbender, I 
> >>>>>>>> propose to split the database table gui_element. The problem 
> >>>>>>>> with the current table layout is, that there is no table for 
> >>>>>>>> "element", just gui_element (From now on, whenever I 
> speak of 
> >>>>>>>> an "element" (as in "gui_element") I refer to it as 
> a "module").
> >>>>>>>
> >>>>>>> I think this is a severe change to the concept of application 
> >>>>>>> elements. Formerly, copying an application element has been a 
> >>>>>>> copy "by value", meaning a completely new set of element 
> >>>>>>> settings. You can have two application elements with 
> the same ID 
> >>>>>>> that are yet quite different.
> >>>>>>>
> >>>>>>> The new concept would imply copy "by reference", so 
> altering a 
> >>>>>>> copied element (without changing the id) would result in 
> >>>>>>> changing the original as well. However, this would 
> only be the 
> >>>>>>> case for the element settings, and not the 
> gui_element settings.
> >>>>>>>
> >>>>>>> An example for the new "by reference" logic: There is 
> an element 
> >>>>>>> called "back". You copy it and modify only its "top" 
> and "left"
> >>>>>>> settings. No problem with the original, as "top" and 
> "left" are 
> >>>>>>> both gui_element settings. Now let's change "HTML-TAG": This 
> >>>>>>> would change the original, as it is an element 
> setting (and not 
> >>>>>>> a gui_element setting).
> >>>>>>>
> >>>>>>> Now let's assume the element back was tagged 
> "read-only". If you 
> >>>>>>> would copy the element, you were to choose if you 
> wanted to use 
> >>>>>>> the original module (and ONLY alter gui_element settings like 
> >>>>>>> "top", copy "by reference"), or if you wanted to create a new 
> >>>>>>> module based on the original, with a new ID (and so 
> being able 
> >>>>>>> to edit the element settings like "HTML-TAG" as well, 
> copy "by value").
> >>>>>>>
> >>>>>>> For read-only elements, "by reference" could be the 
> default copy 
> >>>>>>> option, for other elements "by value".
> >>>>>>>
> >>>>>>> An important issue are element vars. Now we only have 
> >>>>>>> gui_element_vars. Do we still need them? Or is element_var 
> >>>>>>> sufficient? I guess so. Because by altering element vars, you 
> >>>>>>> alter the element itself.
> >>>>>>>
> >>>>>>> The new database structure could look sth like this, let's 
> >>>>>>> discuss it because I'm not 100% sure about some fields:
> >>>>>>>
> >>>>>>> element:
> >>>>>>> e_id
> >>>>>>> e_comment
> >>>>>>> e_element
> >>>>>>> e_src (? - for images it would be better suited in 
> >>>>>>> application_element, but for iframes :-/) 
> e_attributes e_content 
> >>>>>>> e_closetag e_js_file e_mb_mod e_target e_requires e_url 
> >>>>>>> e_readonly (THIS WOULD BE NEW!)
> >>>>>>>
> >>>>>>> application_element (fka gui_element):
> >>>>>>> fkey_gui_id
> >>>>>>> e_public
> >>>>>>> e_pos
> >>>>>>> e_title
> >>>>>>> e_left
> >>>>>>> e_top
> >>>>>>> e_width
> >>>>>>> e_height
> >>>>>>> e_z_index
> >>>>>>> e_more_styles
> >>>>>>>
> >>>>>>> element_vars (fka gui_element_vars):
> >>>>>>> fkey_e_id
> >>>>>>> var_name
> >>>>>>> var_value
> >>>>>>> context
> >>>>>>> var_type
> >>>>>>>
> >>>>>>> I guess what I really want to say is that the 
> gui_element_id is 
> >>>>>>> not sufficient, we need element_ids for real control over the 
> >>>>>>> modules in Mapbender. Class dismissed...anyone still 
> awake? If 
> >>>>>>> yes, please comment.
> >>>>>>>
> >>>>>>> Christoph
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>>
> >>>>>>>> So if you have to change a module, the changes do 
> not propagate 
> >>>>>>>> throughout Mapbender. You have to edit the settings in every 
> >>>>>>>> GUI manually, it is harder to track module changes.
> >>>>>>>>
> >>>>>>>> Currently it's not possible to set a version number 
> on a module. 
> >>>>>>>> So you also do not know the compatibility status of 
> a module. 
> >>>>>>>> Some only work with specific versions, for example 
> "set_locale" 
> >>>>>>>> will require Mapbender 2.5, it should not be 
> possible to load 
> >>>>>>>> it in an older Mapbender.
> >>>>>>>>
> >>>>>>>> We need a centralised spot for keeping modules. Like 
> an Eclipse
> >>>>>>>> update: You open your admin GUI and get a message about new 
> >>>>>>>> available modules. Currently, you can only copy a 
> GUI element 
> >>>>>>>> from another GUI. Imagine, Mapbender could load it from 
> >>>>>>>> mapbender.org. We would have enormous quality 
> control over the 
> >>>>>>>> modules in distributions.
> >>>>>>>>
> >>>>>>>> Another problem is module IDs, the same module can 
> have two IDs 
> >>>>>>>> in two separate GUIs. IDs should be unique at all 
> the time. If 
> >>>>>>>> a user created a new module, we could do a remote check if 
> >>>>>>>> there already is a module by that name.
> >>>>>>>>
> >>>>>>>> Users would also be kept from editing a stable module and by 
> >>>>>>>> this creating their own bastard modules that waste 
> everybody's 
> >>>>>>>> time.
> >>>>>>>>
> >>>>>>>> For releasing, this approach would also make things 
> easier. You 
> >>>>>>>> could keep the SQL for a module within the file system, and 
> >>>>>>>> construct the SQL data dump with a build process.
> >>>>>>>>
> >>>>>>>> I would like to see this happen this year. Mapbender 
> needs to 
> >>>>>>>> change, things are growing to be more and more complex, yet 
> >>>>>>>> there is no infrastructure. We need less overhead, I 
> don't want 
> >>>>>>>> to see Mapbender dead as a dodo.
> >>>>>>>>
> >>>>>>>> Maybe we can discuss this face-to-face at FOSSGIS, but 
> >>>>>>>> certainly up front here.
> >>>>>>>> _______________________________________________
> >>>>>>>> Mapbender_dev mailing list
> >>>>>>>> Mapbender_dev at lists.osgeo.org
> >>>>>>>> http://lists.osgeo.org/mailman/listinfo/mapbender_dev
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>>
> >>>>>
> >>>>>
> >>>>
> >>>>
> >>>
> >>> _______________________________________________
> >>> Mapbender_dev mailing list
> >>> Mapbender_dev at lists.osgeo.org
> >>> http://lists.osgeo.org/mailman/listinfo/mapbender_dev
> >>
> >>
> > 
> > 
> 
> _______________________________________________
> Mapbender_dev mailing list
> Mapbender_dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapbender_dev
> 


More information about the Mapbender_dev mailing list