Open Source Content Management Framework

How will we use workspaces?

  1. How will we use workspaces?

    Mon May 24 2010 08:00:07 UTC
    Hi,

    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
    •  Reply
  2. Re: [midgard-dev] How will we use workspaces?

    Mon July 26 2010 14:35:09 UTC
    Hi!

    > 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
    •  Reply
Designed by Nemein, hosted by Kafit