This page last changed on Feb 16, 2009 by cholmes.

Introduction

Right now the primary concern of GeoServer is data, there is little infrastructure built for users. In the path towards metadata, we need to first support users, as they will naturally generate lots of valuable metadata. The goal is to enable user collaboration - encouraging people to upload their information, share it with others, and get other people to edit it.

This should be done by giving users a home page where they can do interesting things. At first this will be creating context documents - composed maps (which layers, zoom levels, styles, etc). It should extend to creating styles, uploading new data, editing existing data, and rating and commenting on other's maps, styles, data and edits. Any deployed GeoServer should be able to be a collaborative environment, be it behind a firewall or in front of it. And users should have control over who else can see, edit and rate the data they contribute.

Iterative steps

The following lays out a path of what should be built to get to a full user infrastructure. Each step can be taken on its own, and should provide a bit more value than the last, so it doesn't have to be one big project.

User/permission manager in the GUI.

The only way to manage users currently is to create them in files on the backend. We should have a part of the GUI allow administrators to see all the users and their permissions, and to add and delete users and change their permissions.

User home page.

Each user should have a page that is their homepage. This will eventually expand out with lots of nice GUI map creation and sharing tools, but initially it will just list the user and their 'maps' - the context documents that they create through other tools.

Each user will have a user name, and the page will be at http://..../geoserver/users/\{username}, like http://demo.opengeo.org/geoserver/users/cholmes. http://.../geoserver/users will list all the users.

When a user is logged in and is looking at their own home page they should see the layers they have access to (read / write), and a list of their context documents.

Any logged in user should be able to PUT and GET context documents in to their user directory, under /users/{username}/maps.

Map composition.

(javascript step, should be speced out by GeoExt devs). After the infrastructure for PUT and GET context documents is in place we should allow users to do that through a GUI. A user logged in and on their homepage should be presented a GeoExt map. This should have a base layer, and options to add any layer on the GeoServer that a user has permissions to, as well as remote servers. The user should be able to zoom in and add layers to compose a map. They should then be able to save that map (put their context document). All their saved maps should also be loadable.

When going to another user's home page, it should still list all their maps, but when clicking on a map it should not just go to an xml context document, but to a map that the user can explore, add layers to, and then save as their own.

In time a user should be able to explore other users's maps from her home page, hopefully with search and rankings and comments and the like.

Uploading data

Next step is for users to have the ability to upload data, and for admins to control who can upload what and how much. This would best be done with a size limit that an admin can set. By default perhaps everyone could upload up to 20 megs, to try out the service, and users in certain groups could upload more, or perhaps unlimited amounts. Upload can start with just PUT and GET calls, and then be added to a javascript map interface, for users to upload completely through a web gui. Any information that a user uploads should initially be viewable by everyone, and only editable by them. In time an admin or a user could change the default settings of what is viewed when uploaded, but we want to start open, as this system is made to encourage collaboration. Ideally at this point we'd have a page listing 'latest data uploaded'. The layers that a user has uploaded should be available through the general catalog, and also at /users/{user}/layers/ Other users should be able to go there and download the data or visualize it in one of GeoServer's formats.

(Implementation detail - we shouldn't use straight shapefiles internally, though that's what users will upload. We should be able to convert them to a database that the admin marks as the 'default'. We'll need to code the infrastructure to set a database as the default)

Styling

There is a bunch of work ongoing with 'styler'. The user infrastructure piece needed is to give users control of their styles, be able to put and get styles on their home directory, even if they don't have the ability to change the core styles of GeoServer like an admin does. After uploading data they should be able to style it, and save the style and the map / context document. A user's styles should then be browsable by other users, and in time we'll want to give users the ability to rate and comment on styles. This should be in /users/

Unknown macro: {user}
/styles/ directory, that lists all the styles. Clicking on a style should lead to /user/cholmes/styles/myStyle.html, that shows a preview of the style (used on the layer that was used to create the style, the overall rating of the style, places the style is used in other maps, other styles that started from this style, comments on the style, and a place for the user to rate and comment on the style. Thus we can encourage more sharing and collaboration around styling.

User permission management

The admin ability to set user permissions should extend to users, so users can set the permissions on the data they upload. They won't be able to set permissions on all data, just what they uploaded. Admins will be able to over ride a user (but generally won't). Should be able to set who can view and edit their data. And ideally be able to invite other users to check out what they created. It should just be a subset of the full admin's user manager. If other users go to a dataset that has open edit permissions it should be obvious to them that they can edit it. Once versioning is solid a user should be able to choose if they want to turn on versioning for their dataset.

'Publish'

This is another javascript task, from the map one should be able to take the current map and export to webpage or blog. On the GeoServer infrastructure side this just involves making the appropriate context document when export is hit, so there is a persistent place of the user's composition.

Create data

Many users won't know what a shapefile is, and will prefer to just start clicking on a map. They should be able to select what fields they want on their data, and then start adding data. This should create a new table in the default database, with a schema reflecting their fields.

Rating/commenting/ranking

Everything that a user can create - data, styles, maps, edits - should have a way to comment on and rate. These should then be aggregrated, along with other derived statistics, like number of views, number of users who have edited a dataset, number of times something has been copied and used elsewhere, etc. This metadata should be presented in easy pages, like 'most commented', 'top ranked', 'most contributors', 'most viewed', etc. Searches for data should include this type of metadata.

Document generated by Confluence on May 14, 2014 23:00