How will we use workspaces?
-
Henri Bergius
How will we use workspaces?
Mon May 24 2010 08:00:07 UTCHi,
Midgard2 is now at LTS stage and it is time to start really working on
Hrungnir. Workspaces is the biggest new thing coming there. So, how
will we use them?
* Multilingual/country sites
- Workspace / is the "international site"
- translated sites are at /langcode
- Midgard MVC may ensure that certain types are only shown from
current WS, not from current and parent spaces, emulating "multilang
strict"
* Workflow, staging/live and development sandboxing
- Live site is at /
- Shared staging area is in /staging
- Personal work and development happens in /staging/username or /staging/team
- Personal workspaces are to be used like "feature branches" in Git
So, some basic requirements:
* When we query content it has to come from current workspace
primarily, or from its parents
* We need to know which workspace a particular object is in
* All writes must happen to current workspace. If you update an object
in parent workspace, it is copied to current WS and updated there
instead
* Users must be able to move (replicate?) content between workspaces,
based on set workflow rules and permissions (implemented on MVC level)
* To provide feature branches / sandboxing we must be able to quickly
create and delete workspaces (for example, a replication run may write
everything to a new workspace, then move things to parent if
everything validates)
* We need a way to query content only in current WS
--
Henri Bergius
Motorcycle Adventures and Free Software
http://bergie.iki.fi/
Skype: henribergius
Jabber: henri.bergius@gmail.com
Microblog: http://www.qaiku.com/home/bergie/
_______________________________________________
dev mailing list
dev@lists.midgard-project.org
http://lists.midgard-project.org/mailman/listinfo/dev -
Re: [midgard-dev] How will we use workspaces?
Mon July 26 2010 14:35:09 UTCHi!
> So, some basic requirements:
>
> * When we query content it has to come from current workspace
> primarily, or from its parents
This is done.
> * We need to know which workspace a particular object is in
Read on.
> * All writes must happen to current workspace. If you update an object
> in parent workspace, it is copied to current WS and updated there
> instead
This is done.
> * Users must be able to move (replicate?) content between workspaces,
> based on set workflow rules and permissions (implemented on MVC level)
> * To provide feature branches / sandboxing we must be able to quickly
> create and delete workspaces (for example, a replication run may write
> everything to a new workspace, then move things to parent if
> everything validates)
> * We need a way to query content only in current WS
Currently, there are few MidgardConnection methods:
* set_workspace
* set_workspace_by_path
* set_workspace_context
* set_workspace_context_by_path
However, it would be very nice to provide only one method: set_workspace
(MidgardWorkspace) instead.
I wonder if such layout would be nice:
## MidgardWorkspace interface with methods:
* get_path
For future implementation (similar to JCR workspaces):
(Such would be very fast way to move or copy data from one workspace to
another)
* copy (from path, to path)
* move (from path, to path)
## MidgardWorkspaceStorage class
Represents single workspace storage object.
* constructor(MidgardConnection mgd, MidgardWorkspace parent)
* update ()
if we want to change workspace name
* create ()
creates new workspace under parent, or as root one if parent is null
* list_children ()
list all workspaces which are children of given one
* get_context ()
get MidgardWorkspaceContext, in which, given MidgardWorkspace exists
## MidgardWorkspaceContext class
Represents group of workspaces in the same workspace "tree" identified
by some path
* constructor(MidgardConnection mgd, string path)
* create(MidgardConnection mgd, string path)
Returns new WorkspaceContext and create all required WorkspaceStorage
objects identified by path
* get_workspace_current ()
returns WorkspaceStorage object which is the last element in context path
* get_workspace_by_name (string name)
returns WorskspaceStorage object identified by name found at
WorkspaceContext path
Suggestions?
Piotras
_______________________________________________
dev mailing list
dev@lists.midgard-project.org
http://lists.midgard-project.org/mailman/listinfo/dev
