WO2004015897A2 - Multi-user collaboration system and method - Google Patents

Multi-user collaboration system and method Download PDF

Info

Publication number
WO2004015897A2
WO2004015897A2 PCT/US2003/024695 US0324695W WO2004015897A2 WO 2004015897 A2 WO2004015897 A2 WO 2004015897A2 US 0324695 W US0324695 W US 0324695W WO 2004015897 A2 WO2004015897 A2 WO 2004015897A2
Authority
WO
WIPO (PCT)
Prior art keywords
client
presentation
user
visual object
gan
Prior art date
Application number
PCT/US2003/024695
Other languages
French (fr)
Other versions
WO2004015897A3 (en
Inventor
Joseph Shohfi
Danette Gorman
Theodore Shohfi
Steven Nacarlo
Original Assignee
Global Apparel Network, Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to AU2003256867A priority Critical patent/AU2003256867A1/en
Application filed by Global Apparel Network, Inc filed Critical Global Apparel Network, Inc
Publication of WO2004015897A2 publication Critical patent/WO2004015897A2/en
Publication of WO2004015897A3 publication Critical patent/WO2004015897A3/en
Priority to US11/053,235 priority patent/US7426693B2/en
Priority to US12/012,279 priority patent/US20120290944A9/en
Priority to US13/194,905 priority patent/US20120060102A1/en
Priority to US14/083,424 priority patent/US20140081808A1/en
Priority to US14/540,022 priority patent/US10367763B2/en
Priority to US15/043,469 priority patent/US10699245B2/en
Priority to US15/284,533 priority patent/US10474999B2/en
Priority to US16/525,359 priority patent/US20190356618A1/en
Priority to US16/883,939 priority patent/US20200356954A1/en
Priority to US17/576,792 priority patent/US20220158959A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management

Definitions

  • the present invention relates to a system and method that allows collaboration between multiple users, and more particularly, to system and method that allows multiple users to organize and manipulate visual information collaboratively in real-time.
  • the apparel industry is a highly visual environment, and a significant amount of communication is done using images. Often a designer will have a large number of images that they have collected from various sources, such as pages of magazines, photographs they have taken or sketches they have drawn up. They use these images for personal inspiration, and arrange them into collages to communicate their ideas to other team members and suppliers. When suppliers wish to get the attention of the designers, they often use highly visual presentations. The suppliers then share the feedback they get from their customers with their own stylists. Whenever interesting or relevant images are found, they are often used, reused and shared.
  • the system should allow individuals and teams to organize and manipulate design elements in a collaborative environment with multiple levels of participation and security.
  • the system should also allow designers to view, capture and organize visual information and concepts collaboratively, then communicate these concepts to suppliers, manufacturers and retailers worldwide in a secure environment.
  • Suppliers and mills should be able to use the system to organize and present their offerings of fabrics and product lines to their designer customers.
  • Stylists should be able to use the system to organize their design ideas and information, as would an apparel designer.
  • the system should also be outwardly extensible to enable non-users to review and comment on user presentations via a web site.
  • a collaboration system comprises a server and a plurality of client terminals coupled to the server, characterized in that a first client terminal and a second client terminal collaborate in concurrently modifying a visual object, wherein the modifications are reviewed for conflict resolution and applied to the visual object in real time based on the conflict resolution.
  • a collaboration system comprises a first computerized tool coupled to a first user terminal for manipulating a visual object; means for selecting at the first user terminal a share recipient for the visual object; means for transmitting the visual object to a second user terminal accessible to the share recipient; a second computerized tool coupled to the second user terminal for modifying data associated with the transmitted visual object; means for transmitting the modification to the first user terminal; means for automatically correlating the modification to the visual object; and means for presenting the visual object with the correlated modification at the first user terminal.
  • a computerized method for collaboration comprises invoking at the first user terminal a first computerized tool for manipulating the visual object; selecting at the first user terminal a share recipient for the visual object; transmitting the visual object to a second user terminal accessible to the share recipient; invoking at the second user terminal a second computerized tool for modifying data associated with the transmitted visual object; transmitting the modification to the first user terminal; automatically correlating the modification to the visual object; and presenting the visual object with the correlated modification at the first user terminal.
  • a computerized method for collaboration comprises electronically associating comments with a visual object; sharing the visual object with the comments with a share recipient; receiving updated comments from the share recipient; automatically correlating the updated comments with the visual object; and presenting the visual object with the updated comments.
  • the invention is directed to a collaboration system and method substantially as hereinbefore described with reference to the accompanying drawings.
  • FIG. 1 is a screen shot of an exemplary object history viewer according to one embodiment of the invention.
  • FIG. 2 is a screen shot of an exemplary user interface window according to one embodiment of the invention.
  • FIG. 3 is a dialog box for creating a new object according to one embodiment of the invention.
  • FIG. 4 is dialog box for importing an object according to one embodiment of the invention.
  • FIG. 5 is an illustration of the main client window displaying notifications
  • FIG. 6 is an illustration of an exemplary screen shot for transmitting a notification
  • FIG. 7 is an exemplary illustration of a folder browser thumbnail view
  • FIG- 8 illustrates a dialog box for setting a notification option
  • FIG. 9 illustrates an exemplary notification that is to be transmitted to a publish recipient
  • FIG.10 is an illustration of an exemplary folio according to one embodiment of the invention.
  • FIG. 11 is an illustration of an exemplary usage of the storyboard tool according to one embodiment of the invention.
  • FIG.12 is an exemplary illustration of a storyboard with Navigator, Search and the Information Slip turned off;
  • FIG. 13 is an illustration of a presentation slideshow according to one embodiment of the invention.
  • FIG. 14 is an exemplary presentation comment view
  • FIG. 15 is an exemplary screen flow diagram according to one embodiment of the invention.
  • FIGS. 16A-16E depict how exemplary buffer states are updated upon application of exemplary changes made by multiple users
  • FIG. 17 is an illustration of a peer-to-peer topology
  • FIG. 18 is an illustration of a star topology
  • FIG. 19 is a schematic block diagram of logical components of a multi-user collaboration system according to one embodiment of the invention.
  • FIG. 20 is a schematic block diagram of physical components of a multi-user collaboration system according to one embodiment of the invention.
  • FIG. 21 shows the top-level design for a GUI client component map according to one embodiment of the invention.
  • a multi-user collaboration system allows multiple users to organize and manipulate visual information collaboratively in real-time while maintaining descriptions, threaded comments, and other data related to the visuals correlated at all times.
  • the system provides the ability to invite others in to view/critique their work in real-time as it is created; the ability to allow others to contribute materially to their combined work product in either a real-time and immediate mode or in a high-latency disconnected mode, and the ability to communicate with others as a common work product is produced in a real-time and immediate fashion while not all people are necessarily present in the same physical location.
  • Alternative collaboration methodologies capable of providing these same advantages, may, with equal facility be implemented.
  • the system provides a web-based, private, secure, visual communications platform for the apparel industry.
  • the system focuses on the crucial "concept to sales" portion of the apparel cycle, enabling team members, suppliers, and customers in separate locations to work together while viewing the same images, folios, storyboards, and associated descriptions and comments that are correlated to the visuals.
  • the system helps eliminate the need for guessing and reduces the need for expensive and time-draining overnight shipping, long-distance phoning, travel, and meetings.
  • Real-time collaboration centered around visual information greatly streamlines and organizes communications and feedback. The system helps ensure better-targeted products hit the showroom floor faster, less expensively and with less waste, resulting in increased sales and profitability.
  • the system also referred to as a global apparel network (GAN) system
  • GAN global apparel network
  • GAN provides a collaborative environment for the fashion industry.
  • GAN users can collaborate and communicate using GAN tools to give presentations, share product ideas and show off collections.
  • GAN allows individuals and teams to organize and manipulate design elements in a collaborative environment with multiple levels of participation and security.
  • GAN Subscribers (users/members) and Guests range from designers and creative teams to buyers and sellers, suppliers, mills and retailers.
  • GAN allows designers to view, capture and organize visual information and concepts coUaboratively, then communicate these concepts to suppliers, manufacturers and retailers worldwide in a secure environment.
  • Suppliers and mills can use GAN to organize and present their offerings of fabrics and product lines to their designer customers.
  • Stylists use GAN to organize their design ideas and information, as would an apparel designer.
  • the GAN software environment consists of the GAN Client Application that runs on the personal computers (PCs, Macs, and Linux systems) of the Subscribers and Internet communications links that provide connectivity to the network of GAN Servers.
  • the GAN environment extends outward to invited Guests who can be reached by email to review and comment on Presentations via a web site.
  • business partners such as designers and suppliers to share visual information is vital to their business process today.
  • the system provides tools that supports the Concept-to-Sales phase of the apparel industry.
  • Such tools allow the organizing of images, storyboarding, and commenting, communicating, and sharing of images and storyboards.
  • Exemplary tools provided by the system include, but are not limited to a folio tool, presentation tool, storyboard tool, quick image editor, instant messaging, information pane, favorites tool, navigator, search tool, notification tool, and GAN assistant.
  • the folio tool is a collaborative tool for multiple users to organize images and label them in an easy to use format.
  • the images are presented in a structured row format. Functionality is provided to label and caption the images.
  • three folio templates are provided.
  • the folios may be shared with any GAN customer. The sharing recipients may make comments to the overall folio and or individual images contained in the folio.
  • the presentation tool is a collaborative tool for customers to present images and storyboards in an easy to use, slide show format. Functionality is provided to label and • caption the images. Presentations may be made available to any recipient with an Internet browser that enables GAN customers to easily reach external business partners with visual information securely, and receive comments from them. The images within the presentations may be locked for additional security. The sharing recipients may make comments to the overall storyboard or individual images contained in the storyboard.
  • the storyboard tool is a collaborative tool for system clients to create collages of images and shapes.
  • the tool allows users to crop, resize, rotate and flip images.
  • Drawing tool is provided within the storyboard tool to create ellipses, rectangles, simple lines, freehand lines, arrowed lines and rich text, as well as to select colors with HSB and RGB color options for objects, lines and text.
  • Functionality is provided to label and caption the images
  • the sharing recipients can make comments to the overall storyboard and or individual images contained within a storyboard.
  • the quick image editor provides tools for system clients to edit images within the environment provided by the system. These tools allow a user to crop, resize, rotate and flip images. The editor also provides the ability to make updates to information slip details and GAN element types.
  • Instant messaging provides a private, secured chat functionality between system clients. During a current chat, a link to a current shared object may be provided for added ease of use. Instant messaging also provides emoticons for visual expression within the chat format. An instant messaging Bar presents icons that represent the online/offline status of
  • GAN users in context of a shared object.
  • the information pane is a tab structure used to organize comments and pertinent information relating to an object.
  • four distinct tabs make up the information pane which allow sharing and communications within the system's collaborative environment. These tabs include: Information Slip, Caption, Sharing and Comments.
  • the Information Slip tab is referred to as "the pertinent information on the back" of a GAN object. Some of the fields include season, delivery and description, which are used for structure and organization as well as to enhance communications between sharing recipients.
  • the Caption tab provides an optional block of rich text to accompany GAN objects. Captions are used to clearly communicate headlines or special call outs to shared recipients.
  • the sharing tab allows haring roles to be designated and displayed. The sharing tab clearly communicates to all GAN customers their role relating to the associated GAN object.
  • a Comments tab provides rich text tools for shared participants to make comments.
  • the comments are labeled by participants name, date and time of comment text.
  • the favorites tool offer functionality to place-hold important GAN objects providing one-click access.
  • the navigator is an organizational tree-structure in the GAN environment that shows all resources available to the GAN customer including people within their company, contacts and private as well as shared work.
  • the search tool provides functionality to do simple and or advanced searches on all GAN objects associated to a GAN customer.
  • the notification tool provides notifications in an automatic, visual, one-way communication channel to inform a GAN customer that activity has occurred affecting shared objects. Notifications may also be used as a channel of communication to send a short message to a user, for example, as an email.
  • the GAN assistant provides GAN customers with support tools such as answers to frequently asked questions, how-to steps to use the GAN tools and the GAN glossary of terminology.
  • the basic building block of the GAN environment is the Image.
  • Images are pictures on the computer that come from scanning, digital photography, the web, or from other computer applications such as Photoshop, Illustrator and other paint programs.
  • Images are more than just a picture on the computer screen however. They are like a photograph with a picture on the front and writing about the picture on the back.
  • the "writing on the back" is referred to as the Information Slip and contains information such as the image's name, source and description.
  • a Folio is an organization tool used to categorize images and sequence them within those categories, much like a real world folio lets you place sheets of paper into sections and makes it easy to add, remove and order those sheets of paper. For example, a designer will use a folio to organize images representing ideas and product inspirations while working on a new product line, using categories like Trends, Colors, Silhouettes and Textiles.
  • a Folio in GAN is like a photo album with section tabs and see-through sleeves where images can be placed. The images can be immediately looked at and their information slips can be examined. Comments can be added to the folio, like stuffing notes in to the same sleeve as an image. Visually a Folio looks like rows of filmstrips, where each row has a descriptive name.
  • a Storyboard is a collage of images. It is like a sheet of corkboard where images are tacked. The images are visible and their information slips can be examined when necessary. Comments about the storyboard can be added to the Storyboard, like tacking notes on to corkboard. Unlike a corkboard however, Storyboards allow images to be resized, cropped and rotated into the collage, can be drawn upon and have snippets of text added; yet the underlying images retain their original information slip and image. The comments and their visual cues on the Storyboard can be either visible or hidden from view.
  • a Presentation is a structured sequence of images and text. It is like a flip chart where each sheet has both an image and text either describing the picture or providing the verbal content of the presentation. It is a tool for presenting complex visual ideas, with a focus on exchanging comments between the presenters and presented. For example, a Salesperson from a mill could use a presentation to show the latest fabrics and patterns to some designers, and get their feedback about what they like and don't like. Presentations are always intended to be shared with others. Presentations are an effort to communicate ideas to customers and team members. Presentations can be shared among GAN users. Presentations can also be published and made available for sharing to non-GAN users as well as to GAN users.
  • CCF COLLABORATION OVERVIEW 5 The system foundation implements distributed shared workspaces based on the concurrent distributed operation transformation algorithm that implements CCU (Calculus for Concurrent Update). The distributed shared workspaces are used to provide a platform that fully supports the implementation of shared objects for which the object updates and metadata updates are managed by the workspace associated with the object. 0
  • the folder may contain other objects that belong to different shared workspaces, but updates to the folder itself, (the addition of objects, arranging of objects, renaming of objects, removal of objects)
  • every object in CCF is sharable.
  • a shareable object by design, supports the application of multiple simultaneous updates.
  • any updates that cause a conflict are transformed to represent a new but still meaningful updates which, when applied, ensures consistency of all the views of the object.
  • Shared workspaces are used to define the context within which a single object type is shared.
  • Each shared workspace is a separate environment with a specific set of semantic update and concurrent operation transformation rules. For all objects that it manages, the workspace maintains a history of updates, enforces access control rights and resolves conflicting updates.
  • a shared file environment specifies rules that define what happens when a file is added, deleted, updated, moved or renamed and the operations are consistent in the presence of other concurrent and possibly conflicting operations within the same environment.
  • Each user that is a participant in the shared workspace will also be made aware of the changes as they occur provided that they are connected to the network.
  • a workspace object is initially shared only with its owner/creator.
  • All updates to shared objects are tracked and the user receives both the updates as well as notifications identifying objects that have been modified.
  • the granularity of the updates and hence of the transaction log is dependent on the object being updated. Certain objects such as swatches have very small changes that can occur to them, while other objects such as arrangements can have larger updates/changes that can occur to them.
  • an image of a swatch of fabric along with its information slip can be viewed by many people. If one person corrects the spelling of the mill, and another person changes the cuttable width at the same time, all users sharing the swatch that are connected to the network will almost immediately see both the mill change and the cuttable width change.
  • Objects in CCF can be contained within structured views. Any single object may be an item that is contained within a number of structured views. However, within CCF there is only ever one "real" object instance, even though it appears to be in many places. Continuing with the previous example, when the mill and the cuttable width changes are made, almost immediately the information slip for the image would change in every structured view where the image was used.
  • Access rights are localized to views and are inherited. So for example, if a view is shared with another person, initially that person is granted a default set of rights.
  • the default rights are domain specific and are configured by specifying a default initial set of rights with default rights for each object type. The default rights are then constrained or expanded by any inherited access rights constraints.
  • an object in CCF, maintains an access control list that defines access control for the object.
  • the initial control set applies to all users.
  • Fine-grained access rights may be applied by extending the access control set to grant additional rights or revoke already granted rights for specific users.
  • CCF supports the following access control set facilities: Create, Read, Update and Delete.
  • Every object has an initial access control set specifying access rights for Owner, and for Others.
  • An owner has Create, Read, Update and Delete privileges to all objects that they own thereby allowing an owner to alter the access control set of the objects that they own and to modify the object itself.
  • An owner may also designate another user as sharing ownership, thereby granting another user the right to update access rights.
  • Every object in the system is also owned by Administrator. This is a special user that is used by the system maintainers to manipulate objects and access rights on behalf of users of the system.
  • Create, Read, Update and Delete are abstracted out into user roles.
  • GAN defines roles using a publishing metaphor for Author, Editor, Reviewer and Viewer. Disconnected Collaboration
  • Network connectivity is a transparent attribute of a shared workspace. This means that connectivity is not required to make forward progress, but connectivity is required to interact and share your work with others. Users may opt not to share their work even though they have network connectivity. In this case it is as if the user pulled the network cable out of the back of their computer.
  • the shared environment collects the local updates but does not transmit them to remote users until the user has indicated that they wish to connect that shared workspace to the network. Initially we only allow a single connect option. That is, either the user is connected or they are not.
  • Alternative embodiments may include disconnected, receive only, and other connected options. In the current embodiment, if a user specifically desires to receive collaboration from other team members before exposing his/her own collaboration, that user would simply delay his/her own work on that specific arrangement until the desired collaboration from others is received.
  • the shared workspace considers the users update to have occurred prior to the change in access rights. However, in the case of a user who no longer has any access rights, that user will be refused connection. The changes are applied and the user will be notified of their change in access rights on that object. Notification
  • a notification mechanism can be set that will notify users of updates against any CCF managed object.
  • An easy user interface is created that allows users to check their notifications and to set default retention policies (that is, how long a notification is kept by the system).
  • Notifications are a one-way channel from the network to the user and are therefore not distributed beyond the intended recipient. Multiple recipients may however receive a global or a limited broadcast notification.
  • a team is sharing an important folio, and someone on the team makes a change.
  • a notification is sent to all people sharing the folio so they are aware of the change.
  • Notifications may also be commonly used to communicate an instruction to a recipient. "Descriptions”, on the other hand, are more often used to better explain or describe the arrangement and/or element it is associated with.
  • the “Comment” field is meant to contain the “comments” between sharers.
  • One embodiment of the present invention provides for font attributes such as bold, italicize, underline, etc. These attributes are available for notifications and wherever else possible. Publish
  • Publish refers to the act of freezing an objects state at a point in time by making an entirely new copy of it and all its components, and restricting all modifications to it. Any CCF object can be published. Alternative embodiments provide a limited set of tools for published objects. Functional Abstraction
  • CCF CCF
  • Objects are the "things” and Tools act on the "things.”
  • Elements and Arrangements are the main Objects.
  • Elements are the base "things” to be shared, for example pictures.
  • Arrangements are collections of Elements, usually arranged in a specific order, for example pictures sequenced into a presentation. Tools are used to look at and manipulate Elements and Arrangements.
  • a user creates, collects, assembles, organizes, analyzes and shares fundamental design elements and both formal and informal arrangements of design elements with colleagues and co-workers.
  • Elements are the fundamental object that can be recognized by the CCF Environment.
  • the Element metaphor is a photograph. It is like a photograph with a picture on the front and writing about the picture on the back.
  • CCF we will refer to the picture as the image or file and the writing on the back as the Information Slip.
  • the image is really an image file (type JPEG or PNG)
  • the Information Slip is really meta-data in name-value format about what the file represents in the real world.
  • Elements can contain any arbitrary file format and meta-data, as long as there are tools created that support the manipulation and rendering of the element within the CCF.
  • Users are elements that represent users of the CCF or non-users also known as Contacts. Users are used to authenticate users of the client or web site. Users are used to represent sharing. Users are used for Email, Notification and Instant Messaging.
  • Type (Client Users or External Contacts), Full Name, Short name,
  • Company Email address
  • Password To clarify any concern about differentiation between users within a company: In an organization, my company has users that have specific roles- users can be placed into specific folders i.e. design folder, sales folder etc. so there is company organization and structure to company users.
  • the system administrator will have the ability to add users and block or delete accounts. Arrangements
  • CCF has two types of Arrangements: Folders and Teams
  • Teams are arrangements of users and are used to simplify sharing of arrangements across teams of users.
  • a Folder is the fundamental unstructured Arrangement.
  • a Folder behaves much like a computer folder in a traditional file system, but where a computer folder holds files and other sub-folders, a Folder holds elements and other Arrangements. Items in a Folder can be viewed as a list sorted by Name, Date, etc. or as icons but there is no other structure to the items in it. The three remaining Arrangements enforce a structure on the items inside them.
  • Folder metaphor is a box, filing cabinet or pile of random items. An item is in a Folder because that was the most convenient place to put it when it was created or acquired. An organized user or group of collaborators can use folders extensively to organize materials if they wish, but the Environment neither requires or restricts such possible use. Folders will most often be used to create a shared project view to allow a team of users to create a collection of Images, Folios, Storyboards, Presentations and even more folders that they will share with other users of the network. Folders have three attributes: A list of Content (which can be any number of arrangements or elements), Sharing (the list of Users or teams able to share the Folder), and its own Information Slip.
  • the information slip of a Folder is as follows: Name, Description (variable length text field), Author (automatically filled in with the creator's Name), Date Created (datetimestamp automatically supplied by the system when the Element is created.).
  • Name Variable length text field
  • Author automatically filled in with the creator's Name
  • Date Created datetimestamp automatically supplied by the system when the Element is created.
  • Keywords One embodiment of the present invention also enables the use of Keywords.
  • folders There are also a number of special folders. They behave like folders, but may not be implemented as folders. They are World, My Company, My Projects and Presentations.
  • a Team is an Arrangement of Users. People often work in teams, and it is convenient to group them so they can be referred to as a team. Users can be on multiple teams.
  • the A-Team in a company may have default roles for Ted as Author and Joe as Viewer; which define their maximum permissions of that team. If a folio is shared with the "A-Team" with the permissions of Viewer, both Ted and Joe are given permissions as viewers.
  • a user may have a group of users defined with certain permissions, if that user decides to share an arrangement to that group with permissions other than their default permissions, the permissions of that shared arrangement will "win" in this sharing scenario. Both default and specific permissions are changeable by the Author. TEAM contains
  • This in CCF can be shared.
  • the mechanism for specifying sharing on something in GAN is to explicitly associate it to Users and Teams with the appropriate permissions. For example, when Anne wants to share a Storyboard with Barbara so they can both update it, Anne will add Barbara to the Storyboard and explicitly specify her permissions as Editor. Almost immediately after that, Barbara is able to see the Storyboard in her GAN Client and is able to modify it. Sharing can also be inherited from the sharing specified on a containing arrangement.
  • the present invention contemplates future embodiments which consider publishing with comments as a option, since it is likely that the creator would specifically wish to make comments in effort to communicate to the recipient over and above captions- in order to successfully communicate the presentation.
  • a number of common tools is exposed to the end user through their interface. These are:
  • Calendar - a simple monthly calendar displaying days and dates, no scheduling.
  • Search - a search facility that can be used to locate objects is implemented.
  • One embodiment supports simple text matched to specific fields with an implied AND across the fields.
  • Alternative embodiments contemplate the addition of Boolean and other advanced pattern.
  • History - object history viewer is implemented so that the user may see a history of updates and may use that history to undo certain updates. The amount of local history depends on parameter settings. Server side history is kept as per the top-level network policy.
  • the user interface may be modeled on Photoshop history as shown below in FIG.l. I • This Histories Palette as defined in Photoshop is shown above for reference by those who are not familiar with Photoshop:
  • the History palette lets you jump to any recent state of the image created during the current working session. Each time you apply a change to an image, the new state of that image is added to the palette.
  • All of the basic GAN elements are created externally by scanning, digital photography, capture from the web, or by any computer applications such as Photoshop, Illustrator or paint programs the user may have on their own computer. These elements are
  • the Image Importer 20 brought into the system via the Image Importer or by cut/paste or drag/drop from other applications.
  • the Image Importer prompts the user to select an Element type and the Information Slip is created and attached to them.
  • Element type image/miscellaneous could be used in multiple ways. For example, it would be an element type chosen by a user who is not ready to define a specific element type for at the time of import. Another example would be that the user imported the image because
  • files are in .pg or .png format.
  • the system uses .jpg format in the clipboard mechanism.
  • Elements can be extended in future embodiments of GAN such that they could contain different file types such mpeg or avi video clips and sound files.
  • Video clips can show how garments move when worn and sound clips can add audible narrative to elements and Presentations.
  • Video clips also provide a creative opportunity to share captures of street scenes, fashion shows, fit sessions, etc.
  • One such alternative embodiment adds to the previously discussed seven elements, a Color Chip Images
  • Images are Elements used to represent the following real world things: Artwork, Color inspiration, Sketch, Swatch, Tear Sheet, Trim and Image/Miscellaneous. Please see the Glossary for a detailed description of these.
  • image files are either JPEG or PNG formats.
  • Alternative embodiments may incorporate alternative image file formats.
  • the visible information slip displays all meta-data contained in the Image: Image contains
  • Type - Artwork Color, Sketch, Swatch, Tear Sheet, Trim and Image/Miscellaneous.
  • a Swatch is an Element that specifies an image of a fabric sample.
  • the image is typically a color digital photograph or color scan of an actual fabric.
  • the file type and Information Slip for a Swatch Element have all the characteristics of an Image, but include additional information to identify the Mill and physical characteristics of the fabric.
  • the Swatch Element information slip includes the following additional information: Swatch extends Image contains Style Number Composition Cuttable width Cuttable width units Country of Origin
  • an enhanced color capability is enabled This is accomplished through the use of color chips.
  • a color chip represents a single color in a color palette.
  • Well-known colors the Pantone colors
  • Custom colors will typically be created for color palettes shared across a design team.
  • Image file is empty, therefore the visual representation is derived from the RGB value.
  • GAN has three types of Arrangements.
  • Folios Storyboards Presentations All Arrangements are containers of design elements and other arrangements. Their only purpose is to group collections of objects for better understanding and ease of manipulation.
  • One embodiment of the present invention adds additional Arrangements: Trend Board Color Palette Published Folio Published Storyboard
  • the visible information slip for a Folder contains: Name Season Delivery Source
  • GAN The topmost folder representing all the users and GAN data in the world.
  • GAN Folder extends Folder contains Season Delivery Source Folio
  • the Folio metaphor is a group of organized stacks of design elements to be reviewed.
  • An item is in a Folio because it needs to be considered in context with all the other items in the Folio.
  • a folio organizes its contents as one or more named rows of objects.
  • the Author of the folio specifies the name of each row.
  • a row may contain zero or more Elements, Folios, Storyboards and Presentations with no practical limit on the number.
  • Rows provide a loose organizational approach to associating design elements but no rigor is applied in controlling what goes in a row.
  • Row names might mirror design elements, ⁇ for example, swatches, sketches or colors.
  • Row names may collect trends, for example, celebrities at the Oscars, innovative designs or hot textures. The creator of a folio may populate it with, for example, final styles, fabrications or textiles available.
  • Folios have rows, but no columns. However, the creative team may agree to drag the most interesting objects to the front (leftmost) of the row.
  • each item When displayed in the folio, each item shows a thumbnail view, the name, and Highlight Text.
  • Highlight text is free form rich text that is typically used to temporarily highlight an item in a folio, to either draw attention to it, or provide special instructions to the
  • the Information Slip contains the following information: Name 0 Season Delivery Source
  • Date Created (datetimestamp automatically supplied by the system when the Element is created.)
  • a wizard is used to assist the creation.
  • Storyboard is an Arrangement of Image Elements, drawing and text in a collage for the purpose of conveying an idea or to "tell a story.”
  • a Storyboard is composed of any number of items displayed on a two dimensional canvas. Elements are seen as their underlying image elements. They can be positioned by using Move and Z-order. They can be sized by using Resize, Crop and Rotate.
  • Storyboards display text as a compositional element of the collage.
  • Text fields are rich text, and contain font, color and highlight information as well as text.
  • a simple drawing tool enables the user add markups to the Storyboard.
  • a Pencil tool draws a line with a selected color and selected width.
  • Alternative embodiments contemplate the implementation of additional shapes and lines. Additional tools may be implemented in response to user requirements.
  • Comments can be made against the storyboard.
  • the comments have Visual Cues placed on the storyboard.
  • a Designer can comment on the entire storyboard and say, "I think this needs more work", and by placing a visual cue on the storyboard by a collar, say, "I like this collar.” All storyboards have a visible Information Slip that describes the storyboard as a whole.
  • the Information Slip contains the following information: Name Season Delivery Source
  • the canvas of a storyboard is a 4x3 aspect ratio suitable for displaying full screen or printing on landscape-oriented paper. Zoom and Scroll are required on the Storyboard window to accommodate different size monitors, different size paper and different levels of detail.
  • Canvas size is a 1.00 x 0.75 floating-point coordinate system where each element is placed on the canvas by its relative floating-point coordinate, and every element is re-sized to a floating-point size relative to the same floating-point size relative to the canvas.
  • the element retains its original pixel size and dpi density, but is scaled on the fly relative to the floating point coordinate system, the Zoom, the size of the space to be rendered in, and the scroll bars.
  • One alternative embodiment contemplates extending the canvas to a virtually expanding lxl space that will fit to the widest points horizontally or vertically and potentially rescale to any arbitrary aspect ration on the fly.
  • the background color can also be set.
  • One embodiment uses the colors available in JDK1.4 Alternative background colors may, with equal facility, be implemented.
  • STORYBOARD contains Name Season Delivery
  • Name (default is like a footnote... [0], [1], [2], etc ., Alternative embodiments allow the name to be set) ([0] always exists off canvas)
  • the Presentation is an Arrangement of Image Elements and text in a slide show for the purpose of informing an audience and gathering feedback.
  • a Presentation is composed of a series of slides where slide order is important. Each slide has an Image Element, Folio or a Storyboard and a rich text block as the caption for the slide or the presentation's verbal communication. Elements and Storyboards are seen as their underlying image elements. Folios are seen scaled to fit as a thumbnail view. Comments can be added to the overall presentation or to each slide with visual cues on each slide.
  • Presentations can be actively shared during their development or published then shared.
  • the visible Information Slip contains the following information: Name
  • Reference to user Timestamp Comment text List of Comments contains (For the overall presentation) Reference to user Timestamp Comment text If a user wishes to compare slides, side-by-side, he/she can open them both and size the windows to the available screen real estate. The presentation will scale to fit. Color Palette
  • the Color Palette is a container object that includes a generator for Color Chip basic design elements and storage to hold the created palette.
  • the Color Palette Generator includes a color wheel and a Color Sampler Applet. Color objects drag/dropped onto the CSA can be sampled and the sampled colors may be added to the user's Color Palette. Color Chips in the Color Palette items that are drag/dropped from the Color Palette into other Arrangements become individual Color Chip basic design elements. Trend Boards
  • a Trend Board is a special type of Storyboard which is read only by all GAN users in an organization. Only the Trend Board Administrator may create/write trend boards. An organization may have as many trend boards as they wish or none at all. Users should think of it as a company library of forecasted colors, trends, and basic design Elements. Published Presentation
  • a Published Presentation has the same attributes and visual behavior as a Presentation.
  • the slides and their content are not modifiable, but comments can be added and viewed.
  • a Published Presentation can be locked so no one can reuse the GAN objects within it.
  • the user interface looks and feels similar to the GAN client, except where the technology limitations of HTML require different look and feel. Comments can be added and viewed through the web interface.
  • PUBLISHED PRESENTATION contains All the attributes of PRESENTATION plus Locked Published Folio, Storyboard, Elements
  • Additional GAN features may, with equal facility, be made available in alternative embodiments of the GAN client and Web interface.
  • the GAN environment further assigns end-user roles to specify the application security model as follows: Author, Editor, Reviewer and Viewer. These roles are implemented by mapping to the CCF access control set facilities (Create, Read, Update, and Delete) as follows:
  • Author has absolute control over all objects that he or she has created. They can add, modify and delete. They control sharing. They can add comments, read all comments and delete comments. An Author has no access to objects that they did not create if no additional access has been granted. An Author is synonymous with Owner access rights.
  • Editor can add and modify. They can see the presence of the other users who are sharing. They can add comments and read everyone's comments. A user with the
  • Editor role has View and Update rights, they do not have Create and Delete rights.
  • the Editor has element delete rights, as opposed to the author who has the right to delete the arrangement (or container) of the element and who also controls sharing.
  • Reviewer can view and add comments. They can see the presence of the other users who are sharing. They can add comments and read everyone's comments.
  • Viewer can view, add comments, read their own comments, and read the Author's comments. They can only see the presence of the Authors.
  • a number of rules for sharing have been defined for creation and the inheritance of sharing from containing arrangements. Whoever creates something in GAN is automatically called the author of it. The author also controls how it is shared, and initially it is shared only with the author with a default permission of None, which means to inherit permissions from a containing association. The author may choose to share with others without restrictions, or they may place permissions on what may be done. Permissions can be placed by explicitly adding them, or can be implied by creating within a containing arrangement.
  • Permissions can be set to a default for all users, explicitly set for individual users, or inherited from its container's permissions.
  • a users' permissions are computed by taking the intersection of permissions placed on everything they are contained in, the explicit user permissions and the default permissions.
  • the purpose of the following scenario is to represent the concept of inheritance.
  • Abe creates a folio named F.
  • the container object that permissions are inherited from is folio F.
  • the Folio contains a storyboard named S.
  • Abe is the author of Folio F and shares Folio F with Bob, as an editor.
  • Abe shares Storyboard S with Charlie, as a viewer.
  • Charlie can only look at and comment on Storyboard S.
  • Bob can modify both the Folio F and Storyboard S, because Storyboard S is contained within Folio F (the container object).
  • Abe can do anything he wants to, including sharing the folio F or storyboard S with other people.
  • the authors can explicitly delete a Shared Presentation or simply remove themselves from sharing the object. When shared to multiple people, if the authors remove themselves from sharing, the presentation continues to exist. The act of users deleting a presentation where they are not the authors, simply removes the user from sharing the published presentation. When the last people remove themselves from the Published Presentation, it is actually deleted. The author may choose to notify other users if they delete a presentation in order to inform other sharers (users) of the action.
  • the act of publishing a presentation copies the presentation, to the designated folder specified by the user.
  • the act of publishing allows GAN users external to their company to view the presentation and makes the presentation available for non-GAN users on an Internet Web Site URL. If the recipient of the presentation is a GAN member, the recipient can move the presentation once received to any other folder location they choose. If not a GAN member, they do not have the client to perform such function.
  • FIG. 2 is a screen shot of an exemplary user interface window (main client window) 100 according to one embodiment of the invention.
  • the main client window is reused for all open occurrences of the client, for all tools and all administrative tasks.
  • FIG. 15 is an exemplary screen flow diagram according to one embodiment of the invention.
  • a Navigator area 102 uses a structured view of everything using a folder metaphor.
  • the folder View looks like Windows Explorer for ease of training and adoption. However, unlike Windows Explorer, the user sees only what they have created or have been shared with them. It is a hierarchical representation of everything available or of interest to a user.
  • Visual cues in the navigator area show the user when new files have been shared or have been updated since they were last viewed.
  • the visual cue in one embodiment is holding for new or updated items.
  • Alternative visual cues may, with equal facility, be implemented.
  • CCF there are some special folders in the navigator that may or may not be implemented as real folders. They are:
  • World represents the entire CCF network as a top level in the hierarchy.
  • My Company represents the top level in the hierarchy for a company.
  • a company usually maintains their own security policy and therefore is distinct. If something from another company is shared with a user, a folder at the same level as My Company appears with the other company's name, and the shared object appears as a subf older.
  • My Projects is the folder where everything that is not shared with anyone other than the current user appears. It is also the default for importing new elements.
  • Shared projects are a container where everything that is shared with a user by another user, but not explicitly placed in a folder hierarchy by the user "sharer", appears. Authors always are associated with a shared "thing”.
  • Design meetings Fall 2003 For example, a user creates folder called Design meetings Fall 2003, and shares this folder with her team.
  • This folder contains 2 folios and 3 storyboards and is the explicit location of these shared objects, as they reside in the top level hierarchy folder name Design meetings Fall 2003.
  • the link to this folder is to the shared projects folder of the team members, named Design meetings Fall 2003. Any of the team recipients may take this shared folder from their "shared projects" folder and drop it into any of their specific folders as they choose.
  • An administrator may create additional folders under My Company, to partition sharing by department for example. All users can create folders under My Projects, Shared Projects and Presentations. These folders appear in another users' navigator if their authors have shared them. After receiving a shared object, that object may be located in the shared projects folder. Any user has the ability to place that shared object in any folder location they choose within their client. This does not conflict the sharing permissions designated by the author. This functionality exists so everybody can organize their things the way they refer to them, not the way the author referred it to them when they shared it.
  • the Navigator area can be hidden from view. Object Area
  • An Object Area 104 is where all the tools run, such as GAN tools: Folio, Storyboard and Presentation. People Area A People Area 106 displays a list of users who are sharing the contents of the Object
  • Visual cues indicate the users sharing permissions.
  • a menu 108 of the main client window 100 is similar in style and content as the Microsoft Office suite of applications.
  • the top level Menu in the menu bar is:
  • toolbar arrangements are supported by the principles of the present invention.
  • the leftmost toolbar 110 is common to all tools.
  • the rightmost toolbar 112 is specific to the current tool being used.
  • the common toolbar contains:
  • a status bar 114 reflects the state of the current tool, and the client overall. It appears on every window.
  • the status of the client is always be visible via the taskbar. In the case of importing pictures or invoking the print engine, a "wait clock" will appear. Search Area
  • a search area 116 allows the user to enter a search string which does a simple text search against all objects the user has access to.
  • the pane is kept as small as possible.
  • Active Favorites are like favorites in Internet Explorer, with the added feature that when they appear in the Active Favorites area on the clients, they can have objects dropped on them and tool specific actions occur.
  • a folio Active favorite for a folio named Concept2002 A user can CLICK it, which opens the folio named Concept2002. A user can drag an image to this folio and it will DROP DOWN a list of the row names of the folio, and when the image is dropped, the image is linked as the first item in the row.
  • the Favorites bar can have simple "Open this object in a new window” links to objects, saved searches and Active Favorites.
  • Active Favorites include Users and Teams. If an object is dropped onto an Active Favorite User or Team, that is the same as Sharing the object with those users. Dialog Boxes
  • dialog boxes have a consistent look and placement of controls. Similar questions are asked in a similar way across dialogs. For example, a confirmation message should NOT say, "OK to close and lose all your changes" in one dialog and "OK to close and save all your changes" in another.
  • HELP items can be added, like GAN tutorials, possibly as Presentation Objects in the GAN environment. tutorials may optionally use the presentation tool to present tutorials to the user.
  • chat/instant messenger may be provided as well as access to an online help text repository i.e. knowledgebase, and FAQ's.
  • the latter can be through the use of a web browser to show the information, possibly from a local cached copy.
  • Drag and drop of an Object onto a folder places a reference to that object in the folder.
  • an Object for example, GAN Image, Folder, Folio, Storyboard or Presentation
  • Drag and drop of a User to an Object (Element or Arrangement) or visa versa opens a Sharing dialog box to walk the user through the process of sharing the object with the user(s).
  • Drag and drop of an Object to a favorites add that object to the object represented by the favorites.
  • the default position is at the beginning of the object (For example in GAN: first page or presentation, first row of folio, top left corner of storyboard).
  • Drag and drop also has tool specific instances, which are explained in the tool's functional specification.
  • Example of a tool specific instance in the event that a user is dragging and dropping an element to a folio row.
  • the tool specific instance is that the system flashes an insert bar cursor, to tell the user where the element will be dropped in the folio row.
  • Context Menu general use rules Context menus are used extensively in the system. Objects may have a context menu associated with them regardless of where they are currently being used.
  • Tool tips are used on all favorites and toolbars. Tool tips are used sparingly in parts of the application where extensive visualization is required. For example, in GAN there should be no tool tips popping up on a storyboard' s canvas, except perhaps when Comment Visual Cues are selected. Visual Cues When Objects Have Been Updated
  • a visual cue is available in all tools to indicate that a object has been updated since last time it was viewed. For example, the Navigator holds the names of objects that have been updated.
  • hover there are not many stated requirements for hover.
  • Tool tips appear with hover.
  • GAN In GAN, during drag and drop over folio favorites, the hover causes the favorites to drop down a list of the row names to appear, and allow the user to drop the element in the desired row. Create New
  • the default state is to create the new thing within the current context (if it is supported). Otherwise it is created in My Projects.
  • the Navigator pane looks and behaves the same as the client Navigator Pane.
  • the New Folder button creates a New Folder and requires the user to name it prior to pressing OK. Name is required. Specific meta-data can be requested from the user in the dialog box to be filled in during creation, as in the above GAN example, Season and Delivery. Import
  • the Import action from a menu or toolbar opens an Import dialog box that allows the user to select a file or directory from the local file system as is illustrated in FIG.4.
  • Create New dialog box appears with the additional ability to select one of the element types.
  • the default is to create the Element within the current context (arrangement) if one is in use in the current Tool.
  • Import directly imports the file and replace the current file of the Element, without altering the information slip. In this case Import Step 2 dialog box does NOT appear.
  • Import is also be triggered when a file or folder from the file system or applications outside of CCF is drag and dropped anywhere into the Client. For example, drag Windows Explorer or Internet Explorer to the client.
  • the Import attempts to convert it to PNG at a default of 72dpi, and proceed with the import as a PNG file. For example, copy selected bitmap from paint program and paste to the client.
  • IMPORT techniques summary Menu -> File -> Import... Drag/Drop to GAN client Toolbar Batch
  • the export action triggered from any location causes the file of the current element to be saved in the users' local file system.
  • the export option on a menu or toolbar exists when the current context is an Element, and is disabled or not present otherwise.
  • the export of multiple selected Elements, or a selected folder, folio, presentation, or storyboard saves all the images of all the elements into the directory selected by the dialog box.
  • Open With... In an alternative embodiment, the Open With... option may be added to File menu and Context menus. This feature would allow a user to open an Element with a tool associated to that file type in their local computer.
  • Notifications allow proactive and automatic notification to activity within the system. Notifications can be manually sent from the client while working on an object. Notifications can also be sent automatically by setting the Notification property of the object.
  • FIG. 5 is an illustration of the main client window displaying notifications.
  • Notifications The visual behavior of Notifications is like an Instant Messaging log.
  • the user can sort by Read/Unread, Sender, TimeStamp or the Object referenced.
  • Notifications can be deleted by the user.
  • the author can delete messages by selecting them, pressing the Delete key or Edit -> Delete or context menu -> Delete.
  • Notifications contain hyperlinks that, when clicked, open the Object the notification is referring to in a new Client window.
  • the priority on Notification of Low Normal Urgent may be added in one or more alternative embodiments.
  • FIG. 6 is an illustration of an exemplary screen shot for transmitting a notification.
  • Folder Browser As mentioned in the Navigator Area section 102, a folder view is used as both a user interface convenience and to assist the CCF server technology to decide upon the physical locations used to store Objects. From a user interface point of view, the client will attempt to follow the user interface rules and conventions that Windows Explorer uses to navigate a folder tree. However, the Navigator also allows active Drag and Drop operations within it and between Navigators.
  • the look is similar to using Windows Explorer with Folders option turned on in the Explorer Bar.
  • the Windows Explorer "Folders in the Explorer bar" is like the Navigator Area, and the main area of Windows Explorer is like the Folder Browser Tool in the Client Object Area.
  • the Folder Browser is used primarily to organize Objects into folders. Clicking through the Navigator will open folders in the Folder Browser and show that Folder's contents. Double clicking on a Object in the Folder Browser opens it with the appropriate tool, replacing the Folder Browser in the Object Area. Objects of any type can be moved, shared in multiple folders, created and deleted. Cut / Copy / Paste and Drag / Drop are used for move and share. Cut is used to remove a link to a object from the containing folder. Copy is used to begin sharing the object with another Arrangement. Paste copies the last Cut or Copied link to the object to the target Arrangement. Drag / Drop by default copies a link to the Object to the target Arrangement.
  • the Folder Browser has the following views: Thumbnail - displays the Thumbnail and Name using up all available space in the
  • FIG. 7 is an exemplary illustration of a folder browser thumbnail view.
  • the Folder Browser can be sorted by Name and Creation Date. In one alternative embodiment, it can be sorted by any combination of individual Information Slip items and or Sharing criteria, for example, a user wants all images to be ordered by image type, season and date created.
  • Search reuses the Folder Browser technology within the Client for displaying search results.
  • the search tool is used to search the system for any Object that the user has created or is sharing. It is triggered either through the Search Area or Search Tool.
  • the Search Area has one free form text field. When triggered the search will pattern match against the description field. A user can also open the Search Tool in the Object Area by pressing the Advanced... button in the Search Area.
  • the Search Tool presents the user with an intelligent Wizard like search form. Common fields like Name and Description are on top. Specific Information Slip fields are made available based on the Object Type selected, for example, GAN objects have Season and Delivery, and only if Swatch is selected as the Type will a Mill field be an option in the search.
  • the search can also select on users or teams who are sharing the object with the user. In this embodiment, when multiple search fields are filled in, an implied AND across the fields is used by the search engine.
  • Alternative embodiments of the present invention contemplate the implementation of a sophisticated wizard for selecting search order, information slip fields to display and their order, and and/or logic across fields. Alternative embodiments also contemplate offering sub- searches to narrow down search results. Views of search results are same views available in Folder Browser, and fully support cut / copy / paste and drag / drop.
  • Searches can be added to Favorites as an effective automated organization tool. For example, a GAN user might save as a favorite the searches of all presentations sent to a specific user, because that user represents their most important customer.
  • Quick Image Editor
  • Quick Image Editor is the internal, minimalist graphic tool that can perform simple edits on the image stored in an Element.
  • the Quick Image Editor can crop, resize, scale, rotate, pencil draw on an element's image. It can also edit the Information Slip. This tool actually modifies the image in an Element.
  • different program code may be used within GAN Storyboards and Presentations to resize and crop the appearance of an Element locally in that Arrangement, although there is a similar look and feel. Quick Image Editor quick feature list
  • the principles of the present invention contemplate additional imaging editing functionality including, but specifically not limited to: add text (set font and color), contrast, brightness, select/cut/paste of bitmaps (including those from outside applications) and shape drawing tools may be added.
  • the Edit Information Slip is accessible and editable.
  • the Quick Image Editor is also able to change the type of object. For example, a Designer might want to change a tear sheet to a color upon further reflection after importing it.
  • Import opens a dialog box to save the image of the current element to the local file system.
  • Import opens a dialog box to select a local graphics file and replace the image of the Element.
  • Drag and dropping a graphics file from the File System replaces the image of the Element.
  • Pasting a bitmap replaces the image of the Element.
  • Authentication The user interface has a Login/logout prompt, plus the ability to Save Password... for those users who prefer the convenience and trust Windows authentication to protect all the passwords to their applications.
  • a user must be authenticated in order to receive and deliver updates to their Client.
  • the user's credentials must be current and their permissions must be appropriate based on the specification of the object author.
  • Connection with the network first updates credentials and then updates all other shared objects in the background. This allows for administrators to remove users and to disallow a user's pending updates should there be a policy decision that restricts the access of a user. Cases where this is useful include an end-user that was let go and the user has access to network from their home machine. A disgruntled former user might go home, start up their computer and attempt to delete as many shared objects as they can.
  • Authors can create external users (Contacts) and Teams. Administrators can also assign Authors to Teams. Authors can create external users (Contacts) within Teams. everyone can create Teams and non-GAN users in My Contacts.
  • External users can only access the system externally from the Web interface, and notifications are sent via email.
  • Alternative embodiments contemplate a provision for accommodating interfaces to external environments on the server.
  • only outbound email i.e. sending out email notifications
  • Returned email as a result of mail failure will appear as notifications to the originator.
  • the same tool is used to manipulate all types of users.
  • the user interface contains an Information Pane for the attributes of a user, and depending upon their permissions, the ability to create client or external users and reset passwords.
  • the system must allow the administrator to create a top-level environment, to specify meta-data templates for objects that the system is allowed to manipulate and to allow for the import of user and asset data so that the base environment may be populated.
  • the system should allow for the testing of the environment and for the re-import of the base data to ensure that the GAN environment is properly populated before use.
  • GAN represents the entire GAN network as a top level in the hierarchy.
  • the leftmost toolbar is common to all tools.
  • the rightmost toolbar is specific to the current tool being used.
  • the common GAN toolbar contains: New »
  • chat/instant messenger can be provided as well as access to an online help text repository (i.e. knowledgebase), and FAQ's.
  • the latter can be through the use of a web browser to show the information (possibly from a local cached copy).
  • the dialog box Whenever Create New is triggered regardless of source, from the menu, context menu, toolbar, or shortcut key, the dialog box also includes Season and Delivery, as is illustrated in FIG.3.
  • the Import action supports files or selects an imaging device including TWAIN imaging devices including but not limited to scanners and cameras.
  • TWAIN imaging devices including but not limited to scanners and cameras.
  • Create New dialog box appears with the additional ability to select an element type; and choose to type in two of the specified properties of the information slip: season 130 and delivery 132 as is illustrated in FIG.4.
  • FIG. 8 illustrates a dialog box for setting a notification option.
  • the behavior is to send the default notification message to all users who are currently sharing that object.
  • the only condition supported is On Changes. For example, by selecting Auto-notify "On Changes" a notification is sent to all users sharing the object whenever that Object is changed.
  • Notifications On Publish Notification options exist for all GAN presentations upon publish.
  • FIG. 9 illustrates an exemplary notification that is to be transmitted to a publish recipient.
  • the behavior is to send a notification to the publish recipients.
  • the notification automatically associates a hyperlink to the published presentation and a free-form text field is available to type a message.
  • system behavior is to provide an option to send a notification to the share recipients.
  • the notification automatically associates a hyperlink to the shared GAN object, and a free-form text field is available to type a message.
  • the behavior is to send a notification to a recipient with a free-form text field to type a message about an idea, thought or request.
  • the stand-alone notification in GAN is the equivalent to today's standard email.
  • Folio will be a heavily used tool. Objects can be added to any row in the Folio, and arranged within the row of the folio. Rows can be added, moved and deleted in the folio. The order of the items in a Row can be changed in the folio. The names of rows can be changed.
  • FIG.10 is an illustration of an exemplary folio accordmg to one embodiment of the invention.
  • Rows can be added with a folio tool specific Insert Row menu item and toolbar icon.
  • the new row's name are in focus in edit mode.
  • the row name can be changed later by clicking on the row name to put it in edit mode and make the change.
  • the Zoom control When viewing a folio, the Zoom control operates on the height of all the rows.
  • the images in the rows can be sized to fit the row height; up to the point where the pixel scaling is 1 to 1 (1:1 or 100%).
  • Objects can be added to a row in the folio by dragging / dropping, cut / pasting, import action and Insert Here... menu option.
  • items in a Row remain where they are placed. There is no concept of an "empty cell" in a Row, therefore when items are dragged to other rows or deleted the space closes up.
  • cursor When working with a folio, there is a cursor.
  • the cursor can be either on the cell holding a object or between cells.
  • Toolbar and Menu items either operate on the object when the cursor is on the object or the folio itself when the cursor is between objects.
  • Information Slip displays information about the object when the cursor is on- the object or about the folio itself when the cursor is between objects.
  • Import action sets the context to folio and a new element is created. If from the context menu, the newly added element is placed into the folio at the point the context menu was requested. It is directly placed in when between images, or placed before the image ⁇ under the context menu when over an image. Otherwise it is placed as the first image in the first row.
  • Insert Here... from the context menu brings up a new Navigator window including the search option.
  • the selected item is placed into the folio using the same rules as the import action.
  • Elements can be moved around the folio by drag/drop or cut/paste. While dragging a visual cue appears (like a cursor) to indicate the position in the folio where the image is dropped. The cursor can be moved to the most recently dropped item. Double clicking object 10 in a folio opens the object in a new window with the appropriate tool.
  • the context menu when over an object in the folio, operates exclusively on that object. When in-between objects it operates on the Folio itself.
  • the Active Favorite for a folio drops down a list of row names when hovered over.
  • the list is also active for drag and drop operations, and drops any object into the front of the
  • the information slip on an object can be displayed by: turning on the Information pane for the Folio tool in the client, and using the cursor to select the object to display.
  • the context menu item View Information Slip performs both the actions of turning on the
  • a Folio when the system is in its "icon" format, as when contained in a folder, a Folio is represented by a Thumbnail automatically derived from the first four images in the Folio and a numeric count of the number of items in the Folio. If objects are dragged onto a Folio icon within a folder, they are placed in the first position of
  • Storyboard is a collage tool for images.
  • the Storyboard tool can add Elements to the storyboard and place them anywhere on the canvas. The Elements may then be resized, cropped or rotated. Pencil drawings and Text boxes can be added local to the storyboard.
  • FIG. 11 is an illustration of an exemplary usage of the storyboard tool according to one embodiment of the invention.
  • Storyboards can be commented upon, and visual cues for the comments can be placed on the storyboard to refer to specific items on the storyboard.
  • the visual cue is an arrow with a number in it.
  • Alternative embodiments may allow the user to specify a label to go with the arrow.
  • Elements can be added to the canvas by dragging / dropping, cut / pasting, import action and Insert Here... menu option.
  • Import action sets the context to be the storyboard and a new element is created. If the import action is selected from the context menu, the newly added element is placed into the storyboard at the point the context menu was requested. Otherwise it is placed in the top left comer.
  • Drawing is done with the tools in the toolbar, and behaves like most windows simple drawing tools.
  • the pencil tool has three drawing widths and a fixed color palette of basic colors (for example, red green blue yellow black white).
  • a fixed color palette of basic colors for example, red green blue yellow black white.
  • the Text tool provides a box of rich text such that font, color and highlights can be selected.
  • Elements are moved around the canvas by drag/drop, moved forward and backward with the z-order tools (Move Forward, Move Backward, Move to Front, Move to Back) and they can be resized, cropped or rotated in place with the corresponding tools. Note that resize, crop and rotate does not alter the underling element; they merely alter its appearance in the storyboard.
  • a transparency mask may be added to "cut out" portions of an image to fit in the collage better.
  • Double clicking an element in a storyboard opens the element in a new GAN window with the Quick Image Editor.
  • the context menu when over an element operates on that element as appropriate. For example, Open in new window opens the Element, whereas Import... opens an import dialog for the Storyboard.
  • the canvas of a storyboard is a
  • ZOOM and SCROLL BARS are a given in order to accommodate different size monitors and different levels of detail.
  • alternative aspect ratios, and screen sizes may, with equal facility, be implemented.
  • the canvas size is 1.00 x 0.75 where each element is placed on the canvas by a floating-point coordinate, and every element is re-sized to a floating-point size relative to the same floating-point size of the canvas.
  • the element retains its originally imported pixel size and dpi density, and is scaled on the fly relative to the floating point coordinate system, the ZOOM, the size of the space to be rendered in, and the scroll bars.
  • FIG. 12 is an exemplary illustration of a storyboard with Navigator, Search and the Information Slip turned off. Presentation
  • a Presentation is a structured sequence of images and text.
  • FIG. 13 is an illustration of a presentation slideshow according to one embodiment of the invention.
  • the Presentation tool can add Elements, Folios and Storyboards and make them slides in the presentation.
  • the caption usually conversational style descriptive text for the slide
  • Presentations can be commented upon, and visual cues for the comments can be placed to refer to a specific place on a slide.
  • the visual cue is an arrow with a number in it.
  • One alternative embodiment allows the user to specify a label to go with the arrow.
  • Images, Folios and Storyboards can be added as a slide in the presentation by dragging / dropping, cut / pasting, import action and Insert Here... menu option. Items in a Presentation stay where they are placed.
  • there is no concept of an "empty slide" in a Presentation therefore when items are moved or deleted the space closes up.
  • the creator of a Presentation can add an Empty Element to reserve space, and then Import the appropriate image into the element later.
  • cursor When working with a Presentation, there is a cursor that is simultaneously in the image strip and the presentation pane.
  • the cursor can be either on the slide holding an object or between slides.
  • Toolbar and Menu items either operate on the object when the cursor is on the object or the Presentation itself when the cursor is between objects.
  • Information Slip displays information about the object when the cursor is on the object or about the Presentation itself when the cursor is between- objects.
  • Import action sets the context to the Presentation and a new element is created. If from the context menu, the newly added element is placed into the Presentation at the point the context menu was requested. It is directly placed in when between slides, or placed before the slide under the context menu when over an slide. Otherwise it is be placed as the first slide.
  • Insert Here... from the context menu brings up a new Navigator window including the search option.
  • the selected item is be placed into the Presentation using the same rules as the import action.
  • Slides can be moved around the Presentation by drag/drop or cut/paste in either the image strip or presentation pane. While dragging a visual cue appears (like a cursor) to indicate the position in the Presentation where the Slide is to be dropped. The cursor is moved to the most recently dropped Slide. Double clicking object in a Slide opens the object in a new window with the appropriate tool.
  • the context menu when over an object in the Presentation Slide or Folio within a Slide operates exclusively on that object. When in- between objects it operates on the Presentation itself.
  • the Text tool for the Caption area in the Information Pane provides a box of rich text such that font, color and highlights can be selected.
  • the Image Strip has a special Icon representing the Presentation Arrangement at the beginning and end, essentially framing the Slides in the Presentation.
  • the Player Control looks like a standard media player, and may optionally include First, Previous, Play, Next (default), Last and Stop, as well as other media player options well known to those having ordinary skill in the art.
  • the slide area, Player Control, information pane and image strip are open.
  • the Slide area zooms the images to fit the available screen in the slide area.
  • the Information Pane has the caption in focus and is positioned to the Caption for the Presentation Arrangement (much like a cover page for a physical presentation).
  • the Information Slip if selected by the user at this point will also be for the Presentation Arrangement. Pressing Next on the Player Control moved the cursor to the first slide, which updates the Information Pane for the Presentation Slide's first Element.
  • Stop returns the cursor to just before slide 1 in the Slide Area, returns the cursor to the special Icon representing the Presentation Arrangement at the beginning of the Image Strip, and positions the Information Pane to display the Presentation Arrangement. Play behaves the same as Next.
  • Zoom can be used to reduce the size of images in the slide area which will make it possible to present multiple slides or a thumbnails view if desired. Zoom may also be used to enlarge slides.
  • FIG. 14 is an exemplary presentation comment view.
  • the visual cues include an arrow with a number in it. Alternative embodiments may allow the user to specify a label to go with the arrow. Comments are added for each slide, or the presentation overall. The first Comment block is created for the presentation overall. Additional comment blocks with visual cues may be added to the slide in the presentation. Visual cues can be moved later via drag / drop.
  • the Active Favorite for a Presentation links a pasted or dropped image as a new first slide. For example, consider an active favorite for a presentation named SpringFascination. A user can CLICK it, which opens the presentation named SpringFascination. A user can drag an image to it and when the image is dropped, the image is linked as the first item in the presentation.
  • Presentations can be published by selecting Publish from the menu or pressing the Publish tool.
  • the act of publishing displays a Publish dialog box that will:
  • a dialog box that allows the user to share the published presentation by selecting from a list of users or teams.
  • a checkbox allows the user to optionally Lock the presentation so no GAN objects can be reused.
  • Altemative embodiments may consider publishing with comments as a option, since it is likely that the creator would specifically wish to make comments in effort to communicate to the recipient over and above captions- in order to successfully communicate the presentation.
  • a Published Presentation has the same attributes and visual behavior as a Presentation.
  • the slides and their content are not modifiable, but comments can be added and viewed.
  • a Published Presentation is a Presentation that has been frozen in time by making a duplicate copy of it.
  • the slides and their content are not modifiable and are not be kept in sync with updates to the original objects.
  • the key functionality for a Published Presentation is to communicate ideas and share comments between the Author and Viewers.
  • a Published Presentation can also be viewed via a Web Browser.
  • the Presentation tool is used to display the Published Presentation. Edit functionality is turned off, and visual cues are added to the look so users think they are using a Published Presentation tool.
  • the user interface looks and feels similar to the client, except where the technology limitations of HTML force a different look and feel. Comments can be added and viewed through the web interface.
  • the Web interface includes a "click here to join the network button" for non-GAN users.
  • the Web interface may optionally also include appropriate marketing/sales enticements.
  • the Published Presentation can be locked, which is specified as an attribute of a Published Presentation.
  • right mouse click events are caught by JavaScript onmousedown in the HTML code to prevent the user from doing a Save Picture As... in the Web Browser.
  • Application Utilization Data Current & Historical specific usage/utilization information to aid in training, adoption, marketing, additional sales, etc.
  • Accounting Data Current and historical billing data based upon basic & variable services consumed each month.
  • the system is designed to be robust and single points of failure have been eliminated from key components. Both the loss of a server or the loss of a network connection (a common occurrence in many locations around the world) will not impact the local client from saving an end-user's work. All data update transactions will be handled using safe writes. That is, incomplete writes, should they occur, will not jeopardize the integrity of the system wide state. A total loss of the client can be recovered from, provided the client had previously delivered its updates to the network. A total loss of the client will however mean a potentially lengthy recovery process to restore the local client data from the central CCF servers.
  • a non-responsive client is a client that closed the connection. This is treated the same as a client that closed their connection via a request and therefore does not require any special handling. If the client attempts to reconnect then it will need to obtain new credentials. 10 Reliability
  • the system is designed to be reliable. From an end-user's perspective, the apparent loss of a server or loss of a network connection always appears as a loss of network connection. It is not possible from the client's viewpoint to determine the cause and therefore it must assume that the server is unavailable and that it's network connection will need to be re-established. In the event of a lost network connection the client application continues to allow the user to work without impacting their ability to alter their local state. The client does however make continual periodic attempts to contact the primary server.
  • the system does not contain a single point of failure other than the network or the Q client itself.
  • the architecture is designed to adapt to network failures and survive client failures.
  • the server side is architected to be scalable in all critical components. Specific 5 architectural scalability designs are discussed in appropriate contexts later in this document, however, a significant design goal is to use end-user clients as much as possible to offload work from the central servers.
  • the central servers themselves are designed to scale by either adding additional Agent-server configurations or by increasing the capacity of the CCF Application Server using a collection of load-balanced application servers. Storage has been partitioned into an object-store and into a meta-data store. The separation allows the use of appropriate hardware technologies to implement the two very different data repositories. Extensibility
  • the system is designed to be extensible.
  • the hardware architecture is extensible by adding additional hardware components or by replacing existing hardware components with those that are more appropriate to handle increased load.
  • the software is designed as a platform with the ability to accept additional drop-in components as they are needed. All new components will use CCF to enable data synchronization and sharing.
  • System security is maintained by first authenticating the end-user to allow access.
  • CCF will support encrypted communication between the client and the server, and we will guard against denial of service attacks to the fullest extent reasonably possible with current technology. Upgradable
  • the desired goal of the GAN system is to support a distribution model where the users themselves are in a position to aid the growth of the network by inviting their friends.
  • the architecture supports this activity in two key fundamental ways. First, it will not be difficult to extend the system to add additional interfaces to systems external to GAN, and second, it is easy to extend the hardware platform to accommodate additional user load.
  • the architected platform solution eases, for the end-user, the management of two difficult components to collaborative environments: namely, connectivity and data synchronization. KISS
  • CCF/GAN Version 1.0 The final principle in construction of the CCF/GAN Version 1.0 environment is to Keep It Simple Stupid. If we have two options a seemingly difficult one and a simple one, we will always select the simpler option. This lets the users get functionality that works and also allows them to drive the more complex features as later add-ons.
  • Concurrent Updates The foundation of the CCF system is its support for concurrent updates. In CCF all concurrent updates are managed by the system and any conflicts are resolved by transforming conflicting updates into new updates that are known not to conflict.
  • the concurrent update transformation algorithm is the core of the CCF system and is what provides pervasive and uniform update of both objects and their associated meta-data. By building the system around this core capability CCF is able to provide unprecedented data sharing and online user interaction.
  • the preceding scenario is a real world example of how such a situation may come to pass. Some would say, well that isn't a real-life situation. You can opt to not make updates on the plane, and solving that type of a problem is uninteresting because it represents a small percentage of the population; furthermore, if you have a high-speed network connection, then this doesn't happen. This is very wrong. The fact that you have a high-speed network between you and your coworker does not mitigate the fact that two updates can occur at ⁇ logically equivalent times. Remember, all that is needed is that one update be applied without the knowledge of the other, and a conflict has occurred. This can occur on a LAN connected workstation that is, for example, slowed down due to heavy disk activity and does not apply the remotely arriving updates in as timely a fashion as it would otherwise.
  • a number of techniques may be used 10 for conflict resolution including:
  • Operation Transform Turn taking systems rely on an external protocol that is used by the participants to
  • Lock systems rely on the underlying system to provide some form of locking that allows the user currently wishing to update the shared data to make their update while they 5 hold their locks.
  • Anyone else wishing to update the shared object must negotiate for the lock or wait until the lock is free again and then try to re-acquire the lock.
  • Elaborate systems have been designed to manage the acquisition and release of locks.
  • the primary concern of lock systems for solving the collaboration conflict issues is that a holder of a lock may hold it for longer than they need thereby hindering the progress of others.
  • the benefit of lock systems is 0 that it allows end-users a less cumbersome mechanism than turn-taking to acquire the necessary rights to make updates and that updates can be made in parallel to a finer degree of granularity (e.g. I can lock the paragraph rather than the entire document).
  • Operation transform systems rely on the ability of the system to take conflicting update operations and transform them in such a way that the initial conflicts are eliminated and the meaning of the original updates are preserved.
  • the benefit is that no locking is required nor is there any need for an external synchronization protocol as those used in turn- taking.
  • the down side is that updates must be well understood and well-defined in order to be able to define all necessary and sufficient transformation rules. Also, in such a system every source of updates must have its own copy of the shared object so that locally generated updates can be applied immediately, and remotely generated updates can be applied after being received and transformed.
  • CCF uses a distributed operation transformation system based on a well-formed calculus for concurrent update (CCU).
  • CCU computed Operation Transformation
  • Distributed operation transformation refers to the notion that conflicting updates to a shared object can be applied and resolved at the source of the updates rather than at a centralized server.
  • An approach that uses a centralized server to order and resolve conflicting updates would require all updaters to be connected to the network when generating updates to shared objects. This is an unnecessarily restrictive deployment model and would preclude a use pattern such as the airplane example discussed earlier.
  • the CCF architecture utilizes a distributed operation transformation, it is not limited to this methodology and may employ other methodologies that are well known in the art.
  • the Calculus for Concurrent Update is such a system.
  • CCU Concurrent Update
  • CCU is a set of rules for formally defining transformations and for reasoning about concurrent updates. These are then supplied as data to an algorithm that systematically receives, transforms, logs, applies and distributes updates to all interested participants.
  • Calculus for Concurrent Update (CCU) is a set of rules for formally defining transformations and for reasoning about concurrent updates. These are then supplied as data to an algorithm that systematically receives, transforms, logs, applies and distributes updates to all interested participants.
  • CCU is used as such a model.
  • CCU is a calculus that unifies the notions of logical time stamps together with an update history and a well-defined set of transformation rules for applying updates to shared objects.
  • CCU requires that all updates are invertible (undoable). As a result it is possible to apply updates out of order provided they can be transformed against a history indicating the updates that have been applied locally at each shared object instance.
  • CCU enables, by providing a consistent model for transforming and applying updates out of order, the construction of a system that provides the end-user with the ability to work offline (disconnected use), to make the sharing of objects and their meta-data pervasive, and to allow for a large number of end-users to collaborate on creating information in a natural and seamless fashion.
  • f/g (g(x)) preserves the semantic meaning of f(x) but applied after g has been applied to x.
  • T(f,g) f/g (g(x)) iff t(g) ⁇ t(f) # where t(F) returns the logical time of the operation.
  • T(ul,u2 u3) T(T(ul,u2), u3)
  • T(ul u2, u3) T(ul,u2) T(u2,T(u3,ul))
  • FIG. 16 A depicts each of their buffer states after each has applied their local update and transmitted their change to the central node of the star.
  • the normal operation of the central node of the star is to wait for input from its client nodes.
  • the central node is activated when the first update transmitted by the three clients arrives. Let's assume that the first update to arrive is from Steven.
  • the update i(S,0) is received by the central node and applied to its then empty buffer and then it is transmitted to each of Ted and Joe.
  • the system state is now that depicted by FIG. 16B.
  • the update for S is now applied at the central node, and is waiting to be applied by Joe and Ted.
  • Joe and Ted's updates are queued up at the central node, lets assume that Ted's update i(T,0) arrived before Joe's update i(J,0).
  • FIG. 16C shows the state where things start to get interesting.
  • ordering of updates is defined by their arrival order at the central node
  • the update at each of the clients is deemed to have occurred prior to their locally generated updates and the insert of 'S' is not modified because the locally applied updates do not impact it's meaning and is applied as is resulting in the buffers containing the contents as shown in FIG.21.
  • the central node must apply the update for Ted.
  • Ted's update arrived after Steven's it is deemed to have occurred after the update for Steven, and must be transformed to become: i(T,l).
  • Ted's update is modified to account for Steven having gotten in there first.
  • Ted's modified update, i(T,l) is then transmitted to Joe and Steven.
  • FIG. 16D represents the state after Joe and Steven have applied Ted's update
  • FIG. 17 is an illustration of the peer-to-peer topology. It allows for updates to be 5 delivered immediately to all participants and may be a natural choice for a system that provides collaboration between all participants in shared workspace.
  • the topology selected for the system is that of a star (FIG. 18).
  • the star topology shown in FIG. 18 provides the following benefits:
  • Updates are generated at the end-points, transmitted to the central node of the star, applied at the star and then delivered to all other end-points by the central node.
  • State reset of a single end-point is accomplished by telling any end-point that the new current state is the last known by the central node.
  • Transformation computation and update application remains simple and efficient since there are only ever two participants in any pair of conflicting update operations.
  • Client/Server computing is the common term used to refer to computer and software architectures that base their behavior on having one or more clients make requests of one or more servers. Each time a client makes a request it anticipates a response (positive or negative) from the server. The client must wait for the response or terminate the request in the event that the network connection is lost. Thus the heart of Client/Server computing is computing based on request/response protocols between clients and servers. Request/Response Protocols for Concurrent Update
  • a Request/Response based protocol generally requires clients to periodically poll the server to determine if there were any updates that the client needs to respond to. This is significant because it means that if we want our client to appear responsive we must poll often.
  • An even-based protocol is one where either the client or the server is able to deliver information to the other immediately after the information is generated
  • the system employs an event-based protocol.
  • the challenge in implementing such a protocol is based on the requirement that both ends be able to write to an open connection simultaneously. When this occurs there exists a possibility that the server and client will deadlock each waiting for the other to read their data but not being able to do so because they are both writing. This is less of an issue if the system guarantees that only short packets are sent however even then there is a possibility for the system to deadlock.
  • the reason is that the low level networking layers in most operating systems will buffer only ⁇ a small amount of data to a process that has hold the connection. After that all network I/O to that port is blocked (if using TCP) or lost if (using UDP). For this reason CCF implements a token-passing protocol that works (behind the scenes) as follows:
  • both ends tell the other end their buffer size.
  • the system then computes the maximum amount of buffered data that can be sent to the other end of the connection before a special token is requested.
  • Each written packet delivers to the other end information about the packets that have been read already.
  • the latter part means that for bursts of short packet communication there may 0 not be a need to request the token from the peer.
  • CCF The objective of CCF is to provide the underlying foundation for a framework that allows the construction of applications that can benefit from a pervasive use of concurrent update with distributed object-state.
  • the appropriate architectural logical model In order to construct such a framework the appropriate architectural logical model must first be defined. A model that has been constructed before 0 and proven to work is shown in FIG. 19
  • the logical architecture is divided into two main components, a logical server 300 and a logical client 302.
  • a deployed GAN system would have one logical server and many
  • a logical client represents either unique users or also the case when one user may be using multiple clients to connect to the CCF environment (for example, a user that has a desktop at home and a laptop that they take to work).
  • a meta-data store 304, object store 306 and object agents 306 are used to implement concurrent updates.
  • concurrent updates are pervasive because every object is represented by meta-data and object content and updates to both meta-data and object content are synchronized using CCF according to one embodiment. That is it is not possible in CCF
  • CCF removes the need for the end-user to worry about the task of synchronizing their state after they have been disconnected from the network for a period of time. All state, whether it be an image, the information describing an image (e.g. the information slip) or the personal information of other network participants is synchronized and kept up to date using a common set of tools. As such the system is able to maintain a synchronized state in a way that is both natural and transparent to the end-user.
  • Meta-data values may be one of three types: a string, a list, or a reference to another meta-data object.
  • Meta-data that is a list of Values
  • Meta-data whose content is a list of values (eg. Folders) will be resolved using a substring with replacement and move conflict resolution strategy, where the string elements are items in the list.
  • This is a superset of the conflict resolution strategy used in the example previously discussed.
  • the difference with this strategy is that we extend the semantic operations to include replacement and move operations on cells of the lists as 1 st order transformation operations. This allows a more natural feel to the conflict resolution from an end-users perspective. The details are beyond the scope of this document, however, the following example should provide additional insight.
  • Each meta-data element is a key-value pair where the value may be one of three distinct types: String
  • a string value represents the meta-data value and is the simplest form of metadata.
  • meta-data value is either a term or a list of terms, and a term may be a simple value or a reference to another entry.
  • a type with a value to indicate the type of the top-level term.
  • META-DATA :: [KEY; VALUE]
  • VALUE :: [MIME-TYPE; TERM
  • MIME-TYPE :: string
  • Mime-types are IETF standardized names for data types. The most visible use of mime types is their use to identify types of attachments for email messages. They are also employed heavily to specify content types in HTTP pages as well as other protocols.
  • the meta-data is designed such that there is a natural and efficient mapping of the above representation to a relational database storage model. This allows the CCF to efficiently manage, store, and retrieve meta-data values both as single values or as sets of values, and to index into lists of values for efficient access.
  • the meta-data is exported to an XML encoded document and delivered to its target destination. If an entire object must be exported including it's meta-data, a zip file will be j used. The zip file will contain a compressed version of the object data as well as the object's associated meta-data. The meta-data will be stored in a manifest file called METADATA. This way, a GAN object can be shipped in its entirety to a GAN aware consumer. Export of a GAN object outside of GAN will, depending on the object, strip all or some of an objects meta-data. Shared Objects (elements, arrangements, tools)
  • the CCF end-user application Since each element is associated with a viewer/update tool (specified using meta-data for the associated object) the CCF end-user application makes the element available by locating the tool, telling it to load the data content, and asking the tool to show itself in the
  • the tool collects end user generated updates and delivers them to CCF for processing. It also receives updates from the network and displays them to the end user.
  • An arrangement of objects is a content object (possibly just meta-data) that contains 0 references to other objects.
  • the tool for viewing the arrangement is responsible for presenting the meta-data of the objects in the arrangement in the preferred form requested by the end- user.
  • Objects are shared by having the server component of the architecture expose the 5 object, it's meta-data and associated tools to any number of logical clients. Each client is delivered an initial copy of the object and it's meta-data after which the client uses CCF to ensure that the objects it has access to are maintained in synch with the master copy maintained by the CCF Servers.
  • the logical architecture defines the major components of the CCF architecture. At the highest level the architecture is divided into a client and a server. Any number of clients may contact a server and ask it to expose objects for them to share.
  • the server 300 is responsible for making instances of objects available for sharing by clients. It uses a number of components to store, expose and manage the interaction of clients and shared objects.
  • the major sever components are the object store 306, meta-data store 300, the object agents 306, the client proxies 308 and greeters 310, and the HTTP front-end interface 312. Once defined these are then mapped to an appropriate hardware configuration so that the resulting architecture is scalable and extensible. We ensure robustness by designing the components to handle network and other component failures.
  • the meta-data store 304 implements a rich index on the data in the object- store. It provides a mechanism to locate objects, to arrange them, and to assign them access rights.
  • the meta-data repository is a key-value pair repository that binds meta-data to the associated objects.
  • the meta-data store is implemented using a relational database. This strategy allows for high availability of the meta-data store while taking advantage of predictable access and storage requirements. This allows for the meta-data store growth to be managed by carefully monitoring database size and the transaction throughput requirements. As the database grows, it is possible to replace or upgrade the meta-data store using well-known and proven relational database technology. Technology that is capable of handling thousands of transactions per second in a secure, reliable, and redundant hardware environment.
  • the initial approach will be to start out smart by utilizing a mySQL database running on moderately priced Intel based hardware platform for the implementation of the meta-data store.
  • Object Store The primary difference between the object store 306 and the meta-data store 304 is that they have completely different data access requirements and therefore we must tune them differently.
  • the meta-data store is expected to need to service many small queries and updates in a short period of time (milliseconds), while the object store will be expected to fetch and store large blocks of data in timeframes that are on the order of minutes.
  • the meta-data store is an appropriate candidate for implementation using a SQL database, but the object store is not.
  • SQL databases are not particularly good at storing BLOB's (binary large objects) and in fact rarely produce acceptable performance moving BLOB's in and out of the database. Furthermore, storing BLOB's in a database precludes the ability to update portions of the BLOB in place. You must read the BLOB, compute the new BLOB, and write the BLOB back in its entirety.
  • the object store will be extensible because the object store manager will add new storage by simply making additional network storage available and giving the object manager a new file space to manage.
  • a tried-and-true technology will be used to increase the amount of storage that is managed by the object store.
  • This same technology is used today to store and make available terabytes worth of email data at some of the large email providers such as Yahoo and Hotmail.
  • the object store contains the content of all objects along with their update history. It is indexed by meta-data. Thus, the only way to locate an object in the object store is to lookup it's object-store key in it's meta-data and use the key to locate the object data in the object store.
  • GUID globally unique identifier
  • Object instances are owned by object-agents. All access to an object must therefore pass through an object-agent.
  • Object Agents
  • An object agent 306 is responsible for instantiating an object and making the object data and its meta-data available to one or more clients. Clients share an object by sharing access to its object agent. The object is then said to be instantiated by the object agent. Recall that it is the role of the object agent to resolve all conflicting updates to an object and it's meta-data.
  • An object agent therefore functions as the owner of the object instance.
  • An object- agent is created when the first client that wishes to access the object is validated and granted access.
  • the object-agent itself is then instantiated if no prior instance exists, and the agent is asked to create an instance of the object.
  • Object agents own the object instance. Because of this owner-ship, they also implicitly own the object meta-data. Since this is the case, it is therefore necessarily true that an object agent will access meta-data for an object it does not own.
  • Client Proxy
  • the object agent is designed to communicate directly with only the meta-data store, the object-store and a Client Proxy 308.
  • the Proxy process is responsible for accepting connections from clients, validating their credentials, possibly encrypting communications with clients, and multi-plexing the access of multiple clients down a single dedicated connection to the object agent.
  • the Client Proxy is in fact responsible for creating instances of object agents as clients arrive, and for terminating object-agent instances as clients depart.
  • the purpose of the Proxy is therefore to manage the difficult task of multi-plexing communication between object-agents and the many clients wishing to access any single object agent and to encapsulate the authentication and privacy functions of the communication protocol.
  • By using a proxy we enable an object-agent to represent one object type and to have a simple communication interface. The objective being to ensure that the creation of object agents is simple and efficient both from an implementation perspective as well as from an efficiency perspective.
  • the client proxy is, however, not responsible for authenticating users and for assigning CCF protocol credentials to clients. This task is left to the Client Greet service. The reasons for this, design choice are the following:
  • Client Proxy/Client Agent combinations are designed to be scaled linearly 10 based on the actual load impact of object-agent activity.
  • Object agents would then need to handle traffic from multiple proxies thereby increasing the complexity of the network interface of the object agent and also denying the option of an implementation optimization that would allow local 0 pipes or unix domain sockets to be used for communication between the object agent and the proxy.
  • the purpose of the client greet 310 service is to receive requests from clients, validate their authentication credentials and then assign them new credentials that are shared only
  • the HTTP front-end 312 is the logical component that provides the WWW view of the GAN repository. It provides administrative functions as well as, public WWW functions, client download, and presentation access. It is implemented using the application servers that are used to implement the client greet service.
  • the logical client 302 implements the client-side view of the GAN network. It is structured in a similar fashion to the logical server components, however, the client is not decomposed to ensure that high-availability implementation architecture can be used. This is because high-availability for the client is not necessary.
  • the client-side meta-data store 314 stores all client-side meta-data for the objects that the client is entitled to interact with and which have been replicated to the client's machine.
  • version 1.0 meta-data store is built using a Berkeley DB database.
  • the client-side object store 316 is the client-side database that maintains a file system cache of the objects the client is entitled to interact with and that have been replicated to the client's machine.
  • the object-store is implemented on top of the client native file system using (qmail style directory and file association strategies) with safe writes to ensure that updates are properly committed.
  • the purpose of the client-proxy 318 is to do for the client what the server-side client proxy does for the server.
  • the proxy is responsible for initiating connections to remote server greeters, and server client-proxies and to manage the flow of packets between servers and clients.
  • the proxy is also responsible for making the connection state of the network transparent to the GUI client application.
  • Client object agents 320 implement the client side version of CCU.
  • the function of the object-agents is to instantiate - as part of the client-side the data-model, the object state and apply both locally generated and remotely received updates to the object state.
  • Object- agents receive the object specific definitions of the CCU transformation algorithms from the client-proxy only after the object that they represent is opened for use by the client.
  • Object agents are implemented as Java components running within the GUI client. This way they are close to the source of update events and have full access to the end-user view of the interface.
  • the GUI client 322 owns the interface with the end-user.
  • the client presents the windows that define the CCF/GAN user interface and allows the user to interact with displayed components.
  • the specifics of the interface design are defined in the GAN Functional Requirements Document. See that document to understand details of the GUI client operations. For a discussion of the client implementation see GUI Client Component Map in this document. Sessions
  • a user-client connects to the CCF server by first authenticating itself, establishing credentials, and then opening a client session with one or more client proxies.
  • the collection of connections to client proxies is the client session. It lasts as long as the client is connected to at least one client proxy.
  • the client proxy provides all of the necessary server side state to instantiate its portion of a client session. This state consists of connection and pipeline information, and information about the object agents that the proxy is exposing to the client.
  • Sessions are dynamic and represent the sum of the activity being performed by a client. They are stateless and are created and tom-down as the clients come and go.
  • Session Open j When a client is started the client attempts to connect to the CCF/GAN server that it is associated with provided the default connection state of the client has not been set to disconnect. The connection is made as follows:
  • An SSL session is established with the client-greeter.
  • Credentials are exchanged and the client requests a set of one or more objects to access.
  • the greeter notifies appropriate agent proxies of the new client's credentials and notifies the client of which client proxies it should contact.
  • the client then establishes SSL sessions with the specified client proxies and provides it's credentials.
  • the proxy validates access rights.
  • the client then proceeds to sync its object state via its local proxy and the associated remote server based proxies that it was assigned to. Session Close
  • a client is deemed to have closed the session if the connection is closed and the client 0 does not re-establish the connection within a 1 -minute timeout window (configurable). If the timeout expires, the proxy invalidates the credentials and if appropriate shuts down any associated object agents. If the client attempts to reconnect after the grace period has expired then the client will be told by the proxy that its credentials are no longer valid. At this point 5 the client may choose to give up or to obtain new-credentials by contacting the client greeter service.
  • Client termination is, in essence, a requested disconnect.
  • the only difference between a requested session close and the above is that there is no possibility of reconnecting without 0 first obtaining new credentials if the client requested termination.
  • Client termination would be used if there is a need to discontinue communication with a specific client, or if there is an immediate server shutdown occurring and the server wishes to notify clients but cannot
  • a client session is kept alive by periodically and automatically sending a ping request down the connection. Once received the proxy at the other end must respond to the ping request with a ping of it's own. In this way both ends will have heard from one another and the connection is known to still be good. No useful information other than the fact that the ping was heard is delivered using the ping message packet.
  • the clients communicate with the server using TCP.
  • UDP is not used because guaranteed packet delivery is required. If appropriate and allowed SSL may be used to further encrypt the client/server connection.
  • CCF Protocol
  • the CCF protocol is layered on top of the client/proxy connection protocol and represents the high-level communication protocol between the clients and the central server.
  • the protocol is broken down into transport, token-passing, update payload, and binary object synchronization. Where the latter protocol layers run on top of the transport layer.
  • DDTP CCF Transport
  • the CCF Transport layer is based on HTTP/1.1 as defined by 5 RFC2616.
  • One embodiment of the present invention utilizes the following subset of RFC2616:
  • HTTP Entity Dynamic Data Transport Protocol differs from HTTP in the following:
  • the PUT method is used to send an update.
  • Entity content is used as defined below.
  • the client proxy is used only to initiate connections. As such it is not able to receive requests from any other source other than the CCF server(s) to which it is maintaining an
  • the token passing protocol is used to ensure that deadlock over an open connection between two proxies is avoided (note it cannot be prevented).
  • the strategy is as follows. 0 Upon establishing a connection the two proxies provide the other end of the connection information about the size of their local network buffers. The proxies then use the buffer-size information to establish, at both ends of the connection, the following protocol (assume that at our end the buffer size is defined by k): 5 1 Compute the size of the "send token message", and let it be given by s.
  • Entity content is the payload of all messages. See the HTTP/1.1 specification for further details and nomenclature regarding HTTP/1.1. We use the Entity Content specification from HTTP/1.1 in it's entirety for delivering update content between the client and the server. We include the full specification in Section 4.8.3.1 for reference, however, please refer to HTTP/1.1 for a complete contextual reference on Entities.
  • Request and Response messages MAY transfer an entity if not otherwise restricted by the request method or response status code.
  • An entity consists of entity-header fields and an entity-body, although some responses will only include the entity-headers.
  • both sender and recipient refer to either the client or the server, depending on who sends and who receives the entity.
  • Entity Header Fields
  • Entity-header fields define metainformation about the entity-body or, if no body is present, about the resource identified by the request. Some of this metainformation is OPTIONAL; some might be REQUIRED by portions of this specification.
  • entity-header Allow ; HTTP/1.1 Section 14.7
  • extension-header extension-header message-header
  • the extension-header mechanism allows additional entity-header fields to be defined without changing the protocol, but these fields cannot be assumed to be recognizable by the recipient. Unrecognized header fields SHOULD be ignored by the recipient and MUST be forwarded by transparent proxies .
  • entity-body (if any) sent with an HTTP request or response is in a format and encoding defined by the entity-header fields.
  • entity-body *OCTET An entity-body is only present in a message when a message-body is present, as described in section 4.3. The entity-body is obtained from the message-body by decoding any Transfer-Encoding that might have been applied to ensure safe and proper transfer of the message.
  • Content-Type specifies the media type of the underlying data.
  • Content-Encoding may be used to indicate any additional content codings applied to the data, usually for the purpose of data compression, that are a property of the requested resource. There is no default encoding.
  • the entity-length of a message is the length of the message-body before any transfer- codings have been applied.
  • Section 4.4 of the HTTP/1.1 specification defines how the transfer-length of a message-body is determined.
  • Binary objects (such as images) that need to be synchronized after update will be updated using a full replacement strategy that will rely on two distinct components.
  • Encryption is useful at two levels in the CCF protocol. We can apply encryption to the protocol itself (e.g. SSL) so that authentication data and credentials are not exchanged in the clear, and at the entity or payload level.
  • protocol e.g. SSL
  • the CCF framework will use no encryption, but all of the necessary machinery is in place both at the protocol layers and at the architectural level to support full SSL protocol and entity encryption.
  • Search Search is an important function of the system. Each client is able to search the sum of the information that is visible to it. Because we wish to provide offline search facilities and because the distributed update algorithms require local state to be replicated at every client, then the implementation of search will offload the query for the objects to the local client. Thus the operation of search will not be a load on the system and is an operation for which the end-user's response should be commensurate with the speed of their local client.
  • the local client proxy is responsible for performing all searches of the content that is visible to a local client.
  • the proxy is tasked with performing search operations and for returning result sets because it leaves open the possibility that the search operation can at a later time be extended to search other databases without having to alter the client in any way.
  • Search results are returned as Entity content to the client and are encoded using XML. It is the client's responsibility to display the content using an appropriate format based on the XML content to the end-user. It is the intent that display of the content will be as simple as specifying an appropriate XSL style sheet.
  • Client management refers to the need to support the initialization and signup of new clients, the replacement of defective client state, the use of multiple accounts by clients, and the termination of client access. No practical system is useful without these.
  • New Client Initialization
  • connection is initiated by having the user supply connection information as a set of properties (either on the command line or through appropriate configuration panels) after which the GUI Client requests the proxy to make the connection and attempt authentication. If authentication succeeds the client is synced up with the initial default state of new clients.
  • client-state may be reset by the client requesting and the server-proxy delivering the complete state of an object or by having the client report an older state and having the client-proxy deliver all of the updates to the client-state that have occurred since the last known good client state. If there is insufficient history to enable an incremental update, then the server-proxy will deliver a replacement state to the client that corresponds to the current most recent state of the object.
  • Client-ID' s are associated with accounts and it is possible to associate multiple client-ID 's with one account. All clients that are associated with the single account are treated as multiple views of the resources assigned to the owning account. Thus, it is not possible to have multiple clients with different information or access rights under the same account.
  • Client termination is a mechanism through which the system administrator may indicate that one or more of an account's clients may no longer connect to the system. This is used for terminating access for abusers of the system or for disallowing access to end-users that no longer have authorization (e.g. they have been terminated).
  • FIG. 20 shows an exemplary CCF server architecture components as they are mapped to concrete elements.
  • the implementation of the CCF application server 400 is generally a critical function.
  • the CCF Application server will be implemented as a full-featured stateless application server. Use of a commercial grade application server here allows the server to be fully scaled and load balanced as GAN's needs will dictate. Technologies for load balancing across a set of servers are readily available and can be obtained from various commercial suppliers (e.g. F5 Networks or Cisco). The application server will also provide 0 the WWW based internal interface for reporting, administration and activity monitoring.
  • the CCF Agent Pool 402 should be viewed as a stack of servers.
  • the first server . provides the CCF Agent Proxy service, while other servers in the stack are managed by the 5 Proxy and are used to instantiate object agents.
  • the particular view of this solution allows us to grow the capacity as needs require both by adding agent servers to the stack and by replicating stacks and making them available for use by the agent greet service as proxy servers for clients.
  • these components are expected to be Intel based off-the-shelf servers without special redundancy hardware as they store no state and are responsible only for managing meta-data and object store updates.
  • the object store 406 is a repository for storing objects that are collections of files
  • Meta-Data Store The Meta-data store 404 will endure the greatest transaction hits and will require a full transaction history to maintain consistency. It is also responsible for maintaining a large amount of fixed sized data with relationships. This is an ideal job for a relational database. The obvious choice here initially is mySQL, and as the system grows and revenue allows the meta-data store will be migrated to a fully redundant relational database installation based on a Sun-cluster and Oracle database.
  • FIG. 21 shows the top-level design for the GUI client component map according to one embodiment of the invention.
  • the client is basically designed out of the top-level components shown in the diagram. Note that these are not components in the sense of object- oriented design, but rather in the sense of program decomposition and structuring.
  • the client controller 500 component is the main thread in the GUI client according to one embodiment of the invention. It starts up, parses arguments, and configures and reads property settings. The thread then creates the core GUI objects.
  • the Startup sequence is as follows:
  • the main thread first creates the EventQueue object 502 and makes certain that it ready. to accept events.
  • the main thread then creates the NiewController object 504.
  • the NiewController object enqueues a request to create a ViewManager instance 506.
  • the main thread then goes on to create the ActivityLogManager 508, the ModelManager 510, and the ProxyManager 512 in that order, but not necessary so.
  • Each of these initializes its state and in the case of the ModelManager creates both MetaDataCacheManager 514 and ObjectStoreManager 516 object instances.
  • the ProxyManager creates two threads that are responsible for flow of information through the ProxyManager; one for input and the other for output.
  • the ProxyManager then creates an instance of a proxy process and waits for requests to do work.
  • the main thread then invokes the handleEvents method of the EventQueue which begins the processing of events in the system. Note that one of the first events on the queue is to create a ViewManager 518. This first ViewManager is the user interface frame that the application displays.
  • the main thread returns from handleEvents only if the application has been asked to terminate. Upon exit, the main thread then asks the ModelManager, ActivityLogManager, and ProxyManager to terminate. It does not worry about the ViewManager' s as these have already been asked to terminate by the ViewController. This forces a clean shutdown of the system.
  • View Controller is the handleEvents method of the EventQueue which begins the processing of events in the system. Note that one of the first events on the queue. Note that one of the first events on the queue is to create a ViewManager 518. This first ViewManager is the user interface frame that the application displays. The main thread returns from handleEvents only
  • the view controller owns all view managers.
  • the purpose of the view controller is to handle external requests for control over the views. For example if an event is posted to create or remove a view the view controller handles this fact because it owns the top level objects that contain each view.
  • Event Queue The event queue manages the flow of events through the GUI client. It accepts events for processing on the event queue and invokes appropriate methods in the appropriate manager to execute the event. It is also optionally responsible for logging the events to the activity log manager. The purpose of the activity log manager is to make it much easier to debug the GUI client. Every external and internal event runs through the event queue and as such its presence can be logged to the activity log manager.
  • the event queue decides based on the event whether or not the event is targeted for the model manager, view manager, or command manager for handling.
  • the view manager is responsible for opening a native GUI window and painting the user interface on the screen. It is then responsible for registering property change listeners in appropriate data-model objects so that it can be responsive to model changes and repaint the view should the data-model change in any significant way.
  • Each view manager owns the physical frame on the screen and any associated pop- ups. Multiple view managers are allowed as this is the way to create multiple-frames on the screen each of which updates appropriately when the data model is altered, and each of which can be a source of events which can cause the data model to be altered.
  • the model manager is responsible for managing the entire state of the GUI client by interacting with the meta-data cache and the object store.
  • the model manager waits for requests from the event queue and acts on those events.
  • an event causes the data- model to be changed the change is either local or remote in origin. Regardless of the origin the change causes appropriate property change listeners to fire which cause appropriate view managers to update their views.
  • the model also interacts with the meta-data cache and the object-store to update the local on-disk copy of the object to ensure that the local state is current and persists.
  • Both remote and local changes run through the CCF transformation system to either transform or log the update. Local updates are applied, logged and then transmitted to the remote client by posting an appropriate event in the event queue. Remote changes are transformed and applied to the data-model. Remote changes cause no model-update related events to be posted.
  • the model manager is also responsible for serializing updates to the data model. Only one update whether local or remote may be in progress at any given point in time on a data-model object managed by the model-manager. Thus in effect enforcing atomicity of updates at the object level.
  • model manager provides an interface whereby the view manager may invoke updateProperty methods on the managed objects. These methods provide the view manager with an encapsulated update in the form of an update object which it can then hand over to the view controller for further processing.
  • UpdateProperty methods provide the view manager with an encapsulated update in the form of an update object which it can then hand over to the view controller for further processing.
  • the purpose of the command manager is to handle non-update specific commands. For example, a chat request may require a window to be created and presented to the end- user. It will be a command method that is handled by the command manager which will be responsible for causing that window to appear.
  • Meta-Data Cache Manager The purpose of the command manager is to handle non-update specific commands. For example, a chat request may require a window to be created and presented to the end- user. It will be a command method that is handled by the command manager which will be responsible for causing that window to appear.
  • the meta-data cache manager implements a safe write-through meta-data cache. This greatly speeds up reads of meta-data and ensures that writes are persisted upon update.
  • Object Store Manager The object store manager is a safe write-through cache for objects. It's task is to maintain in memory the current state of an object and to ensure efficient updates to the object are made at appropriate times.
  • Activity Log Manager is a safe write-through cache for objects. It's task is to maintain in memory the current state of an object and to ensure efficient updates to the object are made at appropriate times.
  • the activity log manager is a debugging device that is used to log all activity in the system so that it may be scrutinized or viewed as it occurs. The intent is to log the activity to a file, a terminal view, or to a separate window if it becomes necessary. From the start of logging to a file, the system log or the terminal window will be supported. Proxy Manager
  • the proxy manager handles all external I/O for the GUI client with the proxy process. Its purpose is to ensure that packets are properly formatted and encoded and that data is written to and read from the proxy as it is produced. It manages the existence of the proxy process and handles the setting of the connected state. Help Assistant Interface
  • the help assistant interface is really just an agent proxy, with own object agents that represent the state of current help sessions with the help-desk. As such it maps nicely into the current architecture and can be easily accommodated.
  • Help sessions are opened using a known object name to which all validated users have access. The session then provides the user the ability to interact with the help system to either locate information or to contact others that may be able to provide assistance.
  • Web Interface The purpose of the WWW interface is to provide the following basic services:
  • JSP Java Server Pages
  • Transport level encryption via SSL or TLS are supported by the Java 1.4 JDK at the core and it should be possible to drop them in so that the upgrade is transparent to the end-user. Careful consideration of both business,
  • Half-duplex communication option With this option a user is allowed to conFIG.the CCF framework to either receive remote updates but delay sending local updates, to send local updates but delay receipt of remote updates or to allow full-duplex operation as in VI.
  • An alternative might involve the use of clustered servers with storage arrays that can mirror data between multiple sites for redundancy and disaster recovery purposes.
  • clustered servers with storage arrays that can mirror data between multiple sites for redundancy and disaster recovery purposes.
  • Oracle running on a redundant cluster of Linux or UNIX servers attached to an EMC storage array providing mirrored data backup between two different physical locations.
  • Key factors that influence if a change is required and the selection of the alternative are: cost of alternative solution versus the value the alternative provides, complexity and risk of converting to the alternative, available budget, and the
  • the logical client meta-data store is built using a Berkeley
  • Meta-Data Store relational database will be mySQL. As the GAN 0 environment grows and additional functionality is added, the decision to continue using mySQL may be reviewed. See point 3 for further considerations in regards to this point.
  • Use Case 1 Supplier Company - Salesperson- creating a Presentation, publishing to a designer customer, receiving feedback and responding to customer's 0 requests- Harvey just got a phone call from one of his customers at Urban Retro.
  • Lucy is one of the woven designers at Urban Retro, always looking for the latest trend in fabrications and
  • Harvey receives the voice message. He would like to try this new way of working with Lucy, using GAN. He gives her a call and leaves her a message: "Hi Lucy, I'm going to send you an email as a follow up to your requests. There will be a link that gives you access to a Presentation I'm putting together for you via the web. You can make comments directly to the Presentation. Any questions at all there is a how-to link that walks you through how to make a comment, it's really easy you're going to love it.”
  • Harvey goes to his sample room, and begins by pulling all of the headers of the latest gauze samples.
  • Harvey is ready to get the Presentation out; he goes to his computer and plugs in his camera.
  • Harvey begins by dragging each swatch from his camera interface into the GAN interface.
  • the import dialog box appears by default when a new image has entered the interface.
  • GAN by default sets the target location folder in the Navigator to My Work.
  • Harvey chooses to create a folder under My Work called Urban Retro. He is then prompted to select an object type and enter some of the information slip details for each imported photo.
  • Harvey fills in the data appreciating that he only has to fill it out one time, while he will likely use these swatches for multiple customers the work up front goes a long way. Harvey fills in the pertinent information slip details such as style number, content, cuttable width, country of origin and mill for customers review.
  • Harvey will give the Presentation a name and be prompted to fill out optional information slip details for the Presentation itself as well as select a target folder location in the Navigator for the Presentation and setup sharing which is optional.
  • the system default target folder location is Presentation. This works for Harvey except he chooses to create a new folder named Urban Retro in his Presentation folder.
  • Harvey is presented with the easy to use Presentation interface.
  • the window where Harvey just uploaded all of his swatches is still open so he can simply drag and drop from his thumbnail Navigator view into the Presentation pane. All of the information slip details carry to the Presentation.
  • Harvey realizes he has a rough edge here and there around the photographs and wants to add some descriptions to the information slip of each.
  • Harvey proceeds to double click each image from the Presentation slide, which launches a new window with the quick image editor tool providing Harvey with simple tools for cropping and resizing to adjust images for Presentation purposes. When complete Harvey clicks the done button.
  • the quick image editor window closes and Harvey is left with the Presentation window interface. Harvey decides to type some captions for each slide. Harvey clicks on the captions tab and proceeds to type targeted comments to Lucy about sample availability and price points. Adding captions takes Harvey less than five minutes to complete.
  • Harvey is now ready to publish the Presentation to Lucy. Harvey clicks on the sharing tab, and clicks the publish button.
  • the publish dialog box appears and requests Harvey to choose a location where the published Presentation will reside, (GAN default is Presentations) prompts Harvey to choose the users/teams he wants to publish to and provides Harvey with a dialog to type a notification to recipients of the Presentation.
  • Harvey pulls to his side the notepaper he wrote Lucy's email address on and adds Lucy Sykes at company Urban Retro to his contacts list. Harvey chose previously to add a new folder under his Presentations folder in the Navigator naming it Urban Retro, so he chooses this location for the published Presentation to reside.
  • Lucy receives the email, reads the notification and clicks the link to view the secured web-based Presentation. She is blown away. It is a really spectacular Presentation, with all of the targeted swatches she asked Harvey for. This is unlike anything she has experienced before. Harvey would typically send to her a bunch of swatches... with lots of "junk" she didn't ask for. With GAN, Lucy is presented with great viewing and commenting tools. She loves the ability to click through each slide in her own time. She clicks to the shot of the trim samples from the stylist's board and thinks it is terrific. She would have never seen this picture in the old way of working.
  • Lucy especially appreciates the information slip details that provide the pertinent swatch information she needs and the captions where Harvey called out sample availability and gave her price point ranges.
  • Harvey has written good descriptive information in the info slip fields describing the weight and drapability of the fabrics as well so Lucy gets a clearer picture of the qualities.
  • Lucy sees a how-to link and is curious to learn how she should be using this fantastic new communications tool.
  • the how-to guides her to click on the comments tab, and add her comments about each slide. This made Lucy feel comfortable and more importantly explained how simple it is for her to make comments explaining what happens with the comments after she makes them.
  • Lucy understands the concept of getting Harvey comments as the how-to explained the process. Lucy decides to click on the "click here to learn more about GAN”. She is pointed by this new way of working.
  • Harvey receives the comments from Lucy and sees that she has made some specific references to some of the gauze samples and trim references. She would like to get swatches of a few of the qualities and would like to know if some of the trim detail can be done in her colors. This comment came from the sample on the stylist's board. Harvey realizes he may have never showed Lucy this piece if he didn't have GAN to easily do so. Getting Lucy to come to the showroom is near impossible. Harvey happens to have a new sample that represents more color options on the trim. Harvey finds the sample, snaps the picture and imports it into GAN. Harvey creates a new Presentation with this sample and follows the same steps to get it right out to Lucy.
  • Use Case 2 Supplier Company - Stylist-creating concept storyboards for upcoming season to get feedback from key customers.
  • Robin Lambert is the design director for Koneke Mills. Robin has a tight relationship with the R&D heads of all of Koneke' s top customers. Using these relationships, Robin presents early concepts and design direction to these clients early in the season to get feedback, which results in more targeted, efficient development for Koneke.
  • Robin attends all of the major yam fairs she can. At these fairs she snaps pictures of interesting textiles and fibers discovering the upcoming trends along the way getting samples from vendors to work with. Prior to a new season, Robin shops vintage boutiques and other favorite spots to get inspiration to guide design direction. Her camera provides the extensibility she needs to capture inspirations on the spot.
  • Robin is ready to take her inspirations and begin creating concept storyboards.
  • Robin begins by importing all of her camera images into GAN.
  • Robin selects the location on her hard drive where she is importing photographs from.
  • GAN selects the target location folder, where the imported images will reside in the Navigator to My Work.
  • Robin chooses to create a new folder under My Work called Fall 2004 Concepts. She is then prompted to select an object type and enter some of the information slip details for each imported photo.
  • Robin enters a name, types in the season for the storyboard, and selects the location for her storyboard under My Work folder adding a folder named Fall 2004 Boards. When prompted, Robin does not opt to setup sharing. Robin plans to share/publish accordingly when she is satisfied with her concepts. Robin begins by multiple-selecting about 15 pictures from her fall 2004 concepts folder in the Navigator and dragging/dropping them onto her new storyboard canvas. This process is intended to be similar to piling her tear sheets in arrangements onto her worktable rather than creating the ultimate storyboard. Robin continues arranging photos in front to back order, resizing and adding text to further express the themes and trends she feels are important. Robin has many industry magazines that she pulls tear sheets from for inspiration. Her top assistant typically scans them in- but she is getting more comfortable with the camera these days, Robin opts to take pictures of them herself. GAN makes it easy for her to import multiple images and the tear sheet object type equally makes this process simple both technically and conceptually for Robin.
  • Robin completes one storyboard, she clicks the storyboard tool button again to launch another window and create more than one storyboard at a time.
  • GAN makes it easy for Robin to drag between more than one storyboard essentially sorting themes as she creates them.
  • Robin ends up creating 3 key concept storyboards. She's ready to complete the Presentations to be shared with Koneke' s key accounts.
  • Robin has closed two of the storyboard windows leaving one opened. Robin clicks the Presentation tool button; launching a new window with a create-new splash screen for Presentations. Here, Robin will give the Presentation a name, select a location for the Presentation and be prompted to fill out optional information slip details for the Presentation as well as setup sharing. She is presented with the intuitive Presentation interface. Robin clicks on the storyboard icon in the storyboard toolbar and drags and drops it onto the Presentation. Robin then closes that storyboard window and is left with the Presentation window opened. This step drops the storyboard object into a slide within the Presentation. From the Navigator, Robin clicks on her My Work, Fall 2004 Concept folder and drags and drops the other two boards she had completed previously into the Presentation. Robin now has three storyboards in her Presentation.
  • Robin proceeds to click on the information slip tab and add some pertinent details to each storyboard in the Presentation. She writes narrative in the description field about some of the fiber/textiles. Robin clicks on the captions tab and in her narrative expresses the important themes and trends and general ideas that she wants the R&D associates to comment on.
  • Robin is now ready to publish the Presentation to the key accounts of Koneke. Robin selects the sharing tab and clicks the publish button.
  • the publish dialog box requests Robin to chose a location where the published Presentation will reside, prompts Robin to chose the users/teams she wants to publish to and provides Robin with a dialog to type a notification to recipients of the Presentation. Robin does this with ease and types a notification; "Concept preview for Fall 2004. I would love to hear your initial feedback and your concepts about what will be important for Fall 2004. There are a lot of amazing fibers this year as well as some innovative combinations that are out of this world!
  • Robin has done a lot of work for these designers that they have to do for themselves. Granted, there is much more work to do, but Robin ranks very high on their list by getting out there with a visual Presentation of her research and ideas that will only help them in their development work.
  • This communication is design to design with concentration on discovering the themes and trends of the season early ... getting the ball rolling and planning with enough time to create the right products they are looking for.
  • Use Case 3 Supplier Company - Stylist- creating storyboards as sales support to represent key "new" collections Harvey is a salesperson for BW Mills. Karen is one of the stylists for BW Mills who creates and does immense storyboards as well as Presentations, using storyboards as well as key swatches with pertinent details. This kind of support makes it much easier for Harvey and team to regularly send out very impressive Presentations to their customers, enabling them to stand out from the competition and most importantly hear what their customers think of their lines.
  • Harvey is pleased with the Presentation and feels its sharp enough to go ahead and publish with some of his top accounts. Harvey needs to add some text to the captions to personalize the Presentation, so the text relates to customers the same way he would relate to them in person. Harvey duplicates the Presentation and gives it a new name of BW Mills Fall Yarn-Dyes. Harvey is now the author of the duplicate Presentation, whereby he can make any adjustments to it without affecting the other copies shared between his team and Karen.
  • Harvey now has a slightly customized copy he has created for his top accounts with his language.
  • Harvey is now ready to publish the Presentation.
  • the publish dialog box requests Harvey to choose a location where the published Presentation will reside, prompts Harvey to choose the users/teams he wants to publish to and provides Harvey with a dialog to type a notification to recipients of the Presentation. From his contacts, Harvey chooses his top 10 account designers.
  • the default location for the published Presentation is Presentations folder, which is fine for Harvey at this time.
  • Harvey types the notification "New Fall Yam-Dye collection for your review”.
  • Harvey chooses auto-notification, which means that when there have been comments made to his Presentation, he receives a notification. Comments received from all 10 customers will be associated with this one published Presentation. If Harvey had sent out 10 individual Presentations comments would be associated individually to each.
  • Harvey's goal The old way of working would have required Harvey to leave voice messages to try to convince designers to come over to his showroom to see new collections and storyboards or schedule an initial appointment which would have been the usual shot in the dark approach.
  • Harvey's customers Utilizing GAN, Harvey's customers will experience a preview of the collections and be able to request swatches and ask questions on the spot, as opposed to have to meet with Harvey to simply get a preview.
  • Another "old-way of working" for Harvey in the past would be that he would deliver a bunch of swatches to his top customer's receptionists and follow-up with phone calls, hoping to get their feedback. Getting feedback using this process is another near impossible task.
  • the trick for Harvey is hearing questions and meeting needs early enough, so he can follow-up with design on his side by providing customers requests and feedback.
  • Harvey receives a notification that he has comments.
  • Harvey clicks the link of the notification the system launches a new window with the Presentation, comments tab opened. He realizes he has had 4 comments so far.
  • Notifications "de-duplicates” which means if Harvey has more than one reply but has not acknowledged the notification, every new reply will simply be added onto that existing notification rather than result with 10 bold unread notifications in Harvey's log, for example. This is convenient for Harvey and less cumbersome.
  • Harvey gets some good feedback that he knows will be valuable for design.
  • Harvey selects Karen and Sandra from his contacts and gives them reviewer roles.
  • Use Case 4 Apparel Company - Designer - created some hot new concepts for a special collection, wants key buyer feedback
  • Laura is the design director at Essendi. Essendi is all about novelty and capturing the hottest trends for their collections. Laura is known for identifying trends quickly and reacting. Laura is diligent with her team about getting new ideas in front of their key buyers hastily in order to sell the buyers on the hype of the items. She captures their feedback and moves quickly. These key accounts love this way of working, because consumers count on them to offer the greatest, newest items before they hit the mainstream. Laura takes her camera with her everywhere she goes. Living in Manhattan she is constantly snapping shots of street scenes that are inspiring, items in vintage stores and flea markets, and other trendy boutiques, etc. Laura has some great ideas combining vintage fabrics with denim, lace and trims. She's back at the studio and begins her work.
  • Laura chooses her Trendy folder under My Work as the target location for these imported items.
  • Laura imports the first 20 shots as type miscellaneous and chooses to name each specifically as she imports them to start organizing her thoughts. By doing this, the system prompts her for the name, but has set each item to type miscellaneous.
  • Laura fills the season into the information slip details as she goes along. When she gets to the last 15 she changes the import type to trim and chooses to keep the default name of the item as per the camera software.
  • Laura can't wait to get her large flat-screen monitor so she can just sit back and view her work in progress on-screen ...
  • Sketching complete Laura scans in her illustrations. After scanning, Laura goes directly to her folio and imports each into the row named silhouettes. Upon import, Laura selects object type sketch, chooses the season and names each sketch individually. From the folio, Laura now drags and drops the illustrations onto the appropriate storyboards. She resizes the sketches to fit the boards and re-arranges the images, moving things front to back, circling some areas of trim on some of the vintage shots and drawing some correlation between the trims, her sketched trims on the silhouettes. Laura names each storyboard; one is Folk Lure one Blues Beat and the last, Novel Identity. Laura now goes to the captions for each storyboard and writes more elaborate descriptive details about the feeling of the themes, some of the selling points and how they relate to past selling seasons.
  • Laura is ready to share with Phoebe her Merchandising associate. Phoebe works great w/ Laura and has a lot of confidence in her design ability as her direction is always spot on. Laura closes the folio, and storyboards. She launches the Presentation tool, names the Presentation and chooses target location in her Navigator as Presentation/Trendy. Laura drags and drops her storyboards and folio from the Navigator into the Presentation. She simply re-sorts the order of the 4 images by dragging and dropping in the image strip of the
  • Phoebe Laura clicks the sharing tab and clicks the "share with” button from the sharing tab of the Presentation, and selects Phoebe from her contacts. She clicks notify and types a notification "Phoebe: some great concepts for Fall, get some feedback"
  • Phoebe As Laura shares the Presentation with Phoebe, she is immediately added to her IM bar of this shared object. Phoebe's status is online, so Laura tries to catch her by sending her a quick mail. She double clicks Phoebe's icon in the IM bar and types... "Hey! Check your notifications... I just shared some Fall concepts with you... get feedback” and adds an emoticon to express excitement to the end of her note. "Click the link and check it out.” Phoebe actually replies, "Great, hang on a sec.” Phoebe shortly clicks the link to the shared object supplied in the EVI window. She takes a minute and replies, "Wow, you've been busy- June is going to LOVE these... I'll also share with Bridget Foley. Now that I think about it, I just had dinner with Candy Lambert and she is looking to expand their identity to a younger audience. Nice timing. You'll hear from me when I get feedback.”
  • Phoebe duplicates the Presentation and saves it to her Presentation/Fall Items folder. Phoebe clicks the sharing tab and clicks the publish button. Phoebe selects June from her contacts. She types a notification "June, I think you're going to love these concepts. Laura has really got something here. I'll be waiting for your comments, we're prepared to move forward quickly.” Phoebe publishes separately to all of the recipients so she can type a personal notification to each Buyer.
  • Phoebe shares the published Presentation with Laura so she is in the loop seeing the comments. Phoebe most times assigns Laura a reviewer role so she can see the comments made from the recipients. Phoebe goes back and forth a few more times with the Buyers tying in design... Laura has definitely done it again. All of the buyers are nuts about the collection and are running with the concepts. Using GAN in this efficient way, they got more than one exclusive program without doing a third of the work usually required to win a program from these key buyers. The speed of getting the idea across made the order.
  • Use Case 5 Apparel Company - Designer- using folios to keep everybody on the same page with collections as they are works in progress
  • Jeremy is the design director for his collection, Jeremy Scott. His tight team of 5 associates is constantly on the go. Part of their problems in the past has been that associates on the road have no visibility to the current state of the design room and to Jeremy's latest ideas. Whether working in the factories or working off site, associates need to have visibility to design room information. Keeping team members on the same page is critical with a tight team. Jeremy has gotten his team to work incredibly effectively using GAN, namely folios to keep everybody up to speed with the current works in progress of their design groups.
  • Jeremy has setup 6 folios naming them according to the collections he has pinned to his wall. In folio setup, he selects his design team of 5 associates with the roles of editor.
  • Suzy Melendez is the top merchandiser for Urban Retro. She carries all of the key accounts for the company. Suzy has just completed a meeting with Jessica Kerwin, the top buyer at Bloomingdale's. Jessica wants to do a Fall promotional. Suzy is now on her way to design to discuss with the design director what she needs to present.
  • Suzy gets to her computer and checks notifications. She clicks the link and reviews the Presentation slides. Suzy thinks it looks terrific. As the reviewer, Suzy only has the rights to make comments, so she duplicates the Presentation so she can publish. Suzy clicks on the captions tab and adds some narrative about each of the slides to speak directly to the buyer.
  • Suzy is ready to publish. She clicks the sharing tab and clicks the publish button.
  • the publish dialog box requests Suzy to choose a location where the published Presentation will reside, prompts Suzy to chose the users/teams she wants to publish to where she selects
  • Anne works in Research and Development for Ross Whitney, The Collection. She has a very tight group of suppliers she works with most of the time. It's early in the Fall season; she has some specific things she is looking for. Anne is looking at her design room wall and has two very specific qualities of fabric she got from a garment on her last European shopping trip. She takes her camera and gets close to the garments pinned to her wall and snaps. Anne imports the shots into GAN. Anne uses the swatch object type, types the Fall Season into the information slip and chooses to put the swatches into her Fall 2004 Wovens folder under My Work.
  • Anne simply clicks on her Presentation tool button and is presented with the new Presentation splash screen. She gives the Presentation a name, selects the target location for the Presentation as Presentations! Fall 2004 R&D and opts not to setup sharing. Anne proceeds to drag and drop the two swatches from her My Work! Fall 2004 Wovens folder directly into the Presentation. Anne proceeds to double click each swatch to launch the quick image editor. In the quick image editor, she crops off a dark edge from each picture and fills out the info slip to the best of her ability. She types in the description field what the contents of the garment say and what kind of drape it has. Anne then reiterates the price point she is looking for. Anne clicks done from the quick image editor and the Presentation is updated with all of the current image edits and info data.
  • Harvey receives the link to the Presentation from Anne. He views the two swatches quickly reviewing Anne' s captions and information slip details. Harvey then clicks the comments tab and types. "Anne, I have a few swatches, but this looks like a custom piece we'll have to work on. I will send you swatches first thing in the am and you can leave me snips of what you have so I can get them to the mill ASAP. I'll follow up in a few days. It would be great if you could send this Presentation to Lynn at the mill today, so she can start working out some ideas ahead of getting the swatches.”
  • the above-described system may be modified as follows.
  • the system according to the alternative embodiment is referred to as Visuality.
  • Visuality provides a web-based, private, secure visual communications platform for the apparel industry. Fellow apparel workers in separate locations can use Visuality to work together online, with the same visual information in front of them on their computers.
  • Visuality reduces the need for guessing and the need for expensive and time-draining overnight shipping, long-distance phoning, and conference calls.
  • Real-time collaboration greatly streamlines and organizes communications and feedback. Inspirations become beautiful products as designers efficiently collaborate together. Sales people respond more quickly to customer requests and respond with clear visual information. This allows Sales People to get decisions made more quickly, anticipate the needs of their customers, and make more sales. Users can even utilize the platform to communicate visually with non-member customers as long as these customers have an e-mail address.
  • the system provides an intuitive, easy-to-leam, and easy-to-use technology solution that leverages current relationships.
  • the software environment includes a Client Application that runs on the personal computers of GAN customers. Connectivity to the Internet enables the collaborative benefits of the platform.
  • the system does not clog Networks as E-mail attachments do.
  • the requirements for a client computer to be used in the system are:
  • Pentium HI class PC workstations (800 MHz or higher) running Microsoft Windows 2000 or higher.
  • a persistent Internet connection such as DSL, cable modem, or TI line is recommended, although features will also operate (slower) via dial up connection of 24kbps or greater.
  • the experience of the GAN user is directly linked to the GAN user's underlying infrastructure (i.e., configuration of user's PC, network bandwidth and utilization and Internet connectivity).
  • the Client Application "floats" on top of the user's infrastructure to connect to the Servers.
  • the Servers enable the collaboration between GAN users.
  • the Visuality software application includes the following modules. a) Application Client Module
  • the Application Client Module functionality shall be based on the functionality of the pre-existing Visuality client program. This program shall be constructed using the Java computer language.
  • the re-implemented Application Client Module shall be re-implemented in a manner compatible with the Application Server Module referred to in item (c).
  • the look and feel of the application shall be improved and made more consistent as specified by CLIENT.
  • Functionality to be included in this module includes:
  • Main application Frame including Menus, Toolbars, Contact List and directory tree.
  • the Web Client Module functionality shall be based on the functionality of the existing Visuality Web Module. This program shall be constructed using HTML
  • Tasks at the "World” level include adding companies, adjusting company licenses, assigning company administrators, and providing usage reporting
  • Tasks at the company level include adding and deleting users and password reset.
  • the Application Server Module shall allow for the storage and forwarding of shared and published arrangements and comments for the Visuality program users.
  • This program shall be constructed using the Java programming language.
  • 10 Functionality to be included in this module includes:
  • Visuality will give every employee the power to help the company get better products to more customers, faster, by easily and securely communicating and collaborating visually via a simple internet connection. For communicating visual information, Visuality is much more effective, faster, and better targeted than email, overnight deliveries, websites, telephones, or faxes. Designers and 0 Merchandisers will be able to communicate visual presentations clearly, quickly, and securely to suppliers, customers, and team members. Visual communication and collaboration means increased creativity and faster time-to-market with more on-target
  • Visuality is truly a global solution, continuously helping your employees and their relationships regardless of geographic location or time zone. Visuality is not limited as to maximum number of users. The application is completely scalable to thousands of users, while also being extremely valuable to much smaller teams.
  • even non subscribers may receive and comment on presentations.
  • Suppliers, customers and other relationships may also create and publish their own presentations, rather than just comment back and forth regarding the presentations.
  • additional benefits aimed to be provided by Visuality are: Increased Revenues
  • Non-restrictive use Visuality users can communicate with anyone they choose as long as they have an email address. Non- Visuality recipients can review visual presentations, and instantly comment back and forth specifically regarding each presentation without clogging their network with large image files. Easy to leam/easy to use: Garment Industry professionals created Visuality to mirror actual industry work routines, so that users are not required to learn a new way to do their jobs. It allows them to do what they have always done, only more easily and more efficiently. Visuality is easily and immediately adopted by users throughout the product cycle. Users appreciate the intuitive and efficient design and organizational tools and secure sharing capabilities.
  • Designers have more time to be creative: Designers save precious time by communicating their concepts efficiently to those they need to and get the necessary feedback quickly. They can also now rely on visual information to make requests to suppliers versus "explaining" needs over the phone. Visuality ensures that all of this happens rapidly, allowing them to spend more time being creative. Designers receive valuable and context specific feedback that they normally never get.
  • Sales teams get more and smarter access to customers, leading to more sales: Sales teams can immediately respond to customer requests with efficient, elegant Visuality presentations-presenting exactly what the customer wants and making the sale. They also offer modifications to requests or their company's newest collections in an easy-to-view format ensuring customers always have the best possible options in front of them. Management will appreciate increased visibility across the entire product design and merchandising life cycle.
  • Visuality customers can use the product online or offline. When connected, Visuality instantly updates all information to reflect the users' and all other designated collaborators' comments and changes.
  • Visuality's instant comments provide the functionality of instant messaging without the potential security problems. Additionally, Visuality instant comments are always context related to visuals and therefore more useful and effective. Participating users are automatically notified of new presentations or comments.
  • Visuality is better than e-mail in the following respects: Visuality keeps all Visuals Descriptions, and Threaded Comments correlated at all times. Visuality is virtually spam and virus free, as all users are known and invited. Visuality automatically handles version control. The large image files are only sent one time, while small comment threads are exchanged, making it faster than e-mail.
  • Visuality is also better than video conferencing. While Video Conferencing is helpful for meetings, Visuality does that and much more. Visuality participants actually create permanent work while collaborating together, rather than just generally talking about it.
  • Visuality is friendly & intuitive. Getting started with Visuality is easy and fun: Simply import your photo or other pictures into Visuality Intuitively organize your pictures with Visuality' s Folio tool, easily adding picture and row captions and descriptions
  • Visuality allows the user to create presentations and comments either offline or online. Only publishing and live comment threads require online connections.
  • the system requirements for Visuality are as follows:
  • IT support needs are extremely light, while providing appropriate user administration, usage reporting, and management.
  • Periodic Visuality Updates are automatically and transparently downloaded to each individual user computer.
  • Visuality presentations and comments operate transparently and securely through firewalls. Visuality is a hosted application, so no customer server is required.
  • Active Favorites An element of the Main Client Window. Active Favorites are like favorites in Internet Explorer, with the added feature that when they appear in the Active Favorites area on the clients, they can have objects dropped on them and tool specific actions will occur.
  • Alert - A visual and/or audible cue to the User. For example, there will be an alert when new Notifications have arrived. It will appear as an icon in the Status Area of the Client.
  • Arrangements The set of all containers within the CCF Environment.
  • One embodiment of the present inventin includes four types of Arrangements: Folders, Folios, Storyboards, and 1 - Presentations.
  • Alternative embodiments may add two or more additional Arrangements, the Trend Board and the Color Palette.
  • the image can be an original painting, photograph of architecture or product, portrait, poster, swatch, strike-off, mecanic ⁇ printed fabric, etc.
  • Declaring an image as an Element places no restriction on how the image can be viewed or manipulated; Artwork is simply an organizational label for the Designer and a small clue to help the viewer interpret the designer's purpose.
  • Authentication The process by which the system validates a User. The User must Login _. with a valid identification. Authentication persists until the user executes a Logout or the connection is interrupted.
  • An Author A role automatically assigned to any GAN User when they create a GAN Object.
  • An Author can add, modify and delete things they create. They control sharing. They can add o ⁇ comments, read all comments and delete comments.
  • An Author has no access to objects that they did not create if no additional access has been granted.
  • An Author is synonymous with Owner access rights. (See, Editor)
  • Bit Bag Also, bit bags.
  • Technical slang that refers to any file or attached object that is stored or manipulated as a closed binary thing, with no attempt to determine or understand the content.
  • Bitmap - A bit map defines a display space and the color for each pixel or "bit" in the display space.
  • a Graphics Interchange Format (GIF) and a JPEG are examples of graphic image file types that contain bit maps. Because a bit map uses a fixed or raster graphics method of specifying an image, the image cannot be immediately rescaled by a user without losing definition.
  • Calendar - One embodiment of the present invention includes a simple, non-interactive calendar to handily display the current month/day. Scheduling capability (see Date Book) inside GAN is added in another embodiment of the present invention.
  • CCU Calculus For Concurrent Update
  • CCU A calculus that unifies the notions of logical time stamps together with an update history and a well-defined set of transformation rales for applying updates to shared objects.
  • CCU describes the algorithms and their proofs for concurrent updates and collision resolution.
  • CCU provides the theoretical basis for the sharing implemented in the GAN Environment by the CCF.
  • Canvas Generic term for drawing or painting area.
  • Canvas describes the physical dimensions of a Storyboard. While most Arrangements in GAN expand and contract based on the amount of content, like computer windows, the Storyboard displays its contents on a Canvas of predetermined size.
  • the Canvas is more like the Page Size in Adobe Illustrator, Page Maker, or Quark than a computer window, even though the GAN user looks at a Storyboard through a window.
  • the background color of a Canvas can be specified. Alternative embodiments allow any image (of usable format) to be used as a background.
  • the canvas of a storyboard will be a 4x3 aspect ration, suitable for displaying full screen or printing on landscape-oriented paper.
  • ZOOM and SCROLL BARS will be required on the Storyboard window to accommodate different size monitors and different levels of detail.
  • canvas size is 1.00 x 0.75 where each element is placed on the canvas by a floating-point coordinate, and every element is re-sized to a floating point size relative to the same floating point size of the canvas.
  • the element retains its originally imported pixel size and dpi density, and is scaled on the fly relative to the floating point coordinate system, the ZOOM, the size of the space to be rendered in, and the scroll bars.
  • Caption An optional block of rich text associated with each slide in a Presentation arrangement.
  • CCF - The Common Collaborative Framework is the body of software, hardware and network that implements the CCU and supports the GAN Environment.
  • CCFP The CCF Protocol which enables communication between CCF Servers and the Clients.
  • Client -
  • the term Client is never used alone in GAN literature as it can refer to a Company, a Desktop Application, or an internal component of the software. Most often used to refer to the Client application software.
  • Client Greeter The software component of the Logical Server that communicates with incoming network requests from the Logical Client and talks to the Client Proxy and Object Agent. Its purpose is to authenticate the user and provide the user with credentials to access the GAN Environment.
  • Client Proxy The software component of the Logical Server responsible for creating instances of object agents as clients arrive, and for terminating object-agent instances as clients depart.
  • Client Reset The method by which client-state may be reset by the client requesting and the server-proxy delivering the complete state of an object or by having the client report an older state and having the client-proxy, deliver all of the updates to the client-state that have occurred since the last known good client state. If there is insufficient history to enable an incremental update, then the server-proxy will deliver a replacement state to the client that corresponds to the current most recent state of the object.
  • Color Chip - An Element that represents a single color value.
  • a color-chip is automatically produced by the GAN Color Palette Tool.
  • the color palette will be preloaded with Pantone colors and their numbers.
  • the Color Palette is a container object that includes a generator for Color Chip basic design elements and storage to hold the created palette.
  • the Color Palette Generator includes a color wheel and a Color Sampler Applet. Color objects drag/dropped onto the CSA can be sampled and the sampled colors may be added to the user's Color Palette. Color Chips in the Color Palette items that are drag/dropped from the Color Palette into other Arrangements become individual Color Chip basic design elements.
  • Concurrent - Two or more events are concurrent if they occur at the same time or appear to occur at the same time.
  • GAN Guest An external User who can only access the system through the Web interface for Published Objects (in GAN VI.0, Presentations). A Contact only receives Notifications through email.
  • Disconnected collaboration A significant aspect of the CCF that underlies the GAN Environment. It allows disconnected, i.e. offline users to enjoy the same sharing opportunities as connected (online) users.
  • DDTP Dynamic Data Transfer Protocol
  • Editor - A role that can be assigned to any GAN User by an Author of an Arrangement.
  • An Editor can add to and modify an Arrangement.
  • An Editor can delete references to Elements in an arrangement but cannot delete the Arrangement itself.
  • An Editor can see the presence of the other users who are sharing. They can add comments and read everyone's comments.
  • a user with the Editor role has View and Update rights; they do not have Create and Delete rights for the arrangement itself. See Author.)
  • GAN Version 1.0 includes seven element types: Swatch, Trim, Color, Tear Sheet, Sketch, Artwork, and Image Miscellaneous.
  • GAN Version 2.0 will add Color Chip. Future versions of GAN may expand Element types to include text, additional image file formats and other things such as video and audio.
  • GAN Elements are image files (JPEG or PNG) with a single attached, non-removable collection of meta-data stored in and viewed on the Information Slip.
  • the Element metaphor is a photograph. It is a two-sided object with an image on the Front and notations on the back, on the Information Slip.
  • an Element When closed, an Element appears as a thumbnail of the image it contains or an icon. Opening an Element displays the image in "full screen" in a new GAN window. The user may open the Information Slip for the Element independently of the Element. Elements cannot be shared individually.
  • Folder The basic Arrangement type in the CCF Environment. It looks and acts much like a computer folder but exists only within CCF. Folders can contain any and all types of objects: Elements and all types of Arrangements.
  • the Folder metaphor is a box, filing cabinet or pile of random items. An item is in a Folder because that was the most convenient place to put it when it was created or acquired. An organized user or group of collaborators can use folders extensively to organize materials if they wish, but the CCF Environment neither requires nor restricts such possible use.
  • Folders have three attributes: Content (which can be any number of items), Sharing (the list of Users able to share the Folder), and its own Information Slip.
  • a Folder when created, is empty and the user who creates it is prompted (and required) to fill out the Folder's Information Slip. Content can be added by dragging into a open or closed folder.
  • a Folio The second level of Arrangement in the GAN Environment.
  • a Folio can contain Elements, Folios, Storyboards and Presentations. (Previously know as "group folder") .
  • the Folio metaphor is a group of organized stacks of design elements to be reviewed. An item is in a Folio because it needs to be considered in context with all the other items in the Folio.
  • Folios have three attributes: Content (which can be any number of items), Sharing (the list of GAN Users/Contacts able to share the Folio), and its own Information Slip.
  • a Folio When created, a Folio is an empty stmcture.
  • the user who creates a Folio is offered several types of initial structure: 1. Default (no pre-named rows, the Folio contains one empty Row named "Unnamed")
  • a Folio When closed, a Folio is represented by a Thumbnail automatically derived from the first four images in the Folio and a numeric count of the number of items in the Folio. If items are dragged onto a closed Folio, they are placed in the first position of the first Row.
  • a Folio When opened, a Folio displays its content in a specific form.
  • a variable length list of variable length rows is only as long as the number of items in the rows. There can be no empty locations between items.
  • GAN An overloaded word used to refer to both the Global Apparel Network as an organization and as a generic abbreviation for the software environment.
  • GAN Administrator An individual within a GAN Client Company with special privileges and responsibilities to create or maintain Client-specific GAN information.

Abstract

A web-based collaboration system allows multiple users to organize and manipulate visual information collaboratively in real-time while maintaining data associated with the visuals correlated at all times. Multiple levels of participation and security are provided to allow collaboration to occur in a private, intuitive, and secure visual environment. The system provides the ability to invite others in to view and critique their work in real-time as it is created.

Description

MULTI-USER COLLABORATION SYSTEM AND METHOD
Field of the Invention
The present invention relates to a system and method that allows collaboration between multiple users, and more particularly, to system and method that allows multiple users to organize and manipulate visual information collaboratively in real-time.
Background of the Invention
The $1 trillion global apparel industry is made up of many thousands of designers, suppliers and manufacturers. All of these groups are constantly developing and marketing products through a chaotic, and complex, set of interrelationships. Although the industry already spends over $25 billion annually on technology solutions, none of them address visual communications and collaboration among these interrelationships along the value chain.
The global apparel industry is facing some of its greatest challenges ever, among them the fact that both outside competition and internal company relationships are no longer regional, but international. Differing locations and time zones make it difficult, to say the least, to remain vital and competitive.
The global apparel industry revolves around the life of thousands of individual products or styles, each of which fits into a precise calendar of development that involves concept, development, manufacturing and selling. In addition, each product or style requires an immense amount of communication and collaboration in resources between designers, textile suppliers, manufacturers and retailers, each of which may be in a different time zone and on a different continent. Constant communications between these interrelationships is vital in the product development process.
A company's ability to rapidly conceive, develop and sell products is key to its success. Before the advent of the Internet, it was difficult to imagine effective collaboration among those in the apparel industry, especially considering its worldwide breadth of supply and distribution chains-among thousands of market participants and hundreds of thousands of products offered in any one season. A typical collaboration effort might involve coordinating U.S. designers, European textile suppliers and Asian manufacturers via midnight-to-morning long-distance calls, illegible faxes and expensive overnight deliveries of swatches and samples. Even with these tools, interactions and decisions that should take only hours can take days-even weeks.
The apparel industry is a highly visual environment, and a significant amount of communication is done using images. Often a designer will have a large number of images that they have collected from various sources, such as pages of magazines, photographs they have taken or sketches they have drawn up. They use these images for personal inspiration, and arrange them into collages to communicate their ideas to other team members and suppliers. When suppliers wish to get the attention of the designers, they often use highly visual presentations. The suppliers then share the feedback they get from their customers with their own stylists. Whenever interesting or relevant images are found, they are often used, reused and shared.
What is needed is a collaborative system that allows users to collaborate and communicate using system tools to give presentations, share product ideas and show off collections. The system should allow individuals and teams to organize and manipulate design elements in a collaborative environment with multiple levels of participation and security. The system should also allow designers to view, capture and organize visual information and concepts collaboratively, then communicate these concepts to suppliers, manufacturers and retailers worldwide in a secure environment. Suppliers and mills should be able to use the system to organize and present their offerings of fabrics and product lines to their designer customers. Stylists should be able to use the system to organize their design ideas and information, as would an apparel designer. The system should also be outwardly extensible to enable non-users to review and comment on user presentations via a web site.
Summary of the Invention According to one embodiment of the invention, a collaboration system comprises a server and a plurality of client terminals coupled to the server, characterized in that a first client terminal and a second client terminal collaborate in concurrently modifying a visual object, wherein the modifications are reviewed for conflict resolution and applied to the visual object in real time based on the conflict resolution.
According to another embodiment of the invention, a collaboration system comprises a first computerized tool coupled to a first user terminal for manipulating a visual object; means for selecting at the first user terminal a share recipient for the visual object; means for transmitting the visual object to a second user terminal accessible to the share recipient; a second computerized tool coupled to the second user terminal for modifying data associated with the transmitted visual object; means for transmitting the modification to the first user terminal; means for automatically correlating the modification to the visual object; and means for presenting the visual object with the correlated modification at the first user terminal.
According to a further embodiment of the invention, a computerized method for collaboration comprises invoking at the first user terminal a first computerized tool for manipulating the visual object; selecting at the first user terminal a share recipient for the visual object; transmitting the visual object to a second user terminal accessible to the share recipient; invoking at the second user terminal a second computerized tool for modifying data associated with the transmitted visual object; transmitting the modification to the first user terminal; automatically correlating the modification to the visual object; and presenting the visual object with the correlated modification at the first user terminal.
According to another embodiment of the invention, a computerized method for collaboration comprises electronically associating comments with a visual object; sharing the visual object with the comments with a share recipient; receiving updated comments from the share recipient; automatically correlating the updated comments with the visual object; and presenting the visual object with the updated comments.
In another embodiment, the invention is directed to a collaboration system and method substantially as hereinbefore described with reference to the accompanying drawings.
It should be appreciated that real-time visual collaboration helps to greatly streamline and organize both internal and external communications/feedback, and helps to produce better-targeted products hitting the showroom floor faster, less expensively and with less waste. These and other features, aspects and advantages of the present invention will be more fully understood when considered with respect to the following detailed description, appended claims, and accompanying drawings. Of course, the actual scope of the invention is defined by the appended claims.
Brief Description of the Drawings
FIG. 1 is a screen shot of an exemplary object history viewer according to one embodiment of the invention;
FIG. 2 is a screen shot of an exemplary user interface window according to one embodiment of the invention;
FIG. 3 is a dialog box for creating a new object according to one embodiment of the invention;
FIG. 4 is dialog box for importing an object according to one embodiment of the invention;
FIG. 5 is an illustration of the main client window displaying notifications;
FIG. 6 is an illustration of an exemplary screen shot for transmitting a notification;
FIG. 7 is an exemplary illustration of a folder browser thumbnail view; FIG- 8 illustrates a dialog box for setting a notification option;
FIG. 9 illustrates an exemplary notification that is to be transmitted to a publish recipient;
FIG.10 is an illustration of an exemplary folio according to one embodiment of the invention;
FIG. 11 is an illustration of an exemplary usage of the storyboard tool according to one embodiment of the invention;
FIG.12 is an exemplary illustration of a storyboard with Navigator, Search and the Information Slip turned off; FIG. 13 is an illustration of a presentation slideshow according to one embodiment of the invention;
FIG. 14 is an exemplary presentation comment view; FIG. 15 is an exemplary screen flow diagram according to one embodiment of the invention;
FIGS. 16A-16E depict how exemplary buffer states are updated upon application of exemplary changes made by multiple users;
FIG. 17 is an illustration of a peer-to-peer topology;
FIG. 18 is an illustration of a star topology;
FIG. 19 is a schematic block diagram of logical components of a multi-user collaboration system according to one embodiment of the invention; FIG. 20 is a schematic block diagram of physical components of a multi-user collaboration system according to one embodiment of the invention; and
FIG. 21 shows the top-level design for a GUI client component map according to one embodiment of the invention.
Detailed Description
In general terms, a multi-user collaboration system allows multiple users to organize and manipulate visual information collaboratively in real-time while maintaining descriptions, threaded comments, and other data related to the visuals correlated at all times.
Multiple levels of participation and security are provided to allow collaboration to occur in a private, intuitive, and secure visual environment.
According to one embodiment of the invention, the system provides the ability to invite others in to view/critique their work in real-time as it is created; the ability to allow others to contribute materially to their combined work product in either a real-time and immediate mode or in a high-latency disconnected mode, and the ability to communicate with others as a common work product is produced in a real-time and immediate fashion while not all people are necessarily present in the same physical location. Alternative collaboration methodologies capable of providing these same advantages, may, with equal facility be implemented.
According to one embodiment of the invention, the system provides a web-based, private, secure, visual communications platform for the apparel industry. The system focuses on the crucial "concept to sales" portion of the apparel cycle, enabling team members, suppliers, and customers in separate locations to work together while viewing the same images, folios, storyboards, and associated descriptions and comments that are correlated to the visuals. The system helps eliminate the need for guessing and reduces the need for expensive and time-draining overnight shipping, long-distance phoning, travel, and meetings. Real-time collaboration centered around visual information greatly streamlines and organizes communications and feedback. The system helps ensure better-targeted products hit the showroom floor faster, less expensively and with less waste, resulting in increased sales and profitability.
The following sections describe the function and architecture of the system according to one embodiment of the invention.
GAN SPECIFIC FUNCTIONALITY
According to one embodiment of the invention, the system, also referred to as a global apparel network (GAN) system, provides a collaborative environment for the fashion industry. GAN users can collaborate and communicate using GAN tools to give presentations, share product ideas and show off collections. GAN allows individuals and teams to organize and manipulate design elements in a collaborative environment with multiple levels of participation and security.
GAN Subscribers (users/members) and Guests range from designers and creative teams to buyers and sellers, suppliers, mills and retailers. GAN allows designers to view, capture and organize visual information and concepts coUaboratively, then communicate these concepts to suppliers, manufacturers and retailers worldwide in a secure environment. Suppliers and mills can use GAN to organize and present their offerings of fabrics and product lines to their designer customers. Stylists use GAN to organize their design ideas and information, as would an apparel designer.
The GAN software environment consists of the GAN Client Application that runs on the personal computers (PCs, Macs, and Linux systems) of the Subscribers and Internet communications links that provide connectivity to the network of GAN Servers. The GAN environment extends outward to invited Guests who can be reached by email to review and comment on Presentations via a web site. The ability for business partners such as designers and suppliers to share visual information is vital to their business process today.
According to one embodiment of the invention, the system, the GAN system, provides tools that supports the Concept-to-Sales phase of the apparel industry. Such tools allow the organizing of images, storyboarding, and commenting, communicating, and sharing of images and storyboards. Exemplary tools provided by the system include, but are not limited to a folio tool, presentation tool, storyboard tool, quick image editor, instant messaging, information pane, favorites tool, navigator, search tool, notification tool, and GAN assistant.
The folio tool is a collaborative tool for multiple users to organize images and label them in an easy to use format. The images are presented in a structured row format. Functionality is provided to label and caption the images. According to one embodiment, three folio templates are provided. The folios may be shared with any GAN customer. The sharing recipients may make comments to the overall folio and or individual images contained in the folio.
The presentation tool is a collaborative tool for customers to present images and storyboards in an easy to use, slide show format. Functionality is provided to label and • caption the images. Presentations may be made available to any recipient with an Internet browser that enables GAN customers to easily reach external business partners with visual information securely, and receive comments from them. The images within the presentations may be locked for additional security. The sharing recipients may make comments to the overall storyboard or individual images contained in the storyboard.
The storyboard tool is a collaborative tool for system clients to create collages of images and shapes. The tool allows users to crop, resize, rotate and flip images. Drawing tool is provided within the storyboard tool to create ellipses, rectangles, simple lines, freehand lines, arrowed lines and rich text, as well as to select colors with HSB and RGB color options for objects, lines and text. Functionality is provided to label and caption the images The sharing recipients can make comments to the overall storyboard and or individual images contained within a storyboard.
The quick image editor provides tools for system clients to edit images within the environment provided by the system. These tools allow a user to crop, resize, rotate and flip images. The editor also provides the ability to make updates to information slip details and GAN element types.
Instant messaging provides a private, secured chat functionality between system clients. During a current chat, a link to a current shared object may be provided for added ease of use. Instant messaging also provides emoticons for visual expression within the chat format. An instant messaging Bar presents icons that represent the online/offline status of
GAN users in context of a shared object.
The information pane is a tab structure used to organize comments and pertinent information relating to an object. According to one embodiment, four distinct tabs make up the information pane which allow sharing and communications within the system's collaborative environment. These tabs include: Information Slip, Caption, Sharing and Comments. The Information Slip tab is referred to as "the pertinent information on the back" of a GAN object. Some of the fields include season, delivery and description, which are used for structure and organization as well as to enhance communications between sharing recipients. The Caption tab provides an optional block of rich text to accompany GAN objects. Captions are used to clearly communicate headlines or special call outs to shared recipients. The sharing tab allows haring roles to be designated and displayed. The sharing tab clearly communicates to all GAN customers their role relating to the associated GAN object. A Comments tab provides rich text tools for shared participants to make comments.
According to one embodiment, the comments are labeled by participants name, date and time of comment text.
The favorites tool offer functionality to place-hold important GAN objects providing one-click access.
The navigator is an organizational tree-structure in the GAN environment that shows all resources available to the GAN customer including people within their company, contacts and private as well as shared work.
The search tool provides functionality to do simple and or advanced searches on all GAN objects associated to a GAN customer.
The notification tool provides notifications in an automatic, visual, one-way communication channel to inform a GAN customer that activity has occurred affecting shared objects. Notifications may also be used as a channel of communication to send a short message to a user, for example, as an email.
The GAN assistant provides GAN customers with support tools such as answers to frequently asked questions, how-to steps to use the GAN tools and the GAN glossary of terminology.
Images
According to one embodiment of the invention, the basic building block of the GAN environment is the Image. Images are pictures on the computer that come from scanning, digital photography, the web, or from other computer applications such as Photoshop, Illustrator and other paint programs.
Images are more than just a picture on the computer screen however. They are like a photograph with a picture on the front and writing about the picture on the back. The "writing on the back" is referred to as the Information Slip and contains information such as the image's name, source and description.
Images are used as the basis for all the GAN tools. They are organized, put into collages and included in presentations. They can be shared with others. Folio for Organization
A Folio is an organization tool used to categorize images and sequence them within those categories, much like a real world folio lets you place sheets of paper into sections and makes it easy to add, remove and order those sheets of paper. For example, a designer will use a folio to organize images representing ideas and product inspirations while working on a new product line, using categories like Trends, Colors, Silhouettes and Textiles.
A Folio in GAN is like a photo album with section tabs and see-through sleeves where images can be placed. The images can be immediately looked at and their information slips can be examined. Comments can be added to the folio, like stuffing notes in to the same sleeve as an image. Visually a Folio looks like rows of filmstrips, where each row has a descriptive name.
Storyboard for Visualization
A Storyboard is a collage of images. It is like a sheet of corkboard where images are tacked. The images are visible and their information slips can be examined when necessary. Comments about the storyboard can be added to the Storyboard, like tacking notes on to corkboard. Unlike a corkboard however, Storyboards allow images to be resized, cropped and rotated into the collage, can be drawn upon and have snippets of text added; yet the underlying images retain their original information slip and image. The comments and their visual cues on the Storyboard can be either visible or hidden from view.
Presentation for Structured Internal and External Visualization A Presentation is a structured sequence of images and text. It is like a flip chart where each sheet has both an image and text either describing the picture or providing the verbal content of the presentation. It is a tool for presenting complex visual ideas, with a focus on exchanging comments between the presenters and presented. For example, a Salesperson from a mill could use a presentation to show the latest fabrics and patterns to some designers, and get their feedback about what they like and don't like. Presentations are always intended to be shared with others. Presentations are an effort to communicate ideas to customers and team members. Presentations can be shared among GAN users. Presentations can also be published and made available for sharing to non-GAN users as well as to GAN users. Publishing freezes a presentation at a point in time by making an entirely new copy of the presentation and the images included in the presentation. All may comment on elements in the presentation. Those comments are made available to the individual that has published the presentation. Additionally comments on a presentation can be shared with other GAN members, enabling sharing customer feedback with teams and directors. DESIGN I The foundation of the GAN system is the combination of the GAN specific functionality later together with the set of facilities provided by the Common Collaborative Framework (CCF), and most notably CCF's support for distributed access to shared objects. With the system, collaboration is useful, pervasive and transparent from an end-users viewpoint. The system allows a user's current experience to be preserved as much as possible and extends it seamlessly to provide every user the following new capabilities:
1. The ability to invite others in to view/critique their work in real-time as it is created, 10 2. The ability to allow others to contribute materially to their combined work product in either a real-time and immediate mode or in a high-latency disconnected mode, 3. The ability to communicate with others as a common work product is produced in a real-time and immediate fashion while not all people are
15 necessarily present in the same physical location. These facilities are enabled using a sophisticated algorithm that gives the system the ability to accept and transform updates to shared objects in such a way that the results remain meaningful to the end-users but do not require their intervention to resolve conflicts. This is 0 important because without the algorithm, a user would not be able to use transparent collaboration and would have to forgo the ability to seamlessly use and update shared objects when disconnected from the network. CCF COLLABORATION OVERVIEW 5 The system foundation implements distributed shared workspaces based on the concurrent distributed operation transformation algorithm that implements CCU (Calculus for Concurrent Update). The distributed shared workspaces are used to provide a platform that fully supports the implementation of shared objects for which the object updates and metadata updates are managed by the workspace associated with the object. 0
For example, if we have a shared object that represents a folder. The folder may contain other objects that belong to different shared workspaces, but updates to the folder itself, (the addition of objects, arranging of objects, renaming of objects, removal of objects)
5 represents shared update operations on the folder and those updates are resolved by the shared workspace that is used to manage concurrent updates to shared folders. CCF FUNCTIONALITY Collaboration
According to one embodiment of the invention, every object in CCF is sharable. A shareable object, by design, supports the application of multiple simultaneous updates. According to one embodiment of the invention, any updates that cause a conflict are transformed to represent a new but still meaningful updates which, when applied, ensures consistency of all the views of the object. Shared workspaces are used to define the context within which a single object type is shared.
Each shared workspace is a separate environment with a specific set of semantic update and concurrent operation transformation rules. For all objects that it manages, the workspace maintains a history of updates, enforces access control rights and resolves conflicting updates.
For example, a shared file environment specifies rules that define what happens when a file is added, deleted, updated, moved or renamed and the operations are consistent in the presence of other concurrent and possibly conflicting operations within the same environment. Each user that is a participant in the shared workspace will also be made aware of the changes as they occur provided that they are connected to the network. By default, a workspace object is initially shared only with its owner/creator.
All updates to shared objects are tracked and the user receives both the updates as well as notifications identifying objects that have been modified. The granularity of the updates and hence of the transaction log is dependent on the object being updated. Certain objects such as swatches have very small changes that can occur to them, while other objects such as arrangements can have larger updates/changes that can occur to them.
For example, an image of a swatch of fabric along with its information slip can be viewed by many people. If one person corrects the spelling of the mill, and another person changes the cuttable width at the same time, all users sharing the swatch that are connected to the network will almost immediately see both the mill change and the cuttable width change. Objects in CCF can be contained within structured views. Any single object may be an item that is contained within a number of structured views. However, within CCF there is only ever one "real" object instance, even though it appears to be in many places. Continuing with the previous example, when the mill and the cuttable width changes are made, almost immediately the information slip for the image would change in every structured view where the image was used.
Even though every object in CCF can be shared, it is important to control to whom it is being shared, and what the user can do with it. For example, a user may want to share a view with another user, but not let the other user make any changes to the view. Access rights are localized to views and are inherited. So for example, if a view is shared with another person, initially that person is granted a default set of rights. The default rights are domain specific and are configured by specifying a default initial set of rights with default rights for each object type. The default rights are then constrained or expanded by any inherited access rights constraints.
According to one embodiment of the invention, in CCF, an object maintains an access control list that defines access control for the object. By default the initial control set applies to all users. Fine-grained access rights may be applied by extending the access control set to grant additional rights or revoke already granted rights for specific users.
CCF supports the following access control set facilities: Create, Read, Update and Delete. By default every object has an initial access control set specifying access rights for Owner, and for Others. An owner has Create, Read, Update and Delete privileges to all objects that they own thereby allowing an owner to alter the access control set of the objects that they own and to modify the object itself. An owner may also designate another user as sharing ownership, thereby granting another user the right to update access rights. By default every object in the system is also owned by Administrator. This is a special user that is used by the system maintainers to manipulate objects and access rights on behalf of users of the system. For convenience and clarity, Create, Read, Update and Delete are abstracted out into user roles. For example, GAN defines roles using a publishing metaphor for Author, Editor, Reviewer and Viewer. Disconnected Collaboration
Network connectivity is a transparent attribute of a shared workspace. This means that connectivity is not required to make forward progress, but connectivity is required to interact and share your work with others. Users may opt not to share their work even though they have network connectivity. In this case it is as if the user pulled the network cable out of the back of their computer. The shared environment collects the local updates but does not transmit them to remote users until the user has indicated that they wish to connect that shared workspace to the network. Initially we only allow a single connect option. That is, either the user is connected or they are not. Alternative embodiments may include disconnected, receive only, and other connected options. In the current embodiment, if a user specifically desires to receive collaboration from other team members before exposing his/her own collaboration, that user would simply delay his/her own work on that specific arrangement until the desired collaboration from others is received.
For example, consider a user and an assistant who are sharing an object. The user takes their laptop onto an airplane, and it appears as if everything they were working on earlier at the office is on their laptop. The user then makes changes to the object at the same time as the assistant back in the office is changing the same storyboard. They are both making forward progress on the object. When the user comes back to the office, all changes to that object are applied, along with all the changes the assistant made, such that both the user and assistant appear to be sharing the same object once again. Users can always view histories if they wish to validate a questionable action in any arrangement and/or object.
If a user makes an update to an object while they are disconnected and during that time the object's access rights are modified in a such a way that it disallows the update, the shared workspace considers the users update to have occurred prior to the change in access rights. However, in the case of a user who no longer has any access rights, that user will be refused connection. The changes are applied and the user will be notified of their change in access rights on that object. Notification
A notification mechanism can be set that will notify users of updates against any CCF managed object. An easy user interface is created that allows users to check their notifications and to set default retention policies (that is, how long a notification is kept by the system). Notifications are a one-way channel from the network to the user and are therefore not distributed beyond the intended recipient. Multiple recipients may however receive a global or a limited broadcast notification.
For example, a team is sharing an important folio, and someone on the team makes a change. A notification is sent to all people sharing the folio so they are aware of the change.
Notifications may also be commonly used to communicate an instruction to a recipient. "Descriptions", on the other hand, are more often used to better explain or describe the arrangement and/or element it is associated with. The "Comment" field is meant to contain the "comments" between sharers.
One embodiment of the present invention provides for font attributes such as bold, italicize, underline, etc. These attributes are available for notifications and wherever else possible. Publish
Publish refers to the act of freezing an objects state at a point in time by making an entirely new copy of it and all its components, and restricting all modifications to it. Any CCF object can be published. Alternative embodiments provide a limited set of tools for published objects. Functional Abstraction
In order to simplify the implementation of a complex system, it is often useful to abstract common functionality down to abstract building blocks, and then build up the system from those simpler building blocks. This section will describe the abstractions used throughout CCF and GAN. The abstract building blocks of CCF are Objects and Tools. Objects are the "things" and Tools act on the "things." Elements and Arrangements are the main Objects. Elements are the base "things" to be shared, for example pictures. Arrangements are collections of Elements, usually arranged in a specific order, for example pictures sequenced into a presentation. Tools are used to look at and manipulate Elements and Arrangements. A user creates, collects, assembles, organizes, analyzes and shares fundamental design elements and both formal and informal arrangements of design elements with colleagues and co-workers.
Elements and Arrangements are described in more detail in the following sections, and they are built up into the corresponding CCF and GAN required functionality. Tools are briefly described here, with a more detailed discussion on them in the user interface (UI) sections. Elements
Elements are the fundamental object that can be recognized by the CCF Environment. The Element metaphor is a photograph. It is like a photograph with a picture on the front and writing about the picture on the back. In CCF we will refer to the picture as the image or file and the writing on the back as the Information Slip. In one embodiment of the present invention, the image is really an image file (type JPEG or PNG), and the Information Slip is really meta-data in name-value format about what the file represents in the real world.
For example, Elements are used to represent the following in GAN: Artwork, Color, Sketch, Swatch, Tear Sheet and Trim
Elements can contain any arbitrary file format and meta-data, as long as there are tools created that support the manipulation and rendering of the element within the CCF. Users
Users are elements that represent users of the CCF or non-users also known as Contacts. Users are used to authenticate users of the client or web site. Users are used to represent sharing. Users are used for Email, Notification and Instant Messaging.
User contains: Type (Client Users or External Contacts), Full Name, Short name,
Company, Email address, Password To clarify any concern about differentiation between users within a company: In an organization, my company has users that have specific roles- users can be placed into specific folders i.e. design folder, sales folder etc. so there is company organization and structure to company users.
At a company level, the system administrator will have the ability to add users and block or delete accounts. Arrangements
Arrangements establish the context that defines the relationships and order among a collection of Elements.
CCF has two types of Arrangements: Folders and Teams
Teams are arrangements of users and are used to simplify sharing of arrangements across teams of users.
Arrangements always contain a list of users or teams with their corresponding permissions about the sharing of the arrangement. Folders
A Folder is the fundamental unstructured Arrangement. A Folder behaves much like a computer folder in a traditional file system, but where a computer folder holds files and other sub-folders, a Folder holds elements and other Arrangements. Items in a Folder can be viewed as a list sorted by Name, Date, etc. or as icons but there is no other structure to the items in it. The three remaining Arrangements enforce a structure on the items inside them.
The Folder metaphor is a box, filing cabinet or pile of random items. An item is in a Folder because that was the most convenient place to put it when it was created or acquired. An organized user or group of collaborators can use folders extensively to organize materials if they wish, but the Environment neither requires or restricts such possible use. Folders will most often be used to create a shared project view to allow a team of users to create a collection of Images, Folios, Storyboards, Presentations and even more folders that they will share with other users of the network. Folders have three attributes: A list of Content (which can be any number of arrangements or elements), Sharing (the list of Users or teams able to share the Folder), and its own Information Slip.
A Folder, when created, is empty and the user who creates it is prompted to fill out the Folder's Information Slip.
The information slip of a Folder is as follows: Name, Description (variable length text field), Author (automatically filled in with the creator's Name), Date Created (datetimestamp automatically supplied by the system when the Element is created.). One embodiment of the present invention also enables the use of Keywords.
There are also a number of special folders. They behave like folders, but may not be implemented as folders. They are World, My Company, My Projects and Presentations.
• World - The topmost folder representing all the users and CCF data in the world. • My Company - The topmost folder of a CCF corporate server. Folders that are shared across teams are usually placed under this folder in a project based or repository based hierarchy.
• My Projects - The topmost folder created for every user. It is by default shared to the user as Author and is therefore a private space. It is the default place where images are imported into.
• Presentations - Special folder where published presentations are placed by default. Items in the Presentations folder are also available to non-CCF users via the web. Comments and annotations for an element are placed in the folder that contains the element. Teams (User Groups)
A Team is an Arrangement of Users. People often work in teams, and it is convenient to group them so they can be referred to as a team. Users can be on multiple teams.
Teams will most often be used as a convenience for sharing. For example, a Folio containing the Inspiration for Summer 2002 could be shared with The Design Team. The Default Role is used to specify the maximum default permissions that a member of the team will have when sharing.
For example, the A-Team in a company may have default roles for Ted as Author and Joe as Viewer; which define their maximum permissions of that team. If a folio is shared with the "A-Team" with the permissions of Viewer, both Ted and Joe are given permissions as viewers. A user may have a group of users defined with certain permissions, if that user decides to share an arrangement to that group with permissions other than their default permissions, the permissions of that shared arrangement will "win" in this sharing scenario. Both default and specific permissions are changeable by the Author. TEAM contains
List of Users, contains
Reference to User (the GUTD that is unique to the User Element) Default Role (in case we wish to add specific default roles when entire teams are dragged and dropped to share an object) Sharing
Everything in CCF can be shared. The mechanism for specifying sharing on something in GAN is to explicitly associate it to Users and Teams with the appropriate permissions. For example, when Anne wants to share a Storyboard with Barbara so they can both update it, Anne will add Barbara to the Storyboard and explicitly specify her permissions as Editor. Almost immediately after that, Barbara is able to see the Storyboard in her GAN Client and is able to modify it. Sharing can also be inherited from the sharing specified on a containing arrangement.
Therefore, everything in CCF always has the following attributes:
Sharing
Default Permission
List of collaborators
Reference to User or Team
Permission
Publish The act of publishing will:
• Prompt for a list of users or teams to share the published Arrangement with.
• Prompt for a folder location to publish to. The default is the special Presentations folder.
• Make a copy of the Arrangement and all contained Arrangements and Elements in the Arrangement. Comments are not copied.
The present invention contemplates future embodiments which consider publishing with comments as a option, since it is likely that the creator would specifically wish to make comments in effort to communicate to the recipient over and above captions- in order to successfully communicate the presentation.
The structure of a published Arrangement is identical to the original Arrangement, except the tool for the arrangement recognizes that a published Arrangement cannot be modified. Common Tools
A number of common tools is exposed to the end user through their interface. These are:
• Calendar - a simple monthly calendar displaying days and dates, no scheduling. V2
• Search - a search facility that can be used to locate objects is implemented. One embodiment supports simple text matched to specific fields with an implied AND across the fields. Alternative embodiments contemplate the addition of Boolean and other advanced pattern.
• Chat/Instant Messenger - out of band chat/instant messaging is implemented.
• History - object history viewer is implemented so that the user may see a history of updates and may use that history to undo certain updates. The amount of local history depends on parameter settings. Server side history is kept as per the top-level network policy. The user interface may be modeled on Photoshop history as shown below in FIG.l. I • This Histories Palette as defined in Photoshop is shown above for reference by those who are not familiar with Photoshop:
• The History palette lets you jump to any recent state of the image created during the current working session. Each time you apply a change to an image, the new state of that image is added to the palette.
• For example, if you select, paint, and rotate part of an image, each of those states is listed separately in the palette. You can then select any of these states, and the image reverse to how it looked when that change was first applied.
10 You can then work from that state.
• GAN histories operate on GAN specific tools and features modeled on the above structure of Photoshop histories.
GAN Requirements
J5 GAN Functionality based on CCF Abstractions Elements
All of the basic GAN elements are created externally by scanning, digital photography, capture from the web, or by any computer applications such as Photoshop, Illustrator or paint programs the user may have on their own computer. These elements are
20 brought into the system via the Image Importer or by cut/paste or drag/drop from other applications. When the user pastes or drops into the application, the Image Importer prompts the user to select an Element type and the Information Slip is created and attached to them.
Elements are used to represent the following real world things for GAN: Artwork,
25 Color, Sketch, Swatch, Tear Sheet, Trim, and Image/Miscellaneous
Element type image/miscellaneous could be used in multiple ways. For example, it would be an element type chosen by a user who is not ready to define a specific element type for at the time of import. Another example would be that the user imported the image because
30 they liked it, but do not have a specific use in mind at the time and or it represents a landscape, architecture, or any other arbitrary thought process that does not fit the other element types.
35 When the attributes and required behavior in GAN of these real-world things was examined, we noticed that they are mostly identical. They all look, behave and are used in the same way, although Swatch has more in its information slip. Therefore for GAN we build up Images from Elements by adding functionality and attributes, and build up Swatches from Images by adding more attributes.
According to one embodiment of the present invention, files are in .pg or .png format. The system uses .jpg format in the clipboard mechanism.
If a user wishes to use a particular object as a completely separate object, (i.e. change it without changing the original), he/she would duplicate the object and modify it. The result is an additional object, modified as another name.
Elements can be extended in future embodiments of GAN such that they could contain different file types such mpeg or avi video clips and sound files. Video clips can show how garments move when worn and sound clips can add audible narrative to elements and Presentations. Video clips also provide a creative opportunity to share captures of street scenes, fashion shows, fit sessions, etc. One such alternative embodiment adds to the previously discussed seven elements, a Color Chip Images
Images are Elements used to represent the following real world things: Artwork, Color inspiration, Sketch, Swatch, Tear Sheet, Trim and Image/Miscellaneous. Please see the Glossary for a detailed description of these.
In this embodiment of the present invention, image files are either JPEG or PNG formats. Alternative embodiments may incorporate alternative image file formats. The visible information slip displays all meta-data contained in the Image: Image contains
Type - Artwork, Color, Sketch, Swatch, Tear Sheet, Trim and Image/Miscellaneous.
Name - the name of the Element (a text field)
Season
Delivery (text field) Source
Description (variable length text field) Author (automatically filled in with the creator's GAN Name) Date Created (datetimestamp automatically supplied by the system when the Element is created) The principles of the present invention contemplate the utilization of pull-downs and/or spell checks, as well as other user aids for consistency and ease of use, for the several functions including, but specifically not limited to: Season, Delivery, Source, Composition, cuttable width, Country of origin, Mill, care, color(s), price, availability, pattern repeat, other custom items. Swatches
A Swatch is an Element that specifies an image of a fabric sample. The image is typically a color digital photograph or color scan of an actual fabric. The file type and Information Slip for a Swatch Element have all the characteristics of an Image, but include additional information to identify the Mill and physical characteristics of the fabric.
The Swatch Element information slip includes the following additional information: Swatch extends Image contains Style Number Composition Cuttable width Cuttable width units Country of Origin
Mill There are many other potential fields for swatch for an abundance of different potential customers. GAN selectively chose the core basics for VI.0. The description field was intended for both description and also to be used as a container for proprietary information as necessary for each customer to contain additional information about cost, delivery, samples, colors, patterns etc. Example: in a presentation caption of a slide containing a swatch for Liz Claiborne I may quote one price, and for a presentation of the same swatch made for Wal-Mart I may quote another price in the caption. Color Chip
According to one embodiment of the present invention, an enhanced color capability is enabled This is accomplished through the use of color chips. A color chip represents a single color in a color palette. Well-known colors (the Pantone colors) are preloaded and with default permissions set to Viewer. Custom colors will typically be created for color palettes shared across a design team. Image file is empty, therefore the visual representation is derived from the RGB value.
Attributes (Information Slip) RGB
Color name Pantone number Arrangements
GAN has three types of Arrangements. Folios Storyboards Presentations All Arrangements are containers of design elements and other arrangements. Their only purpose is to group collections of objects for better understanding and ease of manipulation. One embodiment of the present invention adds additional Arrangements: Trend Board Color Palette Published Folio Published Storyboard
While the original image files of the basic design elements are created outside of GAN, all of the Arrangements are created inside of GAN and exist only within GAN. Any object (basic design element or Arrangement) may exist in multiple Folders, Folios, Storyboards or Presentations. Folders
In GAN, in addition to the attributes and behavior of folders in CCF, the visible information slip for a Folder contains: Name Season Delivery Source
Description (variable length text field) Author (automatically filled in with the creator's GAN Name) Date Created (datetimestamp automatically supplied by the system when the Element is created.) In GAN the World folder is named GAN. Under GAN are My Company, My Projects and Presentations.
GAN - The topmost folder representing all the users and GAN data in the world. GAN Folder extends Folder contains Season Delivery Source Folio The Folio metaphor is a group of organized stacks of design elements to be reviewed.
An item is in a Folio because it needs to be considered in context with all the other items in the Folio.
A folio organizes its contents as one or more named rows of objects. The Author of the folio specifies the name of each row. A row may contain zero or more Elements, Folios, Storyboards and Presentations with no practical limit on the number.
Rows provide a loose organizational approach to associating design elements but no rigor is applied in controlling what goes in a row. Row names might mirror design elements, ^ for example, swatches, sketches or colors. Row names may collect trends, for example, celebrities at the Oscars, innovative designs or hot textures. The creator of a folio may populate it with, for example, final styles, fabrications or textiles available.
Folios have rows, but no columns. However, the creative team may agree to drag the most interesting objects to the front (leftmost) of the row.
During the creative cycle, the team sharing the folio will add to the objects in rows and may add additional rows. The creative cycle will also result in many objects being discarded and even whole rows may be discarded. Most group folders will start out large,
10 then grow larger, then smaller, then larger eventually to shrink down to a minimum size as the final best choices are determined.
When displayed in the folio, each item shows a thumbnail view, the name, and Highlight Text. Highlight text is free form rich text that is typically used to temporarily highlight an item in a folio, to either draw attention to it, or provide special instructions to the
15 team sharing the folio.
All Folios have a visible Information Slip that describes the folder as a whole. The Information Slip contains the following information: Name 0 Season Delivery Source
Description (variable length text field) 5 Author (automatically filled in with the creator's GAN Name)
Date Created (datetimestamp automatically supplied by the system when the Element is created.) When the user creates a folio a wizard is used to assist the creation. In one embodiment, there are only a small number of fixed choices. However, these choices are changeable and 0 editable. They are:
1. Default (no pre-named rows, the Folio contains one empty Row named "Unnamed")
5 γ 2. Collection (created with 9 empty pre-named rows: theme, tops, bottoms, jackets, sweaters, wovens, knits, color, trends) 3. Concept (created with 8 empty pre-named rows: themes, ideas, trends, runway, patterns, fabrics, yam, silhouettes) Folios contain a variable length list of named variable length rows. Rows are only as long as the number of items in the rows. There can be no empty locations between items. FOLIO contains Name 10 Season
Delivery Source
Description (variable length text field) Author (automatically filled in with the creator's GAN Name)
15 Date Created (datetimestamp automatically supplied by the system when the Element is created.)
List of Rows, where sequence is an attribute, contains Name
20 List of Objects, where sequence is an attribute, contains Reference to object Highlight Text (Rich text formatting) Storyboard 25 The Storyboard is an Arrangement of Image Elements, drawing and text in a collage for the purpose of conveying an idea or to "tell a story." A Storyboard is composed of any number of items displayed on a two dimensional canvas. Elements are seen as their underlying image elements. They can be positioned by using Move and Z-order. They can be sized by using Resize, Crop and Rotate.
30
Storyboards display text as a compositional element of the collage. Text fields are rich text, and contain font, color and highlight information as well as text.
35 A simple drawing tool enables the user add markups to the Storyboard. In one embodiment, a Pencil tool draws a line with a selected color and selected width. Alternative embodiments contemplate the implementation of additional shapes and lines. Additional tools may be implemented in response to user requirements.
Comments can be made against the storyboard. Optionally the comments have Visual Cues placed on the storyboard. For example, a Designer can comment on the entire storyboard and say, "I think this needs more work", and by placing a visual cue on the storyboard by a collar, say, "I like this collar." All storyboards have a visible Information Slip that describes the storyboard as a whole. The Information Slip contains the following information: Name Season Delivery Source
Description (variable length text field) Author (automatically filled in with the creator's GAN Name) Date Created (datetimestamp automatically supplied by the system when the Element is created.)
In one embodiment, the canvas of a storyboard is a 4x3 aspect ratio suitable for displaying full screen or printing on landscape-oriented paper. Zoom and Scroll are required on the Storyboard window to accommodate different size monitors, different size paper and different levels of detail.
Canvas size is a 1.00 x 0.75 floating-point coordinate system where each element is placed on the canvas by its relative floating-point coordinate, and every element is re-sized to a floating-point size relative to the same floating-point size relative to the canvas. The element retains its original pixel size and dpi density, but is scaled on the fly relative to the floating point coordinate system, the Zoom, the size of the space to be rendered in, and the scroll bars. One alternative embodiment contemplates extending the canvas to a virtually expanding lxl space that will fit to the widest points horizontally or vertically and potentially rescale to any arbitrary aspect ration on the fly.
The background color can also be set. One embodiment uses the colors available in JDK1.4 Alternative background colors may, with equal facility, be implemented. STORYBOARD contains Name Season Delivery
Source
Description (variable length text field) Author (automatically filled in with the creator's GAN Name) Date Created (datetimestamp automatically supplied by the system when the Element is created.) Background Color List of Objects, contains
Reference to object
X coordinate (real number, 0.0 to 1.0)
Y coordinate (real number, 0.0 to 0.75)
Z order (front to back) (integer 0 to number of objects in STORYBOARD)
CROP top left bottom right ROTATE degrees
ZOOM ratio
List of Drawing Objects, contains
Type {bitmap, text... etc. Alternative embodiments may add shapes}
X coordinate
Y coordinate
Z order (front to back) (integer 0 to number of objects in STORYBOARD) Bitmap or Rich Text List of Comment Blocks, contains
Name (default is like a footnote... [0], [1], [2], etc ., Alternative embodiments allow the name to be set) ([0] always exists off canvas) X coordinate of Visual Cue Y coordinate
List of Comments, contains Reference to user Timestamp Comment text
Presentation
The Presentation is an Arrangement of Image Elements and text in a slide show for the purpose of informing an audience and gathering feedback. A Presentation is composed of a series of slides where slide order is important. Each slide has an Image Element, Folio or a Storyboard and a rich text block as the caption for the slide or the presentation's verbal communication. Elements and Storyboards are seen as their underlying image elements. Folios are seen scaled to fit as a thumbnail view. Comments can be added to the overall presentation or to each slide with visual cues on each slide.
Presentations can be actively shared during their development or published then shared.
All Presentations have an attached Information Slip that describes the Presentation as a whole. The visible Information Slip contains the following information: Name
Season Delivery Source
Description (variable length text field) Author (automatically filled in with the creator's GAN Name) Date Created (datetimestamp automatically supplied by the system when the Element is created.) SENTATION contains
Name Season Delivery Source
Description (variable length text field) Author (automatically filled in with the creator's GAN Name) Date Created (datetimestamp automatically supplied by the system when the Element is created.)
List of Objects, contains Sequence Number Reference to object CROP top left bottom right ROTATE degrees ZOOM ratio
Caption text (Rich text formatting) List of Comment Blocks, contains
Name (default is like a footnote... [0], [1], [2], etc ..) ([0] always exists off canvas)
X coordinate of Comment Pointer Y coordinate List of Comments, contains
Reference to user Timestamp Comment text List of Comments, contains (For the overall presentation) Reference to user Timestamp Comment text If a user wishes to compare slides, side-by-side, he/she can open them both and size the windows to the available screen real estate. The presentation will scale to fit. Color Palette
One alternative contemplated by the principles of the present invention creates and stores a user defined library of Color Chips. The Color Palette is a container object that includes a generator for Color Chip basic design elements and storage to hold the created palette. The Color Palette Generator includes a color wheel and a Color Sampler Applet. Color objects drag/dropped onto the CSA can be sampled and the sampled colors may be added to the user's Color Palette. Color Chips in the Color Palette items that are drag/dropped from the Color Palette into other Arrangements become individual Color Chip basic design elements. Trend Boards
One alternative of the present invention contemplates the use of trend boards. A Trend Board is a special type of Storyboard which is read only by all GAN users in an organization. Only the Trend Board Administrator may create/write trend boards. An organization may have as many trend boards as they wish or none at all. Users should think of it as a company library of forecasted colors, trends, and basic design Elements. Published Presentation
A Published Presentation has the same attributes and visual behavior as a Presentation. The slides and their content are not modifiable, but comments can be added and viewed. A Published Presentation can be locked so no one can reuse the GAN objects within it.
In one embodiment, there is a Web Site view of published presentations for accessibility by non-GAN users and off-site presentations. The user interface looks and feels similar to the GAN client, except where the technology limitations of HTML require different look and feel. Comments can be added and viewed through the web interface.
In both the HTML and Client view, the Published Presentation can be locked. In GAN this means that GAN Elements cannot be copied from the Presentation. In the HTML view it means right mouse click events are caught to prevent the user from doing a Save Picture As...
PUBLISHED PRESENTATION contains All the attributes of PRESENTATION plus Locked Published Folio, Storyboard, Elements
Additional GAN features, may, with equal facility, be made available in alternative embodiments of the GAN client and Web interface. Collaboration
The GAN environment further assigns end-user roles to specify the application security model as follows: Author, Editor, Reviewer and Viewer. These roles are implemented by mapping to the CCF access control set facilities (Create, Read, Update, and Delete) as follows:
Author has absolute control over all objects that he or she has created. They can add, modify and delete. They control sharing. They can add comments, read all comments and delete comments. An Author has no access to objects that they did not create if no additional access has been granted. An Author is synonymous with Owner access rights.
Editor can add and modify. They can see the presence of the other users who are sharing. They can add comments and read everyone's comments. A user with the
Editor role has View and Update rights, they do not have Create and Delete rights. The Editor has element delete rights, as opposed to the author who has the right to delete the arrangement (or container) of the element and who also controls sharing.
Reviewer can view and add comments. They can see the presence of the other users who are sharing. They can add comments and read everyone's comments.
Viewer can view, add comments, read their own comments, and read the Author's comments. They can only see the presence of the Authors. To accommodate sharing, a number of rules for sharing have been defined for creation and the inheritance of sharing from containing arrangements. Whoever creates something in GAN is automatically called the author of it. The author also controls how it is shared, and initially it is shared only with the author with a default permission of None, which means to inherit permissions from a containing association. The author may choose to share with others without restrictions, or they may place permissions on what may be done. Permissions can be placed by explicitly adding them, or can be implied by creating within a containing arrangement.
Permissions can be set to a default for all users, explicitly set for individual users, or inherited from its container's permissions. A users' permissions are computed by taking the intersection of permissions placed on everything they are contained in, the explicit user permissions and the default permissions.
The purpose of the following scenario is to represent the concept of inheritance. Abe creates a folio named F. The container object that permissions are inherited from is folio F. The Folio contains a storyboard named S. Abe is the author of Folio F and shares Folio F with Bob, as an editor. Abe then shares Storyboard S with Charlie, as a viewer. Charlie can only look at and comment on Storyboard S. Bob can modify both the Folio F and Storyboard S, because Storyboard S is contained within Folio F (the container object). As the author, Abe can do anything he wants to, including sharing the folio F or storyboard S with other people.
Authors, Editors and Reviewers can see each other's presence when sharing (especially important when collaborating with Instant Messaging) as if they were in a room together. Viewers can only see Authors, as if they were having a dialog. Training documentation should warn viewers that if they wish to have a private conversation or comment with the Author, it can be done via notification or instant messaging. Publishing
In one embodiment of the present invention, only Presentations are published in order to make them available for comments from external users via the Web. Alternative embodiments contemplate the ability to publish Folios, Storyboards or any future tools in GAN. A Published Presentation looks the same as a presentation, but should be considered as distinct because they behave differently. A Published Presentation cannot be modified, only commented upon.
The authors can explicitly delete a Shared Presentation or simply remove themselves from sharing the object. When shared to multiple people, if the authors remove themselves from sharing, the presentation continues to exist. The act of users deleting a presentation where they are not the authors, simply removes the user from sharing the published presentation. When the last people remove themselves from the Published Presentation, it is actually deleted. The author may choose to notify other users if they delete a presentation in order to inform other sharers (users) of the action.
The act of publishing a presentation copies the presentation, to the designated folder specified by the user. The act of publishing allows GAN users external to their company to view the presentation and makes the presentation available for non-GAN users on an Internet Web Site URL. If the recipient of the presentation is a GAN member, the recipient can move the presentation once received to any other folder location they choose. If not a GAN member, they do not have the client to perform such function.
An example of the foregoing is where a user receives an attachment in outlook. The user can leave it attached to the mail, or you can save it to another folder.
Although a published presentation cannot be modified, different users will have different permissions. Authors, Editors and Reviewers can read everyone's comments and see each other, like a meeting in a conference room. Viewers can add comments and read their own comments, but can only see the authors, like a face-to-face meeting. CCF USER INTERFACE (UI) DESIGN REQUIREMENTS Main Client Window
The client provides a simple, consistent and common environment to run all tools, communicate with teammates and collaborate. FIG. 2 is a screen shot of an exemplary user interface window (main client window) 100 according to one embodiment of the invention. The main client window is reused for all open occurrences of the client, for all tools and all administrative tasks. FIG. 15 is an exemplary screen flow diagram according to one embodiment of the invention.
Note: The "warning applet window" statement should not be visible to users in the Client, as it communicates a negative connotation and the user is helpless to do anything about it anyway. Navigator Area
A Navigator area 102 uses a structured view of everything using a folder metaphor. The folder View looks like Windows Explorer for ease of training and adoption. However, unlike Windows Explorer, the user sees only what they have created or have been shared with them. It is a hierarchical representation of everything available or of interest to a user.
The hierarchical view should not be confused with where things are actually stored. Folders are a practical way of organizing information, but the shared objects may not "really" be there even though they are completely accessible as if they were there.
Visual cues in the navigator area show the user when new files have been shared or have been updated since they were last viewed. The visual cue in one embodiment is holding for new or updated items. Alternative visual cues may, with equal facility, be implemented.
In one embodiment of CCF there are some special folders in the navigator that may or may not be implemented as real folders. They are:
World
My Company
Everyone My Contacts
Shared Projects
My Projects
Presentations Other Company (To clarify: My company would be e.g. Liz Claiborne; Other Company would be e.g. Anne Klein; therefore Other Company in the context of World would be out dented to the same level as My Company in this example.) World represents the entire CCF network as a top level in the hierarchy.
My Company represents the top level in the hierarchy for a company. A company usually maintains their own security policy and therefore is distinct. If something from another company is shared with a user, a folder at the same level as My Company appears with the other company's name, and the shared object appears as a subf older.
My Projects is the folder where everything that is not shared with anyone other than the current user appears. It is also the default for importing new elements.
Shared projects are a container where everything that is shared with a user by another user, but not explicitly placed in a folder hierarchy by the user "sharer", appears. Authors always are associated with a shared "thing".
For example, a user creates folder called Design meetings Fall 2003, and shares this folder with her team. This folder contains 2 folios and 3 storyboards and is the explicit location of these shared objects, as they reside in the top level hierarchy folder name Design meetings Fall 2003. Upon receipt by the team i.e. notification, the link to this folder is to the shared projects folder of the team members, named Design meetings Fall 2003. Any of the team recipients may take this shared folder from their "shared projects" folder and drop it into any of their specific folders as they choose.
An administrator may create additional folders under My Company, to partition sharing by department for example. All users can create folders under My Projects, Shared Projects and Presentations. These folders appear in another users' navigator if their authors have shared them. After receiving a shared object, that object may be located in the shared projects folder. Any user has the ability to place that shared object in any folder location they choose within their client. This does not conflict the sharing permissions designated by the author. This functionality exists so everybody can organize their things the way they refer to them, not the way the author referred it to them when they shared it.
Everyone is the top level for the creation of all users for a company. Teams may be created within Everyone, and users can become members of those teams. All users may create teams and add users to the team, but only the Administrator can create new users. In keeping with the license agreement, the administrator is authorized to add users to the company up to the maximum limit of the licensing agreement. Only the creator of a team or those designated as Authors can add or remove users from the team.
The Navigator area can be hidden from view. Object Area
An Object Area 104 is where all the tools run, such as GAN tools: Folio, Storyboard and Presentation. People Area A People Area 106 displays a list of users who are sharing the contents of the Object
Area. Visual cues indicate the users sharing permissions.
Visual cues indicate which users are currently on line. Instant messaging is available directly from the People Area when they are online. Menu
A menu 108 of the main client window 100 is similar in style and content as the Microsoft Office suite of applications.
In one embodiment, the top level Menu in the menu bar is:
File Edit View Favorites Tools Help
File New » Window
Folder
«insert new for available tools here»
Contact
User
Team
Open...
Close Share... Notify...
Duplicate.. Publish...
Export...
Import...
Print... Properties.
Connect Disconnect Edit Undo Redo History...
Cut
Copy
Paste
Paste Special. Insert Here...
Delete
Find...
Replace... View
[] Navigator [] Search [] Information Slip [] People
Toolbars »
[] Standard
[] «insert current tool in context name here» [] Drawing [] Favorites
Full Screen Zoom... Favorites Add to Favorites... Organize Favorites...
<Insert Favorites here> Tools Instant Message Notification Search Navigator Quick Image Edit
«insert additional tools here»
Settings... Help Client Help «insert additional help features here» About...
Toolbars
Different toolbar arrangements are supported by the principles of the present invention. Accordmg to one embodiment, there are two tool bars 110, 112 placed side by side. The leftmost toolbar 110 is common to all tools. The rightmost toolbar 112 is specific to the current tool being used.
According to one embodiment, the common toolbar contains:
New » Window (default)
Folder
«Insert new for available tools here»
Contact
User
Team
Share... Notify...
Import...
Print...
Zoom... View Toggles for Navigator, Search, Information Slip, People, Favorites
Add to Favorites...
Connect/Disconnect Toggle
Edit History
Help
Of course, alternative toolbar arrangements, capabilities and multiplicities thereof are all specifically contemplated herein.
Status Bar A status bar 114 reflects the state of the current tool, and the client overall. It appears on every window.
[Tool Status Messages] [Connection State] [Network Status] [New Notification! I I
The status of the client is always be visible via the taskbar. In the case of importing pictures or invoking the print engine, a "wait clock" will appear. Search Area
A search area 116 allows the user to enter a search string which does a simple text search against all objects the user has access to. The pane is kept as small as possible. There is an Advanced... button to open the search tool. Active Favorites
Active Favorites are like favorites in Internet Explorer, with the added feature that when they appear in the Active Favorites area on the clients, they can have objects dropped on them and tool specific actions occur.
Consider for example, a folio Active favorite for a folio named Concept2002. A user can CLICK it, which opens the folio named Concept2002. A user can drag an image to this folio and it will DROP DOWN a list of the row names of the folio, and when the image is dropped, the image is linked as the first item in the row.
Consider for example, an active favorite for a presentation named SpringFascination. A user can CLICK it, which opens the presentation named SpringFascination. A user can drag an image to it and when the image is dropped, the image is linked as the first item in the presentation.
The Favorites bar can have simple "Open this object in a new window" links to objects, saved searches and Active Favorites.
Other examples of Active Favorites include Users and Teams. If an object is dropped onto an Active Favorite User or Team, that is the same as Sharing the object with those users. Dialog Boxes
All dialog boxes have a consistent look and placement of controls. Similar questions are asked in a similar way across dialogs. For example, a confirmation message should NOT say, "OK to close and lose all your changes" in one dialog and "OK to close and save all your changes" in another.
OK, Cancel and Apply buttons are on all dialog boxes where applicable. HELP
As with all workstation applications, there is help available from within the Client. Additionally HELP items can be added, like GAN tutorials, possibly as Presentation Objects in the GAN environment. Tutorials may optionally use the presentation tool to present tutorials to the user.
Additional support via chat/instant messenger may be provided as well as access to an online help text repository i.e. knowledgebase, and FAQ's. The latter can be through the use of a web browser to show the information, possibly from a local cached copy.
Common Functionality for Tools
Drag and Drop general use rules
Drag and Drop is be used extensively in the system.
Drag and drop of an Object (for example, GAN Image, Folder, Folio, Storyboard or Presentation) onto a folder places a reference to that object in the folder.
Drag and drop of a User to an Object (Element or Arrangement) or visa versa opens a Sharing dialog box to walk the user through the process of sharing the object with the user(s).
Drag and drop of an Object to a favorites add that object to the object represented by the favorites. The default position is at the beginning of the object (For example in GAN: first page or presentation, first row of folio, top left corner of storyboard).
Drag and drop also has tool specific instances, which are explained in the tool's functional specification. Example of a tool specific instance: in the event that a user is dragging and dropping an element to a folio row. The tool specific instance is that the system flashes an insert bar cursor, to tell the user where the element will be dropped in the folio row. Context Menu general use rules Context menus are used extensively in the system. Objects may have a context menu associated with them regardless of where they are currently being used.
The specific context menus are described in the user interface section for each tool, as the action logic for the context menu that is shared with the tool.
For objects, the following are in all context menus of one embodiment of the present invention, except where they not applicable: Open
Open in new window... Share...
Notify... Duplicate... Publish... Export... Print... Properties...
Cut
Copy
Paste
Paste Special...
Insert Here...
Delete
View Information Slip Add to Favorites... What is this?
What is this? is a context sensitive link to the help system. Tool Tips General Use Rules
Tool tips are used on all favorites and toolbars. Tool tips are used sparingly in parts of the application where extensive visualization is required. For example, in GAN there should be no tool tips popping up on a storyboard' s canvas, except perhaps when Comment Visual Cues are selected. Visual Cues When Objects Have Been Updated
A visual cue is available in all tools to indicate that a object has been updated since last time it was viewed. For example, the Navigator holds the names of objects that have been updated.
Hover over action general use rules Hover over actions are used sparingly.
In one embodiment, there are not many stated requirements for hover. Tool tips appear with hover. In GAN, during drag and drop over folio favorites, the hover causes the favorites to drop down a list of the row names to appear, and allow the user to drop the element in the desired row. Create New
Whenever Create New is triggered regardless of source, from the menu, context menu, toolbar, or shortcut key, the following dialog box illustrated in FIG.3 appears asking for a name, 120, season 122, and delivery information 124.
The default state is to create the new thing within the current context (if it is supported). Otherwise it is created in My Projects. The Navigator pane looks and behaves the same as the client Navigator Pane. The New Folder button creates a New Folder and requires the user to name it prior to pressing OK. Name is required. Specific meta-data can be requested from the user in the dialog box to be filled in during creation, as in the above GAN example, Season and Delivery. Import
The Import action from a menu or toolbar opens an Import dialog box that allows the user to select a file or directory from the local file system as is illustrated in FIG.4. For each file item selected, Create New dialog box appears with the additional ability to select one of the element types. The default is to create the Element within the current context (arrangement) if one is in use in the current Tool. To make replacing the image inside an Element easier to use, when Import is triggered, and the current context is an Element, and there is only one file being imported, Import directly imports the file and replace the current file of the Element, without altering the information slip. In this case Import Step 2 dialog box does NOT appear.
Import is also be triggered when a file or folder from the file system or applications outside of CCF is drag and dropped anywhere into the Client. For example, drag Windows Explorer or Internet Explorer to the client.
If a bitmap is pasted from outside of the client, the Import attempts to convert it to PNG at a default of 72dpi, and proceed with the import as a PNG file. For example, copy selected bitmap from paint program and paste to the client. IMPORT techniques summary: Menu -> File -> Import... Drag/Drop to GAN client Toolbar Batch
Right mouse click -> Import Export
The export action triggered from any location causes the file of the current element to be saved in the users' local file system. The export option on a menu or toolbar exists when the current context is an Element, and is disabled or not present otherwise.
When export is triggered, a dialog box with access to the local file system appears, and there is an option to change the file name. The default file name is the name of the element with the appropriate file suffix.
In an alternative embodiment, the export of multiple selected Elements, or a selected folder, folio, presentation, or storyboard saves all the images of all the elements into the directory selected by the dialog box. Open With... In an alternative embodiment, the Open With... option may be added to File menu and Context menus. This feature would allow a user to open an Element with a tool associated to that file type in their local computer.
For example, if a Designer noticed one of their elements scanned in a little too green, they could right-mouse click Open With... Photoshop... client would export the image into a temporary file in a temporary directory. The Designer would edit the gamma of the image using Photoshop, and upon saving the Client would automatically import the edited temporary file, replacing the image the Element. Notifications
Notifications allow proactive and automatic notification to activity within the system. Notifications can be manually sent from the client while working on an object. Notifications can also be sent automatically by setting the Notification property of the object. FIG. 5 is an illustration of the main client window displaying notifications.
The visual behavior of Notifications is like an Instant Messaging log. The user can sort by Read/Unread, Sender, TimeStamp or the Object referenced. Notifications can be deleted by the user. The author can delete messages by selecting them, pressing the Delete key or Edit -> Delete or context menu -> Delete.
Notifications contain hyperlinks that, when clicked, open the Object the notification is referring to in a new Client window.
If multiple messages come in from the same user with the same message on the same object (typically the result of multiple auto-notifications, only one version of the notification appear. All identical unread notifications are to be de-duplicated automatically.
The priority on Notification of Low Normal Urgent may be added in one or more alternative embodiments.
Auto Notification options exist for all Objects. The behavior is to send the default notification message to all users who are currently sharing an object when there is a change to that object. FIG. 6 is an illustration of an exemplary screen shot for transmitting a notification. Folder Browser As mentioned in the Navigator Area section 102, a folder view is used as both a user interface convenience and to assist the CCF server technology to decide upon the physical locations used to store Objects. From a user interface point of view, the client will attempt to follow the user interface rules and conventions that Windows Explorer uses to navigate a folder tree. However, the Navigator also allows active Drag and Drop operations within it and between Navigators.
When the Navigator is used in conjunction with the Folder Browser Tool, the look is similar to using Windows Explorer with Folders option turned on in the Explorer Bar. The Windows Explorer "Folders in the Explorer bar" is like the Navigator Area, and the main area of Windows Explorer is like the Folder Browser Tool in the Client Object Area.
The Folder Browser is used primarily to organize Objects into folders. Clicking through the Navigator will open folders in the Folder Browser and show that Folder's contents. Double clicking on a Object in the Folder Browser opens it with the appropriate tool, replacing the Folder Browser in the Object Area. Objects of any type can be moved, shared in multiple folders, created and deleted. Cut / Copy / Paste and Drag / Drop are used for move and share. Cut is used to remove a link to a object from the containing folder. Copy is used to begin sharing the object with another Arrangement. Paste copies the last Cut or Copied link to the object to the target Arrangement. Drag / Drop by default copies a link to the Object to the target Arrangement.
When navigating using the Navigator and Folder Browser, there is always a selected Object. When the Client is first opened, My Projects is selected. By default when clicking through the Navigator it is the Folder whose contents are currently in view in the Folder Browser. When a Object is clicked in the Folder Browser, it is selected. All functions in the menus and toolbars act on the selected Object as a general rule, with a few exceptions. Elements are Imported or Created into the selected folder or Arrangement, except when the selected Object is an Element, in which case the import or create targets the containing folder instead.
The Folder Browser has the following views: Thumbnail - displays the Thumbnail and Name using up all available space in the
Object Area Thumbnails may be scrolled. FIG. 7 is an exemplary illustration of a folder browser thumbnail view.
Detail View - displays the Thumbnail, Information Slip and Sharing Summary one row per Object
In one embodiment of the present invention, the Folder Browser can be sorted by Name and Creation Date. In one alternative embodiment, it can be sorted by any combination of individual Information Slip items and or Sharing criteria, for example, a user wants all images to be ordered by image type, season and date created.
Search reuses the Folder Browser technology within the Client for displaying search results. Search
The search tool is used to search the system for any Object that the user has created or is sharing. It is triggered either through the Search Area or Search Tool.
The Search Area has one free form text field. When triggered the search will pattern match against the description field. A user can also open the Search Tool in the Object Area by pressing the Advanced... button in the Search Area.
The Search Tool presents the user with an intelligent Wizard like search form. Common fields like Name and Description are on top. Specific Information Slip fields are made available based on the Object Type selected, for example, GAN objects have Season and Delivery, and only if Swatch is selected as the Type will a Mill field be an option in the search. The search can also select on users or teams who are sharing the object with the user. In this embodiment, when multiple search fields are filled in, an implied AND across the fields is used by the search engine.
Alternative embodiments of the present invention contemplate the implementation of a sophisticated wizard for selecting search order, information slip fields to display and their order, and and/or logic across fields. Alternative embodiments also contemplate offering sub- searches to narrow down search results. Views of search results are same views available in Folder Browser, and fully support cut / copy / paste and drag / drop.
Searches can be added to Favorites as an effective automated organization tool. For example, a GAN user might save as a favorite the searches of all presentations sent to a specific user, because that user represents their most important customer. Quick Image Editor
Quick Image Editor is the internal, minimalist graphic tool that can perform simple edits on the image stored in an Element. In one embodiment, the Quick Image Editor can crop, resize, scale, rotate, pencil draw on an element's image. It can also edit the Information Slip. This tool actually modifies the image in an Element. It should be noted that different program code may be used within GAN Storyboards and Presentations to resize and crop the appearance of an Element locally in that Arrangement, although there is a similar look and feel. Quick Image Editor quick feature list
Crop, rotate, scale, resize, draw (set pencil width and color), and edit information slip
The principles of the present invention contemplate additional imaging editing functionality including, but specifically not limited to: add text (set font and color), contrast, brightness, select/cut/paste of bitmaps (including those from outside applications) and shape drawing tools may be added.
The Edit Information Slip is accessible and editable. The Quick Image Editor is also able to change the type of object. For example, a Designer might want to change a tear sheet to a color upon further reflection after importing it.
Export opens a dialog box to save the image of the current element to the local file system. Import opens a dialog box to select a local graphics file and replace the image of the Element. Drag and dropping a graphics file from the File System replaces the image of the Element. Pasting a bitmap replaces the image of the Element. Authentication The user interface has a Login/logout prompt, plus the ability to Save Password... for those users who prefer the convenience and trust Windows authentication to protect all the passwords to their applications.
According to one embodiment of the present invention, a user must be authenticated in order to receive and deliver updates to their Client. The user's credentials must be current and their permissions must be appropriate based on the specification of the object author.
Connection with the network first updates credentials and then updates all other shared objects in the background. This allows for administrators to remove users and to disallow a user's pending updates should there be a policy decision that restricts the access of a user. Cases where this is useful include an end-user that was let go and the user has access to network from their home machine. A disgruntled former user might go home, start up their computer and attempt to delete as many shared objects as they can.
Authentication must occur first to "authenticate" that changes can occur and where- then the roles come in to resolve the conflicts that may have occurred User and Contact Management
Both users of the system and external users (Contacts) are maintained in the system as the Element Users.
There are two places that Users can be created. Under the special folder Everyone
(shared as viewer by Everyone in My Company), and the special folder My Contacts (shared as Author by Everyone). Only Administrators can create users and Teams in Everyone.
Authors can create external users (Contacts) and Teams. Administrators can also assign Authors to Teams. Authors can create external users (Contacts) within Teams. Everyone can create Teams and non-GAN users in My Contacts.
All users can see all other users in the company as well as all the company wide teams via the special folder named Everyone. In My Contacts they can only see the external users and teams where they are: the author, members of the Team or shared on the Team's
Arrangement.
External users can only access the system externally from the Web interface, and notifications are sent via email. Alternative embodiments contemplate a provision for accommodating interfaces to external environments on the server. In one embodiment, only outbound email (i.e. sending out email notifications) is supported. Returned email as a result of mail failure will appear as notifications to the originator.
The same tool is used to manipulate all types of users. The user interface contains an Information Pane for the attributes of a user, and depending upon their permissions, the ability to create client or external users and reset passwords.
Users and Teams are like all other Elements and Arrangements. They can be shared, added to Favorites and searched for. Administration
Simple administration of the top-level environment and of special users and objects is provided. The system must allow the administrator to create a top-level environment, to specify meta-data templates for objects that the system is allowed to manipulate and to allow for the import of user and asset data so that the base environment may be populated. There is a requirement to initially define a user base as well as specify (i.e. import) a base set of image data into the system. After creating the top-level environment, and before its use by the users (e.g., when Liz Claiborne decides they want to host their own GAN servers), the system should allow for the testing of the environment and for the re-import of the base data to ensure that the GAN environment is properly populated before use. DESIGN REQUIREMENTS GAN Main Client Window Navigator Area In GAN the World is named GAN, and is presented to the user as:
GAN
My Company Everyone My Contacts Shared Projects My Projects Presentations GAN represents the entire GAN network as a top level in the hierarchy.
Menu
The menu of the GAN client adds: (Bold signifies specific GAN (apparel domain) menu functionality. Non-bold signifies non-GAN specific functionality. File
New » Window
Folder
Folio
Storyboard Presentation
Contact
User
Team Open... Close
Tools Instant Message Notification
Search Navigator Quick Image Edit Folio
Storyboard Presentation Settings...
Help
GAN Help
Tutorials FAQ
Help on the Web
About... Toolbars
In one embodiment, there are two tool bars placed side by side. The leftmost toolbar is common to all tools. The rightmost toolbar is specific to the current tool being used. The common GAN toolbar contains: New »
Window (default)
Folder Folio
Storyboard Presentation
Contact User
Team Share... Notify... Import... Print... Zoom... View Toggles for Navigator, Search, Information Slip, People, Favorites Add to Favorites...
Connect/Disconnect Toggle
Edit History
GAN Help HELP aka GAN assistant.
As with all workstation applications, there is local help available. Additionally tutorials are available as presentations in the GAN environment.
Additional support via chat/instant messenger can be provided as well as access to an online help text repository (i.e. knowledgebase), and FAQ's. The latter can be through the use of a web browser to show the information (possibly from a local cached copy). Create New
Whenever Create New is triggered regardless of source, from the menu, context menu, toolbar, or shortcut key, the dialog box also includes Season and Delivery, as is illustrated in FIG.3.
Name is required. Season and Delivery are not required. Import
For GAN, the Import action supports files or selects an imaging device including TWAIN imaging devices including but not limited to scanners and cameras. For each file item selected, Create New dialog box appears with the additional ability to select an element type; and choose to type in two of the specified properties of the information slip: season 130 and delivery 132 as is illustrated in FIG.4. Notifications
Auto Notification options exist for all GAN Objects. FIG. 8 illustrates a dialog box for setting a notification option. The behavior is to send the default notification message to all users who are currently sharing that object. In one embodiment, the only condition supported is On Changes. For example, by selecting Auto-notify "On Changes" a notification is sent to all users sharing the object whenever that Object is changed. Notifications On Publish Notification options exist for all GAN presentations upon publish. FIG. 9 illustrates an exemplary notification that is to be transmitted to a publish recipient. The behavior is to send a notification to the publish recipients. The notification automatically associates a hyperlink to the published presentation and a free-form text field is available to type a message.
An example of the free-form text in the notification would be: "Hi Anne, Here is our latest collection that I hope you find as fantastic as I do! Please let me know your thoughts and if I can send swatches." A priority system on Notification, for instance comprising: Low, Normal, and Urgent may be implemented in alternative embodiments. Notifications When Sharing
Notification options exist for all GAN objects upon sharing. Upon selecting share recipients, system behavior is to provide an option to send a notification to the share recipients. The notification automatically associates a hyperlink to the shared GAN object, and a free-form text field is available to type a message.
An example of the free-form text in the notification would be: "Hi team, I am sharing my latest folio from our meeting. Comments are welcome." Notifications Stand Alone
Notification options exist in the event that a user wants to send only a text message. The behavior is to send a notification to a recipient with a free-form text field to type a message about an idea, thought or request. The stand-alone notification in GAN is the equivalent to today's standard email.
An example of the free-form text in a notification would be: "Hi team, if anybody has some great shots of our European shopping trip, I could use them!" Search
The current GOM is used as reference for the detailed design of Search. Folio
Folio will be a heavily used tool. Objects can be added to any row in the Folio, and arranged within the row of the folio. Rows can be added, moved and deleted in the folio. The order of the items in a Row can be changed in the folio. The names of rows can be changed.
Comments can be added to the folio. FIG.10 is an illustration of an exemplary folio accordmg to one embodiment of the invention.
When creating a new folio, there is an option to have a default set of named rows created.
1. Default (no pre-named rows, the Folio contains one empty Row named "Unnamed")
2. Collection (created with empty pre-named rows: theme, color, wovens, knits, tops, bottoms, jackets, sweaters)
3. Concept (created with empty pre-named rows: trends, ideas, runway, silhouettes, patterns, fabrics, yarn, ideas)
Rows can be added with a folio tool specific Insert Row menu item and toolbar icon. The new row's name are in focus in edit mode. The row name can be changed later by clicking on the row name to put it in edit mode and make the change.
When viewing a folio, the Zoom control operates on the height of all the rows. The images in the rows can be sized to fit the row height; up to the point where the pixel scaling is 1 to 1 (1:1 or 100%).
Objects can be added to a row in the folio by dragging / dropping, cut / pasting, import action and Insert Here... menu option. According to one embodiment, items in a Row remain where they are placed. There is no concept of an "empty cell" in a Row, therefore when items are dragged to other rows or deleted the space closes up. When working with a folio, there is a cursor. The cursor can be either on the cell holding a object or between cells. Toolbar and Menu items either operate on the object when the cursor is on the object or the folio itself when the cursor is between objects. Information Slip displays information about the object when the cursor is on- the object or about the folio itself when the cursor is between objects.
Import action sets the context to folio and a new element is created. If from the context menu, the newly added element is placed into the folio at the point the context menu was requested. It is directly placed in when between images, or placed before the image γ under the context menu when over an image. Otherwise it is placed as the first image in the first row.
Insert Here... from the context menu brings up a new Navigator window including the search option. The selected item is placed into the folio using the same rules as the import action.
Elements can be moved around the folio by drag/drop or cut/paste. While dragging a visual cue appears (like a cursor) to indicate the position in the folio where the image is dropped. The cursor can be moved to the most recently dropped item. Double clicking object 10 in a folio opens the object in a new window with the appropriate tool. The context menu, when over an object in the folio, operates exclusively on that object. When in-between objects it operates on the Folio itself.
The Active Favorite for a folio drops down a list of row names when hovered over. The list is also active for drag and drop operations, and drops any object into the front of the
15 selected row. For example, consider a folio Active favorite for a folio named Concept2002. A user can CLICK it, which opens the folio named Concept2002. A user can drag an image to it and it will DROP DOWN a list of the row names of the folio, and when the image is dropped, the image is linked as the first item in the row.
20 The information slip on an object can be displayed by: turning on the Information pane for the Folio tool in the client, and using the cursor to select the object to display. The context menu item View Information Slip performs both the actions of turning on the
Information Pane (if not open), positioning to the Information Slip tab (if not in focus) and
25 moving the folio cursor to the point where the context menu was launched.
In an alternative embodiment, when the system is in its "icon" format, as when contained in a folder, a Folio is represented by a Thumbnail automatically derived from the first four images in the Folio and a numeric count of the number of items in the Folio. If objects are dragged onto a Folio icon within a folder, they are placed in the first position of
30 the first Row. Storyboard
35 Storyboard is a collage tool for images. The Storyboard tool can add Elements to the storyboard and place them anywhere on the canvas. The Elements may then be resized, cropped or rotated. Pencil drawings and Text boxes can be added local to the storyboard. FIG. 11 is an illustration of an exemplary usage of the storyboard tool according to one embodiment of the invention.
Storyboards can be commented upon, and visual cues for the comments can be placed on the storyboard to refer to specific items on the storyboard. In one embodiment, the visual cue is an arrow with a number in it. Alternative embodiments may allow the user to specify a label to go with the arrow.
Elements can be added to the canvas by dragging / dropping, cut / pasting, import action and Insert Here... menu option.
Import action sets the context to be the storyboard and a new element is created. If the import action is selected from the context menu, the newly added element is placed into the storyboard at the point the context menu was requested. Otherwise it is placed in the top left comer.
Insert Here... from the context menu brings up a new GAN Navigator window including the search option. The selected item is then placed into the storyboard at the point the context menu was requested.
Drawing is done with the tools in the toolbar, and behaves like most windows simple drawing tools. In one embodiment, the pencil tool has three drawing widths and a fixed color palette of basic colors (for example, red green blue yellow black white). Of course, altemative drawing tools, well known to those having ordinary skill in the art may, with equal facility, be implemented.
The Text tool provides a box of rich text such that font, color and highlights can be selected.
Elements are moved around the canvas by drag/drop, moved forward and backward with the z-order tools (Move Forward, Move Backward, Move to Front, Move to Back) and they can be resized, cropped or rotated in place with the corresponding tools. Note that resize, crop and rotate does not alter the underling element; they merely alter its appearance in the storyboard. In an alternative embodiment, a transparency mask may be added to "cut out" portions of an image to fit in the collage better.
Double clicking an element in a storyboard opens the element in a new GAN window with the Quick Image Editor. The context menu when over an element operates on that element as appropriate. For example, Open in new window opens the Element, whereas Import... opens an import dialog for the Storyboard.
According to one embodiment of the present invention, the canvas of a storyboard is a
4x3 aspect ratio suitable for displaying full screen or printing on landscape-oriented paper. ZOOM and SCROLL BARS are a given in order to accommodate different size monitors and different levels of detail. Of course, alternative aspect ratios, and screen sizes may, with equal facility, be implemented.
In the previously discussed embodiment, the canvas size is 1.00 x 0.75 where each element is placed on the canvas by a floating-point coordinate, and every element is re-sized to a floating-point size relative to the same floating-point size of the canvas. The element retains its originally imported pixel size and dpi density, and is scaled on the fly relative to the floating point coordinate system, the ZOOM, the size of the space to be rendered in, and the scroll bars.
FIG. 12 is an exemplary illustration of a storyboard with Navigator, Search and the Information Slip turned off. Presentation
A Presentation is a structured sequence of images and text. FIG. 13 is an illustration of a presentation slideshow according to one embodiment of the invention. The Presentation tool can add Elements, Folios and Storyboards and make them slides in the presentation. The caption (usually conversational style descriptive text for the slide) can then be added to each slide in a rich text format, specifying font, color and highlights (bold, italic, underline).
Presentations can be commented upon, and visual cues for the comments can be placed to refer to a specific place on a slide. In one embodiment, the visual cue is an arrow with a number in it. One alternative embodiment allows the user to specify a label to go with the arrow. Images, Folios and Storyboards can be added as a slide in the presentation by dragging / dropping, cut / pasting, import action and Insert Here... menu option. Items in a Presentation stay where they are placed. In one embodiment of the present invention, there is no concept of an "empty slide" in a Presentation, therefore when items are moved or deleted the space closes up. The creator of a Presentation can add an Empty Element to reserve space, and then Import the appropriate image into the element later.
When working with a Presentation, there is a cursor that is simultaneously in the image strip and the presentation pane. The cursor can be either on the slide holding an object or between slides. Toolbar and Menu items either operate on the object when the cursor is on the object or the Presentation itself when the cursor is between objects. Information Slip displays information about the object when the cursor is on the object or about the Presentation itself when the cursor is between- objects.
Import action sets the context to the Presentation and a new element is created. If from the context menu, the newly added element is placed into the Presentation at the point the context menu was requested. It is directly placed in when between slides, or placed before the slide under the context menu when over an slide. Otherwise it is be placed as the first slide.
Insert Here... from the context menu brings up a new Navigator window including the search option. The selected item is be placed into the Presentation using the same rules as the import action.
Slides can be moved around the Presentation by drag/drop or cut/paste in either the image strip or presentation pane. While dragging a visual cue appears (like a cursor) to indicate the position in the Presentation where the Slide is to be dropped. The cursor is moved to the most recently dropped Slide. Double clicking object in a Slide opens the object in a new window with the appropriate tool. The context menu when over an object in the Presentation Slide or Folio within a Slide operates exclusively on that object. When in- between objects it operates on the Presentation itself.
The Text tool for the Caption area in the Information Pane provides a box of rich text such that font, color and highlights can be selected. The Image Strip has a special Icon representing the Presentation Arrangement at the beginning and end, essentially framing the Slides in the Presentation.
The Player Control looks like a standard media player, and may optionally include First, Previous, Play, Next (default), Last and Stop, as well as other media player options well known to those having ordinary skill in the art. When a presentation is first opened, the slide area, Player Control, information pane and image strip are open. The Slide area zooms the images to fit the available screen in the slide area. The Information Pane has the caption in focus and is positioned to the Caption for the Presentation Arrangement (much like a cover page for a physical presentation). The Information Slip if selected by the user at this point will also be for the Presentation Arrangement. Pressing Next on the Player Control moved the cursor to the first slide, which updates the Information Pane for the Presentation Slide's first Element. Pressing next positions the cursor to the next slide, which causes the next slide to be positioned in the slide area, and the image strip moves so the current slide is in the middle and highlighted. Stop returns the cursor to just before slide 1 in the Slide Area, returns the cursor to the special Icon representing the Presentation Arrangement at the beginning of the Image Strip, and positions the Information Pane to display the Presentation Arrangement. Play behaves the same as Next.
Zoom can be used to reduce the size of images in the slide area which will make it possible to present multiple slides or a thumbnails view if desired. Zoom may also be used to enlarge slides.
Presentations can be commented upon, and visual cues for the comments can be placed on a slide to refer to a specific point for discussion. FIG. 14 is an exemplary presentation comment view. In one embodiment, the visual cues include an arrow with a number in it. Alternative embodiments may allow the user to specify a label to go with the arrow. Comments are added for each slide, or the presentation overall. The first Comment block is created for the presentation overall. Additional comment blocks with visual cues may be added to the slide in the presentation. Visual cues can be moved later via drag / drop.
The Active Favorite for a Presentation links a pasted or dropped image as a new first slide. For example, consider an active favorite for a presentation named SpringFascination. A user can CLICK it, which opens the presentation named SpringFascination. A user can drag an image to it and when the image is dropped, the image is linked as the first item in the presentation.
Presentations can be published by selecting Publish from the menu or pressing the Publish tool. The act of publishing displays a Publish dialog box that will:
Display a dialog box that allows the user to share the published presentation by selecting from a list of users or teams. A checkbox allows the user to optionally Lock the presentation so no GAN objects can be reused. A business decision should be made regarding whether it is better to have default set to lock or not lock.
Display a Navigator dialog box to select the target folder location for the Published Presentation. The default is the special Presentations folder.
Make a copy of the Arrangement and all contained Arrangements and Elements in the Arrangement. Comments are not copied.
Altemative embodiments may consider publishing with comments as a option, since it is likely that the creator would specifically wish to make comments in effort to communicate to the recipient over and above captions- in order to successfully communicate the presentation. Published Presentation
A Published Presentation has the same attributes and visual behavior as a Presentation. The slides and their content are not modifiable, but comments can be added and viewed. A Published Presentation is a Presentation that has been frozen in time by making a duplicate copy of it. The slides and their content are not modifiable and are not be kept in sync with updates to the original objects. The key functionality for a Published Presentation is to communicate ideas and share comments between the Author and Viewers. A Published Presentation can also be viewed via a Web Browser.
In the client, the Presentation tool is used to display the Published Presentation. Edit functionality is turned off, and visual cues are added to the look so users think they are using a Published Presentation tool. ^ In one embodiment, there is a Web view of Published Presentations for accessibility by non-GAN users and off-site presentations. The user interface looks and feels similar to the client, except where the technology limitations of HTML force a different look and feel. Comments can be added and viewed through the web interface. The Web interface includes a "click here to join the network button" for non-GAN users. The Web interface may optionally also include appropriate marketing/sales enticements.
In both the Web and Client view, the Published Presentation can be locked, which is specified as an attribute of a Published Presentation. In Client this means that Elements 10 cannot be copied from the Presentation. In the Web view it means right mouse click events are caught by JavaScript onmousedown in the HTML code to prevent the user from doing a Save Picture As... in the Web Browser. Further Alternative Embodiments
The requirements of the system point to a number of features that are logical
15 derivatives of current functionality, as well as completely new tools. For example: published folio, published storyboard, trend board, color palettes, and general purpose Wizards. Further additional features include, but are specifically not limited to:
• Web-based Marketing and Sales 0
• Web-based Ordering of new services, additional services, and revised services.
• Web-based Provisioning, Administration, and Installation of new orders and service change orders
• Web-based Training and Support 5 • Web-based Tracking & Reporting of current & historical application usage and accounts receivable.
1. Application Utilization Data (Current & Historical specific usage/utilization information to aid in training, adoption, marketing, additional sales, etc. 0 2. Accounting Data (Current and historical billing data based upon basic & variable services consumed each month.)
• Web-based Billing: Electronic Monthly Invoices for basic and variable services
5 • Web-based General Ledger (On line, secure, tied into up-to-date accounts receivable and payment history)
• Spell check on all text fields
• Meaningful name labels for visual cues on Storyboards and Presentations.
• Tools for circle, oval, rectangle, fill and line in storyboard
• Email integration
• PEV1 integration and synchronization
• Additional meta data (info slip) fields
• Advanced search features, compound conditionals (AND / ORS), soundex, regular expressions or fuzzy matches. Sophisticated wizard for selecting search order, information slip fields to display and their order, and and/or logic across fields. Sub-searches to narrow down search results.
Additional Image file types/formats supported
Additional Wizard Choices added
Advanced calendar scheduling
Aspect ratio
Background color
Non-GAN user functionality
Color Chip
Receive only
Font Attributes
Publish with comments
Additional Specific Fields
Pull downs
Spell Check
Open with
Notification Priority
Trend Board Color Palette
Published Folio
Published Storyboard
Special folders in Navigator that are implemented as real folders
Additional Tutorials
Additional Help Functionality
Context Sensitive link to Help System
Additional Notification Functionality (Conditions supported)
Storyboards allowing labels with arrows
Marketing/Sales Message
ARCHITECTURE INTRODUCTION
The purpose of this section is to detail the architectural elements that will be used to make the functional requirements previously discussed a reality. The specific elements that are detailed are: ARCHITECTURAL PRINCIPLES
In specifying the architecture to be used for the CCF and the GAN-specific components we have followed the following principles. Robustness
The system is designed to be robust and single points of failure have been eliminated from key components. Both the loss of a server or the loss of a network connection (a common occurrence in many locations around the world) will not impact the local client from saving an end-user's work. All data update transactions will be handled using safe writes. That is, incomplete writes, should they occur, will not jeopardize the integrity of the system wide state. A total loss of the client can be recovered from, provided the client had previously delivered its updates to the network. A total loss of the client will however mean a potentially lengthy recovery process to restore the local client data from the central CCF servers. If the client has not delivered its updates then a total recovery of the client will mean ^ a loss of non-delivered updates, however, there is nothing that can be done for this last case. In other words, if a user's laptop is stolen, and the user had not synched up, than any updates that the user had made between the last connection time and the time that the laptop was stolen are lost.
From the server's perspective a non-responsive client is a client that closed the connection. This is treated the same as a client that closed their connection via a request and therefore does not require any special handling. If the client attempts to reconnect then it will need to obtain new credentials. 10 Reliability
The system is designed to be reliable. From an end-user's perspective, the apparent loss of a server or loss of a network connection always appears as a loss of network connection. It is not possible from the client's viewpoint to determine the cause and therefore it must assume that the server is unavailable and that it's network connection will need to be re-established. In the event of a lost network connection the client application continues to allow the user to work without impacting their ability to alter their local state. The client does however make continual periodic attempts to contact the primary server.
The system does not contain a single point of failure other than the network or the Q client itself. The architecture is designed to adapt to network failures and survive client failures.
Scalability
The server side is architected to be scalable in all critical components. Specific 5 architectural scalability designs are discussed in appropriate contexts later in this document, however, a significant design goal is to use end-user clients as much as possible to offload work from the central servers. The central servers themselves are designed to scale by either adding additional Agent-server configurations or by increasing the capacity of the CCF Application Server using a collection of load-balanced application servers. Storage has been partitioned into an object-store and into a meta-data store. The separation allows the use of appropriate hardware technologies to implement the two very different data repositories. Extensibility
5 The system is designed to be extensible. The hardware architecture is extensible by adding additional hardware components or by replacing existing hardware components with those that are more appropriate to handle increased load. The software is designed as a platform with the ability to accept additional drop-in components as they are needed. All new components will use CCF to enable data synchronization and sharing.
Security
System security is maintained by first authenticating the end-user to allow access. In further versions of the system CCF will support encrypted communication between the client and the server, and we will guard against denial of service attacks to the fullest extent reasonably possible with current technology. Upgradable
No architectural choices are contemplated which would preclude known potential upgrades from being implemented. Architectural changes for future embodiments of the present invention (if any) are anticipated to be evolutionary and not revolutionary in nature Distributable
The desired goal of the GAN system is to support a distribution model where the users themselves are in a position to aid the growth of the network by inviting their friends. The architecture supports this activity in two key fundamental ways. First, it will not be difficult to extend the system to add additional interfaces to systems external to GAN, and second, it is easy to extend the hardware platform to accommodate additional user load. The architected platform solution eases, for the end-user, the management of two difficult components to collaborative environments: namely, connectivity and data synchronization. KISS
The final principle in construction of the CCF/GAN Version 1.0 environment is to Keep It Simple Stupid. If we have two options a seemingly difficult one and a simple one, we will always select the simpler option. This lets the users get functionality that works and also allows them to drive the more complex features as later add-ons. Concurrent Updates The foundation of the CCF system is its support for concurrent updates. In CCF all concurrent updates are managed by the system and any conflicts are resolved by transforming conflicting updates into new updates that are known not to conflict. The concurrent update transformation algorithm is the core of the CCF system and is what provides pervasive and uniform update of both objects and their associated meta-data. By building the system around this core capability CCF is able to provide unprecedented data sharing and online user interaction.
Foundational Principles Concurrent updates result in any distributed system where multiple people are allowed to update a single shared object at the same time or at what appears to be logically the same time. Consider two people editing the same document, one is at home working on a section of the document while the other is in an airplane disconnected from the rest of the world but also working on her view of the document. The person on the airplane begins her changes 10 minutes GMT after the person on the ground has completed making all of his changes. Because they have no direct and active communication channel between them (they are refusing to pay the high exorbitant rates of in-seat phones), these two individuals have updated a shared object at different universal times but at what logically appears to be the same time. Both sets of updates were performed without the knowledge of the other set. In any such scenario the two updates are deemed to have occurred at logically the same time.
Concept:
Two updates to the same object that occur without knowledge of the other are deemed to be in conflict with each other and are deemed to have occurred at logically the same time.
The preceding scenario is a real world example of how such a situation may come to pass. Some would say, well that isn't a real-life situation. You can opt to not make updates on the plane, and solving that type of a problem is uninteresting because it represents a small percentage of the population; furthermore, if you have a high-speed network connection, then this doesn't happen. This is very wrong. The fact that you have a high-speed network between you and your coworker does not mitigate the fact that two updates can occur at ^ logically equivalent times. Remember, all that is needed is that one update be applied without the knowledge of the other, and a conflict has occurred. This can occur on a LAN connected workstation that is, for example, slowed down due to heavy disk activity and does not apply the remotely arriving updates in as timely a fashion as it would otherwise.
The fact is, conflicting updates to shared data occur, they occur frequently and any system that provides distributed access to a shared resource must provide a mechanism to handle the conflicts.
According to one embodiment of the invention, a number of techniques may be used 10 for conflict resolution including:
1. Turn taking
2. Lock systems
3. Operation Transform Turn taking systems rely on an external protocol that is used by the participants to
15 decide who is entitled to make updates. In such systems only one individual at any given time is selected to make the updates while the others wait for their turn and optionally observe and comment on the updates as they are being made. For example, this scenario may be used today when a group of people, work collectively to produce an important document. 0 An email is sent to the various authors indicating if another author is making changes that may potentially conflict.
Lock systems rely on the underlying system to provide some form of locking that allows the user currently wishing to update the shared data to make their update while they 5 hold their locks. Anyone else wishing to update the shared object must negotiate for the lock or wait until the lock is free again and then try to re-acquire the lock. Elaborate systems have been designed to manage the acquisition and release of locks. The primary concern of lock systems for solving the collaboration conflict issues is that a holder of a lock may hold it for longer than they need thereby hindering the progress of others. The benefit of lock systems is 0 that it allows end-users a less cumbersome mechanism than turn-taking to acquire the necessary rights to make updates and that updates can be made in parallel to a finer degree of granularity (e.g. I can lock the paragraph rather than the entire document).
5 Operation transform systems rely on the ability of the system to take conflicting update operations and transform them in such a way that the initial conflicts are eliminated and the meaning of the original updates are preserved. The benefit is that no locking is required nor is there any need for an external synchronization protocol as those used in turn- taking. The down side is that updates must be well understood and well-defined in order to be able to define all necessary and sufficient transformation rules. Also, in such a system every source of updates must have its own copy of the shared object so that locally generated updates can be applied immediately, and remotely generated updates can be applied after being received and transformed.
According to one embodiment of the invention, CCF uses a distributed operation transformation system based on a well-formed calculus for concurrent update (CCU). This combination allows, together with an appropriate architecture, for any number of updaters to update a shared object and also allows for them to remain in sync. The CCF architecture is designed such that the handling of conflicting updates generated when a user is connected is identical to the handling of conflicting updates that are generated when the user is disconnected. The connection state of the system is therefore transparent to the user and does, when used properly, allow for a much simpler and natural collaborative experience for the end-user. A person of skill in the art should recognize, however, CCF is not limited to conflict resolution via either the distributed operation transformation system or the CCU methodology. The CCF may utilize other conflict resolution methodologies including but not limited to the one described above. Distributed Operation Transformation
Distributed operation transformation refers to the notion that conflicting updates to a shared object can be applied and resolved at the source of the updates rather than at a centralized server. An approach that uses a centralized server to order and resolve conflicting updates would require all updaters to be connected to the network when generating updates to shared objects. This is an unnecessarily restrictive deployment model and would preclude a use pattern such as the airplane example discussed earlier. Although the CCF architecture utilizes a distributed operation transformation, it is not limited to this methodology and may employ other methodologies that are well known in the art.
Some systems try to avoid this issue by queuing updates and delivering them later once the user is reconnected to the network. They tend to use ad-hoc transformation rules for conflict resolution or they rely on end-user intervention to arbitrate conflicting updates. This is sufficient if the possible update sets are small or if the number of conflicting situations is kept small. However, the maximum parallelism and hence benefit to the user community results when a uniform framework is in place that applies in a consistent fashion to all updates whether they be against the objects themselves or meta-data that describes the objects.
According to one embodiment of the invention, what we want to achieve by distributing the updates to the full set of possible update sources is to allow each source to make forward progress independent of the others. The only requirements for consistency are:
1. That all participants eventually receive every update,
2. That the system of all updates is formally complete and every update has an inverse.
If the system satisfies these constraints then with the appropriate transformation rules it is possible to always transform every received update in such a way that the system will be consistent when every instance of a shared object applies all of the possible updates.
According to one embodiment of the invention, the Calculus for Concurrent Update (CCU) is such a system. A person of skill in the art should recognize, however, that the constraints may also be satisfied by other systems and conflict resolution mechanisms that are well known in the art.
CCU is a set of rules for formally defining transformations and for reasoning about concurrent updates. These are then supplied as data to an algorithm that systematically receives, transforms, logs, applies and distributes updates to all interested participants. Calculus for Concurrent Update (CCU)
What makes the distributed operation transformation solution viable is a consistent method and model for applying updates. According to one embodiment of the invention, CCU is used as such a model. CCU is a calculus that unifies the notions of logical time stamps together with an update history and a well-defined set of transformation rules for applying updates to shared objects. CCU requires that all updates are invertible (undoable). As a result it is possible to apply updates out of order provided they can be transformed against a history indicating the updates that have been applied locally at each shared object instance.
CCU enables, by providing a consistent model for transforming and applying updates out of order, the construction of a system that provides the end-user with the ability to work offline (disconnected use), to make the sharing of objects and their meta-data pervasive, and to allow for a large number of end-users to collaborate on creating information in a natural and seamless fashion.
Consider a pair of concurrent events el and e2, both of which apply updates, denoted by f and g respectively, to an initial value, x, of a shared object. Then, in general, it is necessarily the case that f(x) is valid and g(x) is valid but not necessarily the case that f(g(x)) is valid or that g(f (x)) is valid. At issue is the fact that the application of the first update may invalidate the application of the second (e.g. both f and g delete the same character from x - if x is a text buffer).
Recall, that the goal is to have two instances of our shared object, one applies f, the other g, and then each sends its update to the other. Thus, we need to be able to apply the received update to the local state in such a way that the update is valid and that both of the two instances contain the same value when all updates are applied. We further want to ensure that the update retains, in a semantic sense, its original meaning.
One way to view the problem is to say that when the remote update arrives, then we want to compute a new update that preserves the meaning of the original update but can be applied out of sequence if necessary. The way this is done is to define an operator V which for f/g computes a new update that preserves the semantics of , but adds the knowledge that is to be applied after 'g' has already been applied. CCU then defines a complementary function 'V that means before. Using these two functions the following axioms are defined to hold with CCU: 1. f/g produces a valid function that may be applied in the current shared workspace.
2. f/g (g(x)) preserves the semantic meaning of f(x) but applied after g has been applied to x.
3. g\f (f(x)) = f/g (g(x)).
Using these axioms CCU then defines the relation T(f,g) as follows:
T(f,g) = f/g (g(x)) iff t(g) < t(f) # where t(F) returns the logical time of the operation.
T(f,g) = f\g (g(χ) iff t(f) <= t(g)
T(ul,u2 u3) = T(T(ul,u2), u3)
T(ul u2, u3) = T(ul,u2) T(u2,T(u3,ul))
Where ul, u2, and u3 are sequences of updates. When so defined (and the reasons and analysis are beyond the scope of this document), it is possible to derive the following 2- site concurrency control algorithm:
2-Site Algorithm (at site s, s in {0,1}):
Initialization: let
C <- (0,0) // logical time stamp at s G Gr:Cr
W <- nil // log of local updates at s W" nil
X <- X0 // state of object at s in
Occurrence of Local Event E: while W not nil do find F such that M(F:X) = E let
C[s] <- C[s]+1 W wl W xmit <F:C> to site 1-s G' G
X = F(X) in
W = W,F:C G T(G,wl)
Arrival of remote update <Gr:Cr>: wl' T(wl,G) while W not nil do W" W",wl' let w
W = wl W end in end if time(wl) <t Cr then W W"
W = W' X G(X) end C[l-s] C[l-s]+l end end end
Table 1: 2-Site CCU A Simple Example
It is worth considering a very simple example to show how CCF works in practice. Consider the following scenario. We have a short buffer that contains no information and we have three parties that all insert a letter into the first position of the buffer. Upon making the insertion their local copy of the buffer has the letter inserted, and the operation is then transmitted to the others by using a star topology.
Lets assume that our users are Steven, Ted and Joe. Steven inserts the letter "S", Ted inserts the letter "T", and Joe inserts the letter "J". All of their updates occur at their respective clients and at logically the same time. Recall that this means that each update is performed without the knowledge of any of the other updates having occurred. Thus once the updates have been generated each user's local buffer contains the results of their update.
FIG. 16 A depicts each of their buffer states after each has applied their local update and transmitted their change to the central node of the star. The normal operation of the central node of the star is to wait for input from its client nodes. Thus the central node is activated when the first update transmitted by the three clients arrives. Let's assume that the first update to arrive is from Steven. The update i(S,0)is received by the central node and applied to its then empty buffer and then it is transmitted to each of Ted and Joe. The system state is now that depicted by FIG. 16B.
The update for S is now applied at the central node, and is waiting to be applied by Joe and Ted. Joe and Ted's updates are queued up at the central node, lets assume that Ted's update i(T,0) arrived before Joe's update i(J,0).
FIG. 16C shows the state where things start to get interesting. First, because ordering of updates is defined by their arrival order at the central node) then the update at each of the clients, is deemed to have occurred prior to their locally generated updates and the insert of 'S' is not modified because the locally applied updates do not impact it's meaning and is applied as is resulting in the buffers containing the contents as shown in FIG.21. The central node must apply the update for Ted. However, because Ted's update arrived after Steven's, it is deemed to have occurred after the update for Steven, and must be transformed to become: i(T,l). Thus Ted's update is modified to account for Steven having gotten in there first. Ted's modified update, i(T,l) is then transmitted to Joe and Steven.
FIG. 16D represents the state after Joe and Steven have applied Ted's update and the
Central node has applied and transmitted the final update from Joe. When Joe applies Ted's update the system computes that Ted's update occurred before Joe and therefore gives it precedence and applies it unmodified. When Joe's update is applied at the central node it is first transformed to i(J,l), and then it is transformed to i(J,2). This is because the first update conflicts with Steven's update that is in the central node's log, and then it conflicts with the next update (Ted's) that is also in the central node's log. The result after all updates have arrived and have been applied to their respective buffers is shown in FIG. 16E.
What this example shows is that it is possible to arrive at a state (once all updates have arrived) that can be consistent and still give clients the ability to apply any new updates immediately to their local view. What is not shown in this example is the transformation algorithm, time stamp management, and definitions of update transformations for this example. Those are beyond the scope of this document. However, the general principles are the following: I 1. Always apply a locally produced update to your state, transmit it to your counterpart, and log that you have sent the update.
2. Always take a received update from your counterpart, check to see if there are any entries in the local log that the received update was unaware of, transform the update against them as appropriate, and then apply the transformed update.
3. If you are a central node then treat the result of #2 as a locally generated update for all current connections other than the one from which the update originated and transmit the update to them.
10 4. All updates must conform to the CCU requirements for consistency to be maintained.
According to one embodiment of the invention, if these principles are followed, resolution is pervasive and applicable to all updates in the system. Before that can happen, however, the above theoretical architecture must be mapped to a concrete architecture that
15 provides for the requirements of robust production system that can scale. Topology for Concurrent Update
To succeed and build a successful collaborative framework and environment, it is desirable to also architect the topology of the system. The implications of this architectural 0 choice are large. There are various possible scenarios including peer-to-peer or central server. Peer-to-Peer Topology
FIG. 17 is an illustration of the peer-to-peer topology. It allows for updates to be 5 delivered immediately to all participants and may be a natural choice for a system that provides collaboration between all participants in shared workspace.
In any collaborative system, many-to-many communication is a requirement. All participants in the shared workspace must deliver their generated updates to all other participants. While different scenarios are possible the simplest approach is to broadcast the 0 update to each participant. Broadcast requires that either each participant have an open connection to every other participant, or that all participants are on the same broadcast
5 backbone (eg. MBONE) or that each participant is able to open a connection to any other participant as required.
According to one embodiment of the invention, the topology selected for the system is that of a star (FIG. 18).
The star topology shown in FIG. 18 provides the following benefits:
1. Any number of users (up to available resource constraints) can participate in sharing the objects exposed at the center of the star.
2. Users can come and go without impacting others, as each end-point believes that it is performing conflicting updates only with the center of the star and not with anyone else.
3. Updates are generated at the end-points, transmitted to the central node of the star, applied at the star and then delivered to all other end-points by the central node.
4. History is well defined and maintained by the central node of the star.
5. State reset of a single end-point is accomplished by telling any end-point that the new current state is the last known by the central node.
6. Transformation computation and update application remains simple and efficient since there are only ever two participants in any pair of conflicting update operations.
7. This approach differs from a centralized server that orders all updates by allowing the end-points to apply updates locally first, and to then transmit them to the center of the star. By doing this the end-point client avoids a round trip to the central server before each update can be applied. These benefits and the fact that it is architecturally a very sound implementation strategy makes the star topology the most appropriate topology to select when designing and implementing a system such as CCF and GAN. Architectures for Concurrent Update
The challenge of any theoretical architecture is to take the ideal topology and architecture and convert it to one that can be built, serviced, scaled, and managed. This is no easy task and requires experience in both real-world hardware and distributed computing deployments as well as in the practical aspects of distributed computing, such as TCP/IP behavior, HTTP/S protocols, hardware and software load balancing, hardware and software redundant computing. What is Client/Server Computing
The question to ask is: Is Client/Server computing sufficient and appropriate given the star topology, or do we need something more? If we need something more then what is it and how does it differ from well-understood Client/Server methodologies. First let us consider what Client/Server computing really means. Client/Server computing is the common term used to refer to computer and software architectures that base their behavior on having one or more clients make requests of one or more servers. Each time a client makes a request it anticipates a response (positive or negative) from the server. The client must wait for the response or terminate the request in the event that the network connection is lost. Thus the heart of Client/Server computing is computing based on request/response protocols between clients and servers. Request/Response Protocols for Concurrent Update
A Request/Response based protocol generally requires clients to periodically poll the server to determine if there were any updates that the client needs to respond to. This is significant because it means that if we want our client to appear responsive we must poll often.
An even-based protocol is one where either the client or the server is able to deliver information to the other immediately after the information is generated According to one embodiment of the invention, the system employs an event-based protocol. The challenge in implementing such a protocol is based on the requirement that both ends be able to write to an open connection simultaneously. When this occurs there exists a possibility that the server and client will deadlock each waiting for the other to read their data but not being able to do so because they are both writing. This is less of an issue if the system guarantees that only short packets are sent however even then there is a possibility for the system to deadlock. The reason is that the low level networking layers in most operating systems will buffer only ι a small amount of data to a process that has hold the connection. After that all network I/O to that port is blocked (if using TCP) or lost if (using UDP). For this reason CCF implements a token-passing protocol that works (behind the scenes) as follows:
1. Upon establishment of the connection both ends tell the other end their buffer size. The system then computes the maximum amount of buffered data that can be sent to the other end of the connection before a special token is requested.
2. If you have the token you can write as much data as you need to the 10 connection.
3. If you do not have the token you may write up to the other end's buffer size without having the token, but if you need to write more you must request the token.
4. If a request for the token arrives, you must give it up after completion of the
15 current write.
5. Each written packet delivers to the other end information about the packets that have been read already.
6. The latter part means that for bursts of short packet communication there may 0 not be a need to request the token from the peer.
Thus either end is able to write short packets, and large data blocks (for example images) may be written after the token is obtained. This way the system avoids deadlock at the packet level and we ensure that responsiveness is maintained for the end-user. 5 A Common Collaborative Framework
The objective of CCF is to provide the underlying foundation for a framework that allows the construction of applications that can benefit from a pervasive use of concurrent update with distributed object-state. In order to construct such a framework the appropriate architectural logical model must first be defined. A model that has been constructed before 0 and proven to work is shown in FIG. 19
The logical architecture is divided into two main components, a logical server 300 and a logical client 302. A deployed GAN system would have one logical server and many
35 γ logical clients. A logical client represents either unique users or also the case when one user may be using multiple clients to connect to the CCF environment (for example, a user that has a desktop at home and a laptop that they take to work). Pervasive Concurrent Updates
A meta-data store 304, object store 306 and object agents 306 are used to implement concurrent updates. We say that concurrent updates are pervasive because every object is represented by meta-data and object content and updates to both meta-data and object content are synchronized using CCF according to one embodiment. That is it is not possible in CCF
10 to talk about synchronizing an object's value without also maintaining a synchronized state for the object's meta-data. By unifying the model for what is shared and how information is kept synchronized, CCF removes the need for the end-user to worry about the task of synchronizing their state after they have been disconnected from the network for a period of time. All state, whether it be an image, the information describing an image (e.g. the information slip) or the personal information of other network participants is synchronized and kept up to date using a common set of tools. As such the system is able to maintain a synchronized state in a way that is both natural and transparent to the end-user.
Shared Meta-Data
?0 Every object in CCF has both a value and meta-data. Updates to either the object content or the object meta-data are said to advance the state of an object. Whenever there is an update to the object content that also requires an update to the object's meta-data then both updates are treated as one atomic operation.
25 CCF handles meta-data updates based on the type of meta-data. Meta-data values may be one of three types: a string, a list, or a reference to another meta-data object.
Simple String Value Meta-data
Conflicting updates to meta-data that is stored as simple string values will be resolved using a simple replacement conflict resolution policy. This resolution policy allows for wholesale updates to strings. It is not possible to edit the middle of the string without replacing the entire string. The benefit of this approach is that it is much simpler to implement, efficient to execute and perfectly reasonable for meta-data that tends to be
35 replaced in whole by object update operations. For example, changing the name of an object while exposed to the end-user as an editable field can, once committed, be represented by a full change to the object name string rather than as a sub-string edit operation. Meta-data that is a list of Values
Meta-data whose content is a list of values (eg. Folders) will be resolved using a substring with replacement and move conflict resolution strategy, where the string elements are items in the list. This is a superset of the conflict resolution strategy used in the example previously discussed. The difference with this strategy is that we extend the semantic operations to include replacement and move operations on cells of the lists as 1st order transformation operations. This allows a more natural feel to the conflict resolution from an end-users perspective. The details are beyond the scope of this document, however, the following example should provide additional insight.
Consider two edit operations: a delete of the word fred followed by an insert of the word mary at the same location. The logical result of these two operations is that of replacing the word fred with the word mary. If you however consider that both Ted and Joe want to replace fred by different edits, Ted by dennis and Joe by mary then the result after conflict resolution would be marydennis (or dennismary). Neither of which is likely to be the intended result. If however, we represent word replacement with a single semantic operation then it becomes possible to treat the two conflicting replacements as semantic replacement operations for which an appropriate transformation can be defined that would result with either dennis or mary as the final result. This is more natural and easier to comprehend from an end-users perspective in that one of the updates won out over the other. A similar situation comes to pass when we manipulate lists of entries inside folders. It is for this reason that we choose the more complex model for resolving meta-data list updates. Meta-data Storage Model
Each meta-data element is a key-value pair where the value may be one of three distinct types: String
A string value represents the meta-data value and is the simplest form of metadata.
Reference
A reference to another meta-data entry.
List
A list of meta-data values. For those familiar with lisp, this is exactly the definition of a term and list in lisp. In other words, a meta-data value is either a term or a list of terms, and a term may be a simple value or a reference to another entry. We further associate a type with a value to indicate the type of the top-level term. Using BNF we have:
META-DATA ::= [KEY; VALUE]
KEY ::= string
VALUE ::= [MIME-TYPE; TERM | TERM-LIST]
TERM ::= string | reference
TERM-LIST ::= ( TERM-LIST VALUE )
MIME-TYPE ::= string This allows us to represent complex meta-data values that are also tagged with a mime-type. Mime-types are IETF standardized names for data types. The most visible use of mime types is their use to identify types of attachments for email messages. They are also employed heavily to specify content types in HTTP pages as well as other protocols. The meta-data is designed such that there is a natural and efficient mapping of the above representation to a relational database storage model. This allows the CCF to efficiently manage, store, and retrieve meta-data values both as single values or as sets of values, and to index into lists of values for efficient access. Meta-data External Representation
Whenever there is a need to represent either the complete or partial state of an object the meta-data is exported to an XML encoded document and delivered to its target destination. If an entire object must be exported including it's meta-data, a zip file will be j used. The zip file will contain a compressed version of the object data as well as the object's associated meta-data. The meta-data will be stored in a manifest file called METADATA. This way, a GAN object can be shipped in its entirety to a GAN aware consumer. Export of a GAN object outside of GAN will, depending on the object, strip all or some of an objects meta-data. Shared Objects (elements, arrangements, tools)
Elements are really just a naming metaphor for the association of three components: 1. objects containing data content (bit-bags), 10 2. their associated meta-data, and
3. a tool to view and optionally update the object and it's meta-data.
Since each element is associated with a viewer/update tool (specified using meta-data for the associated object) the CCF end-user application makes the element available by locating the tool, telling it to load the data content, and asking the tool to show itself in the
15 object window of the user interface (refer to Requirements Document for Details). The tool collects end user generated updates and delivers them to CCF for processing. It also receives updates from the network and displays them to the end user.
An arrangement of objects is a content object (possibly just meta-data) that contains 0 references to other objects. The tool for viewing the arrangement is responsible for presenting the meta-data of the objects in the arrangement in the preferred form requested by the end- user.
Objects are shared by having the server component of the architecture expose the 5 object, it's meta-data and associated tools to any number of logical clients. Each client is delivered an initial copy of the object and it's meta-data after which the client uses CCF to ensure that the objects it has access to are maintained in synch with the master copy maintained by the CCF Servers. Logical CCF Architecture 0
The logical architecture defines the major components of the CCF architecture. At the highest level the architecture is divided into a client and a server. Any number of clients may contact a server and ask it to expose objects for them to share.
5 Logical Server
The server 300 is responsible for making instances of objects available for sharing by clients. It uses a number of components to store, expose and manage the interaction of clients and shared objects. The major sever components are the object store 306, meta-data store 300, the object agents 306, the client proxies 308 and greeters 310, and the HTTP front-end interface 312. Once defined these are then mapped to an appropriate hardware configuration so that the resulting architecture is scalable and extensible. We ensure robustness by designing the components to handle network and other component failures. Meta-Data Store
In essence the meta-data store 304 implements a rich index on the data in the object- store. It provides a mechanism to locate objects, to arrange them, and to assign them access rights. As stated earlier the meta-data repository is a key-value pair repository that binds meta-data to the associated objects. The meta-data store is implemented using a relational database. This strategy allows for high availability of the meta-data store while taking advantage of predictable access and storage requirements. This allows for the meta-data store growth to be managed by carefully monitoring database size and the transaction throughput requirements. As the database grows, it is possible to replace or upgrade the meta-data store using well-known and proven relational database technology. Technology that is capable of handling thousands of transactions per second in a secure, reliable, and redundant hardware environment.
The other benefit of this approach is that we are able to leverage the research and development being devoted to making large databases faster and more cost-effective to operate.
The initial approach will be to start out smart by utilizing a mySQL database running on moderately priced Intel based hardware platform for the implementation of the meta-data store. As the GAN environment grows, the use of oracle running on a redundant Sun Solaris hardware platform can be considered. Object Store The primary difference between the object store 306 and the meta-data store 304 is that they have completely different data access requirements and therefore we must tune them differently. The meta-data store is expected to need to service many small queries and updates in a short period of time (milliseconds), while the object store will be expected to fetch and store large blocks of data in timeframes that are on the order of minutes. Thus the meta-data store is an appropriate candidate for implementation using a SQL database, but the object store is not. This is because SQL databases are not particularly good at storing BLOB's (binary large objects) and in fact rarely produce acceptable performance moving BLOB's in and out of the database. Furthermore, storing BLOB's in a database precludes the ability to update portions of the BLOB in place. You must read the BLOB, compute the new BLOB, and write the BLOB back in its entirety.
For these reasons, and because the object store contains the content of all objects, we have chosen to implement the store using a variable sized object store running on top of an efficient journaled file-system (reiserfs). This way, object data is available for direct random access and we can take advantage of the best in file-system design. Recall, that file-systems are optimized to store many objects of differing sizes. Care will be taken to limit the number of entries per directory (use qmail mbox strategy).
The object store will be extensible because the object store manager will add new storage by simply making additional network storage available and giving the object manager a new file space to manage. Thus, as file system storage needs grow, a tried-and-true technology will be used to increase the amount of storage that is managed by the object store. This same technology is used today to store and make available terabytes worth of email data at some of the large email providers such as Yahoo and Hotmail.
The object store contains the content of all objects along with their update history. It is indexed by meta-data. Thus, the only way to locate an object in the object store is to lookup it's object-store key in it's meta-data and use the key to locate the object data in the object store.
At the time that it is created, every object in the object store is assigned a globally unique identifier (GUID). The GUID's are unique and are never reused. Thus every object in the object store has a unique handle that can be used to locate the object. We will use the GUID's from the namespace as defined and registered by Microsoft.
Access to object instances in the object store is not shared. Object instances are owned by object-agents. All access to an object must therefore pass through an object-agent. Object Agents
An object agent 306 is responsible for instantiating an object and making the object data and its meta-data available to one or more clients. Clients share an object by sharing access to its object agent. The object is then said to be instantiated by the object agent. Recall that it is the role of the object agent to resolve all conflicting updates to an object and it's meta-data.
An object agent therefore functions as the owner of the object instance. An object- agent is created when the first client that wishes to access the object is validated and granted access. The object-agent itself is then instantiated if no prior instance exists, and the agent is asked to create an instance of the object.
Object agents own the object instance. Because of this owner-ship, they also implicitly own the object meta-data. Since this is the case, it is therefore necessarily true that an object agent will access meta-data for an object it does not own. Client Proxy
It is the goal of this architecture to ensure that the construction and deployment of object agents is as simple as possible. For this reason the object agent is designed to communicate directly with only the meta-data store, the object-store and a Client Proxy 308. The Proxy process is responsible for accepting connections from clients, validating their credentials, possibly encrypting communications with clients, and multi-plexing the access of multiple clients down a single dedicated connection to the object agent.
The Client Proxy is in fact responsible for creating instances of object agents as clients arrive, and for terminating object-agent instances as clients depart. The purpose of the Proxy is therefore to manage the difficult task of multi-plexing communication between object-agents and the many clients wishing to access any single object agent and to encapsulate the authentication and privacy functions of the communication protocol. ι By using a proxy we enable an object-agent to represent one object type and to have a simple communication interface. The objective being to ensure that the creation of object agents is simple and efficient both from an implementation perspective as well as from an efficiency perspective.
The client proxy is, however, not responsible for authenticating users and for assigning CCF protocol credentials to clients. This task is left to the Client Greet service. The reasons for this, design choice are the following:
1. Client Proxy/Client Agent combinations are designed to be scaled linearly 10 based on the actual load impact of object-agent activity.
2. There is no provision in the Client Proxy to load-balance requests to proxies, in fact, the opposite is true. Once assigned to a proxy a client/object-agent will stay with that proxy. This is because it would be inefficient to load- balance proxy requests dynamically only to require each proxy to have to open
15 local connections to object-agents that it needs to proxy traffic to.
3. Object agents would then need to handle traffic from multiple proxies thereby increasing the complexity of the network interface of the object agent and also denying the option of an implementation optimization that would allow local 0 pipes or unix domain sockets to be used for communication between the object agent and the proxy.
4. Every client proxy would have to maintain the list of credentials that are valid. This is difficult to implement and would make maintenance activities much 5 more difficult to accomplish.
Thus the clear benefits of the "proxy owns the object-agent" design allow us great scalability, and robustness while also maintaining the ability to load balance client authentication requests as they arrive using a Client Greet service. Client Greeter 0
The purpose of the client greet 310 service is to receive requests from clients, validate their authentication credentials and then assign them new credentials that are shared only
5 between the client and the client-proxy to which the client has been redirected. The client is then able to contact the client proxy directly and use the provided credentials to gain access. The client greet service is implemented using the application server and thus can itself be robust and load balanced across a series of application servers. HTTP Front -End
The HTTP front-end 312 is the logical component that provides the WWW view of the GAN repository. It provides administrative functions as well as, public WWW functions, client download, and presentation access. It is implemented using the application servers that are used to implement the client greet service.
Logical Client
The logical client 302 implements the client-side view of the GAN network. It is structured in a similar fashion to the logical server components, however, the client is not decomposed to ensure that high-availability implementation architecture can be used. This is because high-availability for the client is not necessary.
Meta-Data Store
The client-side meta-data store 314 stores all client-side meta-data for the objects that the client is entitled to interact with and which have been replicated to the client's machine. For version 1.0 meta-data store is built using a Berkeley DB database.
Object Store
The client-side object store 316 is the client-side database that maintains a file system cache of the objects the client is entitled to interact with and that have been replicated to the client's machine. The object-store is implemented on top of the client native file system using (qmail style directory and file association strategies) with safe writes to ensure that updates are properly committed.
Client Proxy
The purpose of the client-proxy 318 is to do for the client what the server-side client proxy does for the server. The proxy is responsible for initiating connections to remote server greeters, and server client-proxies and to manage the flow of packets between servers and clients. The proxy is also responsible for making the connection state of the network transparent to the GUI client application. Client Object Agents
Client object agents 320 implement the client side version of CCU. The function of the object-agents, is to instantiate - as part of the client-side the data-model, the object state and apply both locally generated and remotely received updates to the object state. Object- agents receive the object specific definitions of the CCU transformation algorithms from the client-proxy only after the object that they represent is opened for use by the client. Object agents are implemented as Java components running within the GUI client. This way they are close to the source of update events and have full access to the end-user view of the interface. GUI Client
The GUI client 322 owns the interface with the end-user. The client presents the windows that define the CCF/GAN user interface and allows the user to interact with displayed components. The specifics of the interface design are defined in the GAN Functional Requirements Document. See that document to understand details of the GUI client operations. For a discussion of the client implementation see GUI Client Component Map in this document. Sessions
A user-client connects to the CCF server by first authenticating itself, establishing credentials, and then opening a client session with one or more client proxies. The collection of connections to client proxies is the client session. It lasts as long as the client is connected to at least one client proxy. The client proxy provides all of the necessary server side state to instantiate its portion of a client session. This state consists of connection and pipeline information, and information about the object agents that the proxy is exposing to the client. Sessions are dynamic and represent the sum of the activity being performed by a client. They are stateless and are created and tom-down as the clients come and go. Session Open j When a client is started the client attempts to connect to the CCF/GAN server that it is associated with provided the default connection state of the client has not been set to disconnect. The connection is made as follows:
1. An SSL session is established with the client-greeter.
2. Credentials are exchanged and the client requests a set of one or more objects to access.
3. The greeter notifies appropriate agent proxies of the new client's credentials and notifies the client of which client proxies it should contact.
10 4. The client then establishes SSL sessions with the specified client proxies and provides it's credentials.
5. Once authenticated with a proxy, the proxy then validates access rights.
6. If access rights are valid the proxy instantiates object agents on behalf of the client.
15
The client then proceeds to sync its object state via its local proxy and the associated remote server based proxies that it was assigned to. Session Close
A client is deemed to have closed the session if the connection is closed and the client 0 does not re-establish the connection within a 1 -minute timeout window (configurable). If the timeout expires, the proxy invalidates the credentials and if appropriate shuts down any associated object agents. If the client attempts to reconnect after the grace period has expired then the client will be told by the proxy that its credentials are no longer valid. At this point 5 the client may choose to give up or to obtain new-credentials by contacting the client greeter service. Client Termination
Client termination is, in essence, a requested disconnect. The only difference between a requested session close and the above is that there is no possibility of reconnecting without 0 first obtaining new credentials if the client requested termination. Client termination would be used if there is a need to discontinue communication with a specific client, or if there is an immediate server shutdown occurring and the server wishes to notify clients but cannot
5 j afford to wait for the grace period to expire on the server-side proxies. Termination is used when the proxy is about to immediately exit or if the client has invalid credentials. Session Heart-Beat
A client session is kept alive by periodically and automatically sending a ping request down the connection. Once received the proxy at the other end must respond to the ping request with a ping of it's own. In this way both ends will have heard from one another and the connection is known to still be good. No useful information other than the fact that the ping was heard is delivered using the ping message packet. 10 Client Communication Protocol
The clients communicate with the server using TCP. UDP is not used because guaranteed packet delivery is required. If appropriate and allowed SSL may be used to further encrypt the client/server connection. CCF Protocol
15
The CCF protocol is layered on top of the client/proxy connection protocol and represents the high-level communication protocol between the clients and the central server. The protocol is broken down into transport, token-passing, update payload, and binary object synchronization. Where the latter protocol layers run on top of the transport layer. 0 CCF Transport (DDTP)
This is the protocol layer that is responsible for delivering all traffic between the client and server and is the same whether the client or server generates the request. For simplicity of implementation the CCF Transport layer is based on HTTP/1.1 as defined by 5 RFC2616.
One embodiment of the present invention utilizes the following subset of RFC2616:
1. Section 4, HTTP Message
2. Portions of Section 5, HTTP Request
3. Portions of Section 6, HTTP Response 0
4. Portions of Section 7, HTTP Entity Dynamic Data Transport Protocol (DDTP) differs from HTTP in the following:
1. Only GET and OPTIONS methods elicit a Response message from the server.
5 I 2. The PUT method is used to send an update.
3. The POST, DELETE, and TRACE methods are not implemented
4. The CONNECT method is not used as all connections are automatically persistent.
5. Entity content is used as defined below.
Much good work has been done on the HTTP/1.1 specification and there is no reason to replicate most of it again. Our strategy is therefore to use a subset of the HTTP/1.1 protocol as appropriate to CCF. 10 The CCF servers will listen for requests on ports 80 and 443. By doing so they will be able to respond to standard requests and will also be able to use the inherent features of these protocols to service non CCF attempts to connect to the servers.
The client proxy is used only to initiate connections. As such it is not able to receive requests from any other source other than the CCF server(s) to which it is maintaining an
15 active connection. Token-Passing Protocol
The token passing protocol is used to ensure that deadlock over an open connection between two proxies is avoided (note it cannot be prevented). The strategy is as follows. 0 Upon establishing a connection the two proxies provide the other end of the connection information about the size of their local network buffers. The proxies then use the buffer-size information to establish, at both ends of the connection, the following protocol (assume that at our end the buffer size is defined by k): 5 1 Compute the size of the "send token message", and let it be given by s.
2 Compute remote buffer size as b = k-s. 3 If need to send data whose length is < b then just transmit. 4 If need to send data whose length is >= b then request the token 5 When token arrives send your data greater than b. 0
If a request for the token arrives, pass it to the peer at the other end of the connection.
5 Thus, the rules are simple, if you do not have the token but you need to send more than b bytes of information to the peer, then you must first request the token. When it arrives then you may transmit your data. If you receive a request for the token you must give it up immediately after completing any active transmit of update data. In this way neither end will be caught writing a large block of data that the other end is not guaranteed to consume, thereby avoiding the deadlock. Entity Content
Entity content is the payload of all messages. See the HTTP/1.1 specification for further details and nomenclature regarding HTTP/1.1. We use the Entity Content specification from HTTP/1.1 in it's entirety for delivering update content between the client and the server. We include the full specification in Section 4.8.3.1 for reference, however, please refer to HTTP/1.1 for a complete contextual reference on Entities. Entity
Request and Response messages MAY transfer an entity if not otherwise restricted by the request method or response status code. An entity consists of entity-header fields and an entity-body, although some responses will only include the entity-headers.
In this section, both sender and recipient refer to either the client or the server, depending on who sends and who receives the entity. Entity Header Fields
Entity-header fields define metainformation about the entity-body or, if no body is present, about the resource identified by the request. Some of this metainformation is OPTIONAL; some might be REQUIRED by portions of this specification. entity-header = Allow ; HTTP/1.1 Section 14.7
Content-Encoding ; HTTP/1.1 Section 14.11
Content-Language ; HTTP/1.1 Section 14.12
Content-Length ; HTTP/1.1 Section 14.13
Content-Location ; HTTP/1.1 Section 14.14
Content-MD5 ; HTTP/1.1 Section 14.15
Content-Range ; HTTP/1.1 Section 14.16 I Content-Type ; HTTP/1.1 Section 14.17
I Expires ; HTTP/1.1 Section 14.21
I Last-Modified ; HTTP/1.1 Section 14.29
I extension-header extension-header = message-header The extension-header mechanism allows additional entity-header fields to be defined without changing the protocol, but these fields cannot be assumed to be recognizable by the recipient. Unrecognized header fields SHOULD be ignored by the recipient and MUST be forwarded by transparent proxies . Entity Body
The entity-body (if any) sent with an HTTP request or response is in a format and encoding defined by the entity-header fields. entity-body = *OCTET An entity-body is only present in a message when a message-body is present, as described in section 4.3. The entity-body is obtained from the message-body by decoding any Transfer-Encoding that might have been applied to ensure safe and proper transfer of the message. Content Type
When an entity-body is included with a message, the data type of that body is determined via the header fields Content-Type and Content-Encoding. These define a two- layer, ordered encoding model: entity-body := Content-Encoding( Content-Type( data ) )
Content-Type specifies the media type of the underlying data. Content-Encoding may be used to indicate any additional content codings applied to the data, usually for the purpose of data compression, that are a property of the requested resource. There is no default encoding.
Any HTTP/1.1 message containing an entity-body SHOULD include a Content-Type header field defining the media type of that body. If and only if the media type is not given by a Content-Type field, the recipient MAY attempt to guess the media type via inspection of its content and/or the name extension(s) of the URI used to identify the resource. If the media type remains unknown, the recipient SHOULD treat it as type "application/octet-stream". Entity Length
The entity-length of a message is the length of the message-body before any transfer- codings have been applied. Section 4.4 of the HTTP/1.1 specification defines how the transfer-length of a message-body is determined. Binary Object Synchronization
Binary objects (such as images) that need to be synchronized after update will be updated using a full replacement strategy that will rely on two distinct components.
1. The use of the HTTP/1.1 Content-Range header for specifying where in the full entity body the partial entity fragment being sent should be applied.
2. The use of rsync (http://samba.anu.edu.au/rsvnc) to compute the list of binary file differences and what the modification set should be.
Encryption
Encryption is useful at two levels in the CCF protocol. We can apply encryption to the protocol itself (e.g. SSL) so that authentication data and credentials are not exchanged in the clear, and at the entity or payload level.
For simplicity, in one embodiment of the present invention, the CCF framework will use no encryption, but all of the necessary machinery is in place both at the protocol layers and at the architectural level to support full SSL protocol and entity encryption. Search Search is an important function of the system. Each client is able to search the sum of the information that is visible to it. Because we wish to provide offline search facilities and because the distributed update algorithms require local state to be replicated at every client, then the implementation of search will offload the query for the objects to the local client. Thus the operation of search will not be a load on the system and is an operation for which the end-user's response should be commensurate with the speed of their local client.
The local client proxy is responsible for performing all searches of the content that is visible to a local client. The proxy is tasked with performing search operations and for returning result sets because it leaves open the possibility that the search operation can at a later time be extended to search other databases without having to alter the client in any way.
Search results are returned as Entity content to the client and are encoded using XML. It is the client's responsibility to display the content using an appropriate format based on the XML content to the end-user. It is the intent that display of the content will be as simple as specifying an appropriate XSL style sheet. Client Management
Client management refers to the need to support the initialization and signup of new clients, the replacement of defective client state, the use of multiple accounts by clients, and the termination of client access. No practical system is useful without these. New Client Initialization
When a user installs the client software for the first time they will need to connect and initialize their session with the CCF servers. The connection is initiated by having the user supply connection information as a set of properties (either on the command line or through appropriate configuration panels) after which the GUI Client requests the proxy to make the connection and attempt authentication. If authentication succeeds the client is synced up with the initial default state of new clients.
Replacing Defective Client State
As a practical matter it must be possible to save the local client state and to restore the local client state from backup and then have that client state be synchronized with the actual forward state as stored on the central server. Thus, client-state may be reset by the client requesting and the server-proxy delivering the complete state of an object or by having the client report an older state and having the client-proxy deliver all of the updates to the client-state that have occurred since the last known good client state. If there is insufficient history to enable an incremental update, then the server-proxy will deliver a replacement state to the client that corresponds to the current most recent state of the object.
This is how clients receiving new objects will initialize their object state. It is also useful for clients that do not connect for long periods of time and require a full and complete refresh of their client state, or as indicated earlier, for clients that for whatever reason lose their local copy of their client state and need a full state restore from backup media. Multiple Clients/Account
It is both desirable and useful to support multiple client computers per single authenticated account. This is because one of the key uses of the CCF system is to keep multiple computers (e.g. desktop and laptop) synchronized and to do so even when unattended.
This is handled by assigning to each client a unique Client-ID. Client-ID' s are associated with accounts and it is possible to associate multiple client-ID 's with one account. All clients that are associated with the single account are treated as multiple views of the resources assigned to the owning account. Thus, it is not possible to have multiple clients with different information or access rights under the same account. Client Termination
Client termination is a mechanism through which the system administrator may indicate that one or more of an account's clients may no longer connect to the system. This is used for terminating access for abusers of the system or for disallowing access to end-users that no longer have authorization (e.g. they have been terminated).
When all clients for a given account are terminated then the account is said to be dormant and administrative action will need to be taken to either remove or archive the account or to re-grant access rights and allow another user to either inherit the account's resources or to re-establish the original or a new user to access the accounts resources. CCF Server Architecture Hardware Map
The logical architecture must be mapped to a physical architecture that implements the logical components. The most difficult and challenging portion of this mapping is the server. On the server we must provide efficient operation in a scalable and robust environment. FIG. 20 shows an exemplary CCF server architecture components as they are mapped to concrete elements.
In looking at FIG. 20, one of the simplest ways to understand what it shows is to imagine a single physical server representing each of the CCF Application Server 400, the Y CCF Agent Pool 402, the Meta-data Store 404, and the Object Store 406. This however, would not provide for redundancy and we therefore elaborate further below. It is however, useful to note that all four components can be implemented as logical components within a single physical server machine. This alternate architecture is useful as it further supports software development because each developer may then run an instance of the environment and therefore not interfere with other developers. CCF Application Server
The implementation of the CCF application server 400 is generally a critical function.
10 It serves a dual role, first it authenticates clients and assigns them credentials, and second it provides the outward (WWW) facing view of the GAN/CCF environment. This is how new users download the GAN client and this is how external GAN network users access externally shared environments such as presentations. For these reasons, in one embodiment of the present invention, the CCF Application server will be implemented as a full-featured stateless application server. Use of a commercial grade application server here allows the server to be fully scaled and load balanced as GAN's needs will dictate. Technologies for load balancing across a set of servers are readily available and can be obtained from various commercial suppliers (e.g. F5 Networks or Cisco). The application server will also provide 0 the WWW based internal interface for reporting, administration and activity monitoring.
CCF Proxy and Agent Pools
The CCF Agent Pool 402 should be viewed as a stack of servers. The first server . provides the CCF Agent Proxy service, while other servers in the stack are managed by the 5 Proxy and are used to instantiate object agents. The particular view of this solution allows us to grow the capacity as needs require both by adding agent servers to the stack and by replicating stacks and making them available for use by the agent greet service as proxy servers for clients. To make sure we can take advantage of commodity component pricing, these components are expected to be Intel based off-the-shelf servers without special redundancy hardware as they store no state and are responsible only for managing meta-data and object store updates. Object Store
5 The object store 406 is a repository for storing objects that are collections of files
(content and history). In order to efficiently store an object and it's history, the object data and history are compressed into a .zip file archive. The file will be stored on a network attached storage device that has redundant power and disk. This will initially be a server that has redundant power, CPU's and software or hardware raid. As the system grows and revenue permits this would be migrated to a network attached storage farm such as an EMC based storage array. Meta-Data Store The Meta-data store 404 will endure the greatest transaction hits and will require a full transaction history to maintain consistency. It is also responsible for maintaining a large amount of fixed sized data with relationships. This is an ideal job for a relational database. The obvious choice here initially is mySQL, and as the system grows and revenue allows the meta-data store will be migrated to a fully redundant relational database installation based on a Sun-cluster and Oracle database.
FIG. 21 shows the top-level design for the GUI client component map according to one embodiment of the invention. The client is basically designed out of the top-level components shown in the diagram. Note that these are not components in the sense of object- oriented design, but rather in the sense of program decomposition and structuring.
The purpose of each component is detailed below, however, it should be noted that the object-oriented decomposition of class components will closely mirror the discussion here. For each of the components defined here, the class structure will provide a full object- hierarchy with appropriate interfaces to allow cross-component communication as indicated by the arrows. Dashed arrows in the FIG. 21 indicate change event propagation from the data model back to the view. Such propagations bypass the client controller because their sole purpose is to indicate to the view that it should update a possibly visible component. Thus, the standard Java property change listener model is appropriate for this type of callback. Client Controller The client controller 500 component is the main thread in the GUI client according to one embodiment of the invention. It starts up, parses arguments, and configures and reads property settings. The thread then creates the core GUI objects. The Startup sequence is as follows:
The main thread first creates the EventQueue object 502 and makes certain that it ready. to accept events. The main thread then creates the NiewController object 504. As part of its creation the NiewController object enqueues a request to create a ViewManager instance 506. The main thread then goes on to create the ActivityLogManager 508, the ModelManager 510, and the ProxyManager 512 in that order, but not necessary so. Each of these initializes its state and in the case of the ModelManager creates both MetaDataCacheManager 514 and ObjectStoreManager 516 object instances. The ProxyManager creates two threads that are responsible for flow of information through the ProxyManager; one for input and the other for output. The ProxyManager then creates an instance of a proxy process and waits for requests to do work. The main thread then invokes the handleEvents method of the EventQueue which begins the processing of events in the system. Note that one of the first events on the queue is to create a ViewManager 518. This first ViewManager is the user interface frame that the application displays. The main thread returns from handleEvents only if the application has been asked to terminate. Upon exit, the main thread then asks the ModelManager, ActivityLogManager, and ProxyManager to terminate. It does not worry about the ViewManager' s as these have already been asked to terminate by the ViewController. This forces a clean shutdown of the system. View Controller
The view controller owns all view managers. The purpose of the view controller is to handle external requests for control over the views. For example if an event is posted to create or remove a view the view controller handles this fact because it owns the top level objects that contain each view. Event Queue The event queue manages the flow of events through the GUI client. It accepts events for processing on the event queue and invokes appropriate methods in the appropriate manager to execute the event. It is also optionally responsible for logging the events to the activity log manager. The purpose of the activity log manager is to make it much easier to debug the GUI client. Every external and internal event runs through the event queue and as such its presence can be logged to the activity log manager. As a result the content and sequence of events processed is logged and therefore allows us to view the content of the log and to deduce what is wrong. This is the only reasonable method to ensure sufficient view into the application so that it is possible to quickly isolate problems and fix them. Other methods would produce non-deterministic behavior in the log and would be difficult to replicate.
At an appropriate time (i.e. once the application is stable) we plan to split the event queue into two queues. One for internally generated events, and another for externally generated events. This will provide more parallelism and better user-interface response for end-users. This is a VI client feature but will be present in later versions of the client.
The event queue decides based on the event whether or not the event is targeted for the model manager, view manager, or command manager for handling.
View Manager
The view manager is responsible for opening a native GUI window and painting the user interface on the screen. It is then responsible for registering property change listeners in appropriate data-model objects so that it can be responsive to model changes and repaint the view should the data-model change in any significant way.
Each view manager owns the physical frame on the screen and any associated pop- ups. Multiple view managers are allowed as this is the way to create multiple-frames on the screen each of which updates appropriately when the data model is altered, and each of which can be a source of events which can cause the data model to be altered.
Model Manager
The model manager is responsible for managing the entire state of the GUI client by interacting with the meta-data cache and the object store. The model manager waits for requests from the event queue and acts on those events. When an event causes the data- model to be changed the change is either local or remote in origin. Regardless of the origin the change causes appropriate property change listeners to fire which cause appropriate view managers to update their views. The model also interacts with the meta-data cache and the object-store to update the local on-disk copy of the object to ensure that the local state is current and persists.
Both remote and local changes run through the CCF transformation system to either transform or log the update. Local updates are applied, logged and then transmitted to the remote client by posting an appropriate event in the event queue. Remote changes are transformed and applied to the data-model. Remote changes cause no model-update related events to be posted.
The model manager is also responsible for serializing updates to the data model. Only one update whether local or remote may be in progress at any given point in time on a data-model object managed by the model-manager. Thus in effect enforcing atomicity of updates at the object level.
Furthermore the model manager provides an interface whereby the view manager may invoke updateProperty methods on the managed objects. These methods provide the view manager with an encapsulated update in the form of an update object which it can then hand over to the view controller for further processing. Command Manager
The purpose of the command manager is to handle non-update specific commands. For example, a chat request may require a window to be created and presented to the end- user. It will be a command method that is handled by the command manager which will be responsible for causing that window to appear. Meta-Data Cache Manager
The meta-data cache manager implements a safe write-through meta-data cache. This greatly speeds up reads of meta-data and ensures that writes are persisted upon update. Object Store Manager The object store manager is a safe write-through cache for objects. It's task is to maintain in memory the current state of an object and to ensure efficient updates to the object are made at appropriate times. Activity Log Manager
The activity log manager is a debugging device that is used to log all activity in the system so that it may be scrutinized or viewed as it occurs. The intent is to log the activity to a file, a terminal view, or to a separate window if it becomes necessary. From the start of logging to a file, the system log or the terminal window will be supported. Proxy Manager
The proxy manager handles all external I/O for the GUI client with the proxy process. Its purpose is to ensure that packets are properly formatted and encoded and that data is written to and read from the proxy as it is produced. It manages the existence of the proxy process and handles the setting of the connected state. Help Assistant Interface
The help assistant interface is really just an agent proxy, with own object agents that represent the state of current help sessions with the help-desk. As such it maps nicely into the current architecture and can be easily accommodated.
Help sessions are opened using a known object name to which all validated users have access. The session then provides the user the ability to interact with the help system to either locate information or to contact others that may be able to provide assistance. Web Interface The purpose of the WWW interface is to provide the following basic services:
1. Account Management and Signup
2. Presentations
3. Reporting
4. Administration By using a WWW interface we can utilize the high-availability Application server to provide the access. What is unique about these services is that they require connectivity with ι the central server in order to be useful and cannot be implemented as a disconnected client- side service.
The technology that will be used is standard Java Server Pages (JSP) with appropriate servlets in the background to provide for connectivity with the object and meta-data stores. Business logic will also be localized this way to a single location - the application server.
Another more important point is that it may become necessary for Version 3 and beyond to implement complex interfaces to enterprise systems. If this becomes necessary then the use of a J2EE compliant server is an appropriate choice at this time as it will mean 10 future enhancements can benefit from the wealth of J2EE services being developed by 3rd parties. Alternative Embodiment Architectural Extensions
The following is an initial list of possible architectural extensions to be considered as part of the specification and feature set of one or more alternative embodiments of the present
15 invention:
1. Transport level encryption via SSL or TLS. Both are supported by the Java 1.4 JDK at the core and it should be possible to drop them in so that the upgrade is transparent to the end-user. Careful consideration of both business,
20 political, and technical requirements should be made prior to enabling this technology. Some jurisdictions world-wide do not allow the import of encryption, as such, it may be necessary to disable or hold-off on integrating full strength cryptographic privacy into the low-level protocol. 5 2. Half-duplex communication option. With this option a user is allowed to conFIG.the CCF framework to either receive remote updates but delay sending local updates, to send local updates but delay receipt of remote updates or to allow full-duplex operation as in VI. As the GAN environment grows, issues of performance, scalability, reliability, data integrity, disaster 0 recovery, or the need to incorporate new functionality may require a review of the initial storage management platform (i.e., mySQL running on a single r, ( — multi-processor Intel-based server utilizing a RAID disk array of IDE disks).
35 I An alternative might involve the use of clustered servers with storage arrays that can mirror data between multiple sites for redundancy and disaster recovery purposes. For example, the use of Oracle running on a redundant cluster of Linux or UNIX servers attached to an EMC storage array providing mirrored data backup between two different physical locations. Key factors that influence if a change is required and the selection of the alternative are: cost of alternative solution versus the value the alternative provides, complexity and risk of converting to the alternative, available budget, and the
10 specific need(s) to be addressed. As an FYI, it should be noted that Oracle
Corporation recently announced that it is moving all internal corporate applications from a UNIX platform to a Linux platform for scalability and cost reasons.
3. In one embodiment, the logical client meta-data store is built using a Berkeley
15 DB database. Alternative database products may, with equal facility, be implemented. See point 3 above for further considerations in regards to this point.
4. For VI, the Meta-Data Store relational database will be mySQL. As the GAN 0 environment grows and additional functionality is added, the decision to continue using mySQL may be reviewed. See point 3 for further considerations in regards to this point.
5. Workflow type assignment and approval system to be considered for future 5 versions.
Examples of functionality of the present invention are presented in the following "Use
Cases".
Use Case 1: Supplier Company - Salesperson- creating a Presentation, publishing to a designer customer, receiving feedback and responding to customer's 0 requests- Harvey just got a phone call from one of his customers at Urban Retro. Lucy is one of the woven designers at Urban Retro, always looking for the latest trend in fabrications and
5 often creates custom designs for the collection. First, she phones Harvey and leaves him a voice mail. "Harvey, send me all the latest you have in gauze and treatments/trim details. I am looking to do a group around the peasant theme, something innovative with trim."
Harvey receives the voice message. He would like to try this new way of working with Lucy, using GAN. He gives her a call and leaves her a message: "Hi Lucy, I'm going to send you an email as a follow up to your requests. There will be a link that gives you access to a Presentation I'm putting together for you via the web. You can make comments directly to the Presentation. Any questions at all there is a how-to link that walks you through how to make a comment, it's really easy you're going to love it."
Harvey goes to his sample room, and begins by pulling all of the headers of the latest gauze samples. One of the stylists put together a board with some fantastic trims and treatments for gauze, so Harvey takes some snapshots of these items on the boards. Harvey is ready to get the Presentation out; he goes to his computer and plugs in his camera. Harvey begins by dragging each swatch from his camera interface into the GAN interface. The import dialog box appears by default when a new image has entered the interface. When importing, GAN by default sets the target location folder in the Navigator to My Work. Harvey chooses to create a folder under My Work called Urban Retro. He is then prompted to select an object type and enter some of the information slip details for each imported photo. Harvey fills in the data appreciating that he only has to fill it out one time, while he will likely use these swatches for multiple customers the work up front goes a long way. Harvey fills in the pertinent information slip details such as style number, content, cuttable width, country of origin and mill for customers review. When finished importing, Harvey clicks the Presentation tool button and is prompted with a create-new splash screen for Presentations. Here, Harvey will give the Presentation a name and be prompted to fill out optional information slip details for the Presentation itself as well as select a target folder location in the Navigator for the Presentation and setup sharing which is optional. The system default target folder location is Presentation. This works for Harvey except he chooses to create a new folder named Urban Retro in his Presentation folder. Harvey is presented with the easy to use Presentation interface. The window where Harvey just uploaded all of his swatches is still open so he can simply drag and drop from his thumbnail Navigator view into the Presentation pane. All of the information slip details carry to the Presentation. Harvey realizes he has a rough edge here and there around the photographs and wants to add some descriptions to the information slip of each. Harvey proceeds to double click each image from the Presentation slide, which launches a new window with the quick image editor tool providing Harvey with simple tools for cropping and resizing to adjust images for Presentation purposes. When complete Harvey clicks the done button. The quick image editor window closes and Harvey is left with the Presentation window interface. Harvey decides to type some captions for each slide. Harvey clicks on the captions tab and proceeds to type targeted comments to Lucy about sample availability and price points. Adding captions takes Harvey less than five minutes to complete.
Harvey is now ready to publish the Presentation to Lucy. Harvey clicks on the sharing tab, and clicks the publish button. The publish dialog box appears and requests Harvey to choose a location where the published Presentation will reside, (GAN default is Presentations) prompts Harvey to choose the users/teams he wants to publish to and provides Harvey with a dialog to type a notification to recipients of the Presentation. At the Add recipients step of publish, Harvey pulls to his side the notepaper he wrote Lucy's email address on and adds Lucy Sykes at company Urban Retro to his contacts list. Harvey chose previously to add a new folder under his Presentations folder in the Navigator naming it Urban Retro, so he chooses this location for the published Presentation to reside. Harvey clicks ok and the GAN Presentation link is successfully sent to Lucy's email address. Lucy receives the email, reads the notification and clicks the link to view the secured web-based Presentation. She is blown away. It is a really impressive Presentation, with all of the targeted swatches she asked Harvey for. This is unlike anything she has experienced before. Harvey would typically send to her a bunch of swatches... with lots of "junk" she didn't ask for. With GAN, Lucy is presented with great viewing and commenting tools. She loves the ability to click through each slide in her own time. She clicks to the shot of the trim samples from the stylist's board and thinks it is terrific. She would have never seen this picture in the old way of working. Lucy especially appreciates the information slip details that provide the pertinent swatch information she needs and the captions where Harvey called out sample availability and gave her price point ranges. Harvey has written good descriptive information in the info slip fields describing the weight and drapability of the fabrics as well so Lucy gets a clearer picture of the qualities. Lucy sees a how-to link and is curious to learn how she should be using this fantastic new communications tool. The how-to guides her to click on the comments tab, and add her comments about each slide. This made Lucy feel comfortable and more importantly explained how simple it is for her to make comments explaining what happens with the comments after she makes them. After making comments, Lucy clicks the complete button in the Presentation interface and the Presentation comments are immediately sent to Harvey via GAN notifications. Lucy understands the concept of getting Harvey comments as the how-to explained the process. Lucy decides to click on the "click here to learn more about GAN". She is intrigued by this new way of working.
Harvey receives the comments from Lucy and sees that she has made some specific references to some of the gauze samples and trim references. She would like to get swatches of a few of the qualities and would like to know if some of the trim detail can be done in her colors. This comment came from the sample on the stylist's board. Harvey realizes he may have never showed Lucy this piece if he didn't have GAN to easily do so. Getting Lucy to come to the showroom is near impossible. Harvey happens to have a new sample that represents more color options on the trim. Harvey finds the sample, snaps the picture and imports it into GAN. Harvey creates a new Presentation with this sample and follows the same steps to get it right out to Lucy. Directly after, Harvey clicks on the folder Urban Retro under Presentation folder in his Navigator. Harvey selects the Presentation he published to Lucy, clicks the sharing tab and chooses the "share with" button. He chooses Sondra; Harvey's associate from his contact list and gives her the role of reviewer for the Presentation. Harvey types a notification. "Please send swatches that Lucy has requested in the comments. "
Results: Lucy found a resource in a 24-hour period on a product concept, which would have normally taken her at least 3-4 days domestically and a week internationally for first swatch attempts. In addition, Lucy was informed quickly of a design option she needed that Harvey may in fact never have known if Lucy did not have the commenting vehicle to tell him what she was looking for. Lucy is thrilled to continue working with Harvey in this new collaborative way and will soon want to find ways she can send him things she's looking for in order to be even faster to market with her concepts, hence a new GAN customer. Harvey makes more sales happen as well as makes his customers happy by reducing their time to market....GAN is the vehicle that makes this possible...
Use Case 2: Supplier Company - Stylist-creating concept storyboards for upcoming season to get feedback from key customers. Robin Lambert is the design director for Koneke Mills. Robin has a tight relationship with the R&D heads of all of Koneke' s top customers. Using these relationships, Robin presents early concepts and design direction to these clients early in the season to get feedback, which results in more targeted, efficient development for Koneke.
Robin attends all of the major yam fairs she can. At these fairs she snaps pictures of interesting textiles and fibers discovering the upcoming trends along the way getting samples from vendors to work with. Prior to a new season, Robin shops vintage boutiques and other favorite spots to get inspiration to guide design direction. Her camera provides the extensibility she needs to capture inspirations on the spot.
Robin is ready to take her inspirations and begin creating concept storyboards. Robin begins by importing all of her camera images into GAN. Robin clicks the import icon in the menu launching the import dialog box. Robin selects the location on her hard drive where she is importing photographs from. By default GAN selects the target location folder, where the imported images will reside in the Navigator to My Work. Robin chooses to create a new folder under My Work called Fall 2004 Concepts. She is then prompted to select an object type and enter some of the information slip details for each imported photo. Upon importing she typically uses the miscellaneous object type but specifies the season in the information slip. All images now reside in this folder. From here, Robin clicks the storyboard tool button, a new window. is launched and Robin is presented with the new storyboard splash screen.
Robin enters a name, types in the season for the storyboard, and selects the location for her storyboard under My Work folder adding a folder named Fall 2004 Boards. When prompted, Robin does not opt to setup sharing. Robin plans to share/publish accordingly when she is satisfied with her concepts. Robin begins by multiple-selecting about 15 pictures from her fall 2004 concepts folder in the Navigator and dragging/dropping them onto her new storyboard canvas. This process is intended to be similar to piling her tear sheets in arrangements onto her worktable rather than creating the ultimate storyboard. Robin continues arranging photos in front to back order, resizing and adding text to further express the themes and trends she feels are important. Robin has many industry magazines that she pulls tear sheets from for inspiration. Her top assistant typically scans them in- but she is getting more comfortable with the camera these days, Robin opts to take pictures of them herself. GAN makes it easy for her to import multiple images and the tear sheet object type equally makes this process simple both technically and conceptually for Robin.
As Robin completes one storyboard, she clicks the storyboard tool button again to launch another window and create more than one storyboard at a time. When sorting through images, many themes are mixed together, so GAN makes it easy for Robin to drag between more than one storyboard essentially sorting themes as she creates them. Robin ends up creating 3 key concept storyboards. She's ready to complete the Presentations to be shared with Koneke' s key accounts.
Robin has closed two of the storyboard windows leaving one opened. Robin clicks the Presentation tool button; launching a new window with a create-new splash screen for Presentations. Here, Robin will give the Presentation a name, select a location for the Presentation and be prompted to fill out optional information slip details for the Presentation as well as setup sharing. She is presented with the intuitive Presentation interface. Robin clicks on the storyboard icon in the storyboard toolbar and drags and drops it onto the Presentation. Robin then closes that storyboard window and is left with the Presentation window opened. This step drops the storyboard object into a slide within the Presentation. From the Navigator, Robin clicks on her My Work, Fall 2004 Concept folder and drags and drops the other two boards she had completed previously into the Presentation. Robin now has three storyboards in her Presentation. Robin proceeds to click on the information slip tab and add some pertinent details to each storyboard in the Presentation. She writes narrative in the description field about some of the fiber/textiles. Robin clicks on the captions tab and in her narrative expresses the important themes and trends and general ideas that she wants the R&D associates to comment on.
Robin is now ready to publish the Presentation to the key accounts of Koneke. Robin selects the sharing tab and clicks the publish button. The publish dialog box requests Robin to chose a location where the published Presentation will reside, prompts Robin to chose the users/teams she wants to publish to and provides Robin with a dialog to type a notification to recipients of the Presentation. Robin does this with ease and types a notification; "Concept preview for Fall 2004. I would love to hear your initial feedback and your concepts about what will be important for Fall 2004. There are a lot of amazing fibers this year as well as some innovative combinations that are out of this world!"
Each key account receives the email, reads the notification and clicks the link to view the secured Presentation from Robin. These customers are very impressed. Robin has done a lot of work for these designers that they have to do for themselves. Granted, there is much more work to do, but Robin ranks very high on their list by getting out there with a visual Presentation of her research and ideas that will only help them in their development work.
Much better than a phone call with explanations and obnoxious sales pitches that mean little to a designer without seeing the concepts. This communication is design to design with concentration on discovering the themes and trends of the season early ... getting the ball rolling and planning with enough time to create the right products they are looking for.
Each customer replies with his or her individual ideas and comments. While some are more prepared in thinking than others, the bottom line is that Robin reached out and made a very important impression to these key accounts that she indeed is helping them get them the right products faster. Trying to meet their needs and get closer to a "yes" earlier in the season. In addition, these customers appreciate that the more focus they have early the more prepared they can be in working with design as the design meetings begin which only provides a better opportunity to accelerate time to market and hit deadlines that are getting tighter and tighter.
Use Case 3: Supplier Company - Stylist- creating storyboards as sales support to represent key "new" collections Harvey is a salesperson for BW Mills. Karen is one of the stylists for BW Mills who creates and does incredible storyboards as well as Presentations, using storyboards as well as key swatches with pertinent details. This kind of support makes it much easier for Harvey and team to regularly send out very impressive Presentations to their customers, enabling them to stand out from the competition and most importantly hear what their customers think of their lines.
Karen has just notified sales that a new collection of Presentations is complete. Harvey sees his notifications alert light up. He clicks the notifications button and is presented with his notification log. He sees that Karen has a subject titled New Fall Yarn-Dyes. The notification states: "Here is the folder with 8 new Presentations for all of you to use. Just a reminder: make duplicates of these Presentations so you have publishing privileges. If you have comments of course add them for my review and if I make any adjustments you'll receive a notification that there has been an update. There is another collection due to be received tomorrow, so I will be adding another Presentation to this group at that time. As always, I'll notify you all when it's there. We have a design meeting next week so the more comments the better on these collections."
Harvey clicks the link to the folder, which takes Harvey to the New Fall Yarn-Dyes folder stored in the Presentation folder in his Navigator. Harvey reviews the Presentations before sending. There is always a visual cue in the Navigator to represent objects/Presentations and other arrangements that have been shared and or updated. New Fall Yarn-Dyes in Harvey's Navigator represents this visual cue. Harvey clicks on the name of the first Presentation Classic patterns which launches the Presentation into a new window. Harvey clicks through the slideshow and reviews all of the swatches and information slip details. Because he has reviewer rights, Harvey can add comments to Karen and the rest of the team. He has one question in particular and sees in his IM bar that Karen is online. Harvey double clicks her photo in the IM bar and types a question: "style 7665, are there more color ways available?" Karen replies, it says custom colors available but what you're looking at is sample availability"
Harvey is pleased with the Presentation and feels its sharp enough to go ahead and publish with some of his top accounts. Harvey needs to add some text to the captions to personalize the Presentation, so the text relates to customers the same way he would relate to them in person. Harvey duplicates the Presentation and gives it a new name of BW Mills Fall Yarn-Dyes. Harvey is now the author of the duplicate Presentation, whereby he can make any adjustments to it without affecting the other copies shared between his team and Karen.
Harvey clicks on the captions tab and adds some narrative to communicate the collection to his customers. Harvey now has a slightly customized copy he has created for his top accounts with his language. Harvey is now ready to publish the Presentation. Harvey clicks the sharing tab and clicks the publish button. The publish dialog box requests Harvey to choose a location where the published Presentation will reside, prompts Harvey to choose the users/teams he wants to publish to and provides Harvey with a dialog to type a notification to recipients of the Presentation. From his contacts, Harvey chooses his top 10 account designers. The default location for the published Presentation is Presentations folder, which is fine for Harvey at this time. Harvey types the notification "New Fall Yam-Dye collection for your review". Harvey chooses auto-notification, which means that when there have been comments made to his Presentation, he receives a notification. Comments received from all 10 customers will be associated with this one published Presentation. If Harvey had sent out 10 individual Presentations comments would be associated individually to each.
Each customer replies with his or her individual comments and swatch requests. Trying to meet his customer's needs earlier and get closer to a "yes" is Harvey's goal. The old way of working would have required Harvey to leave voice messages to try to convince designers to come over to his showroom to see new collections and storyboards or schedule an initial appointment which would have been the usual shot in the dark approach. Utilizing GAN, Harvey's customers will experience a preview of the collections and be able to request swatches and ask questions on the spot, as opposed to have to meet with Harvey to simply get a preview. Another "old-way of working" for Harvey in the past, would be that he would deliver a bunch of swatches to his top customer's receptionists and follow-up with phone calls, hoping to get their feedback. Getting feedback using this process is another near impossible task. The trick for Harvey is hearing questions and meeting needs early enough, so he can follow-up with design on his side by providing customers requests and feedback.
Harvey receives a notification that he has comments. When Harvey clicks the link of the notification the system launches a new window with the Presentation, comments tab opened. He realizes he has had 4 comments so far. Notifications "de-duplicates" which means if Harvey has more than one reply but has not acknowledged the notification, every new reply will simply be added onto that existing notification rather than result with 10 bold unread notifications in Harvey's log, for example. This is convenient for Harvey and less cumbersome. Harvey gets some good feedback that he knows will be valuable for design. Harvey clicks the sharing tab and selects "share with". Harvey selects Karen and Sandra from his contacts and gives them reviewer roles. Harvey selects auto-notify to create an alert. Harvey types a notification message "good feedback from Donna Karan, they are looking to do a custom pattern. Sandra, please send swatches of all collections to all four."
Use Case 4: Apparel Company - Designer - created some hot new concepts for a special collection, wants key buyer feedback
Laura is the design director at Essendi. Essendi is all about novelty and capturing the hottest trends for their collections. Laura is known for identifying trends quickly and reacting. Laura is diligent with her team about getting new ideas in front of their key buyers hastily in order to sell the buyers on the hype of the items. She captures their feedback and moves quickly. These key accounts love this way of working, because consumers count on them to offer the greatest, newest items before they hit the mainstream. Laura takes her camera with her everywhere she goes. Living in Manhattan she is constantly snapping shots of street scenes that are inspiring, items in vintage stores and flea markets, and other trendy boutiques, etc. Laura has some great ideas combining vintage fabrics with denim, lace and trims. She's back at the studio and begins her work.
Laura plugs in her camera and imports all of her latest shots into GAN. When importing, Laura chooses her Trendy folder under My Work as the target location for these imported items. Laura imports the first 20 shots as type miscellaneous and chooses to name each specifically as she imports them to start organizing her thoughts. By doing this, the system prompts her for the name, but has set each item to type miscellaneous. Laura fills the season into the information slip details as she goes along. When she gets to the last 15 she changes the import type to trim and chooses to keep the default name of the item as per the camera software. After importing, Laura clicks on the folio tool button that launches new folio splash screen. Laura enters a name, types in the season for the folio and selects the target location for the folio under My Work/ Trendy. Laura chooses default folio from the template options and does not opt to setup sharing; she'll share/publish when she is satisfied with her concepts. Laura simply starts dragging and dropping files from her Navigator onto the Folio tool. Sometimes, Laura needs to see all of her files in thumbnail view in order to work, but because she is organizing she saves the screen space and drags and drops directly from her Navigator to the folio. As she drags and drops, she creates names for the rows: trend, theme, fabric prints, trim, color and silhouette. Laura sorts the shots accordingly. She copies and pastes some shots into more than one row as they apply; some of the items have great trim detail but also have great prints. In addition, some are great for color as well as fabric. Laura double clicks the key shots to launch the quick image editor. From here, Laura fills out the info slip details like descriptions, source so she can note the boutique she found the items in and some ideas about fabrications and silhouette details to pair with some of the trims. Laura renames the trims to more appropriate names now that she has a better idea of how they'll be used. When she is through sorting and filling in details, she is ready to create storyboards.
Laura clicks the storyboard tool button, which launches a new window with the storyboard splash screen. Laura fills in the appropriate info and begins collaging from folio items onto her storyboard, creating the groups. She launches another storyboard window to work on two storyboards at a time. By doing this, Laura begins conceptualizing about silhouette design. Laura likes to sketch by hand... so she puts together the themes, trends and fabric ideas and from there will go back to her desk and sketch out some designs. Laura prints the storyboards and folio as they are so she can keep the images close to her sketching area.
Laura can't wait to get her large flat-screen monitor so she can just sit back and view her work in progress on-screen ... Sketching complete, Laura scans in her illustrations. After scanning, Laura goes directly to her folio and imports each into the row named silhouettes. Upon import, Laura selects object type sketch, chooses the season and names each sketch individually. From the folio, Laura now drags and drops the illustrations onto the appropriate storyboards. She resizes the sketches to fit the boards and re-arranges the images, moving things front to back, circling some areas of trim on some of the vintage shots and drawing some correlation between the trims, her sketched trims on the silhouettes. Laura names each storyboard; one is Folk Lure one Blues Beat and the last, Novel Identity. Laura now goes to the captions for each storyboard and writes more elaborate descriptive details about the feeling of the themes, some of the selling points and how they relate to past selling seasons.
Laura is ready to share with Phoebe her Merchandising associate. Phoebe works great w/ Laura and has a lot of confidence in her design ability as her direction is always spot on. Laura closes the folio, and storyboards. She launches the Presentation tool, names the Presentation and chooses target location in her Navigator as Presentation/Trendy. Laura drags and drops her storyboards and folio from the Navigator into the Presentation. She simply re-sorts the order of the 4 images by dragging and dropping in the image strip of the
Presentation. All of the info slip data and captions carry, so all Laura has to do is share with
Phoebe. Laura clicks the sharing tab and clicks the "share with" button from the sharing tab of the Presentation, and selects Phoebe from her contacts. She clicks notify and types a notification "Phoebe: some great concepts for Fall, get some feedback"
As Laura shares the Presentation with Phoebe, she is immediately added to her IM bar of this shared object. Phoebe's status is online, so Laura tries to catch her by sending her a quick mail. She double clicks Phoebe's icon in the IM bar and types... "Hey! Check your notifications... I just shared some Fall concepts with you... get feedback" and adds an emoticon to express excitement to the end of her note. "Click the link and check it out." Phoebe actually replies, "Great, hang on a sec." Phoebe shortly clicks the link to the shared object supplied in the EVI window. She takes a minute and replies, "Wow, you've been busy- June is going to LOVE these... I'll also share with Bridget Foley. Now that I think about it, I just had dinner with Candy Lambert and she is looking to expand their identity to a younger audience. Nice timing. You'll hear from me when I get feedback."
Phoebe duplicates the Presentation and saves it to her Presentation/Fall Items folder. Phoebe clicks the sharing tab and clicks the publish button. Phoebe selects June from her contacts. She types a notification "June, I think you're going to love these concepts. Laura has really got something here. I'll be waiting for your comments, we're prepared to move forward quickly." Phoebe publishes separately to all of the recipients so she can type a personal notification to each Buyer.
As feedback comes through, Phoebe shares the published Presentation with Laura so she is in the loop seeing the comments. Phoebe most times assigns Laura a reviewer role so she can see the comments made from the recipients. Phoebe goes back and forth a few more times with the Buyers tying in design... Laura has definitely done it again. All of the buyers are nuts about the collection and are running with the concepts. Using GAN in this efficient way, they got more than one exclusive program without doing a third of the work usually required to win a program from these key buyers. The speed of getting the idea across made the order.
Use Case 5: Apparel Company - Designer- using folios to keep everybody on the same page with collections as they are works in progress
Jeremy is the design director for his collection, Jeremy Scott. His tight team of 5 associates is constantly on the go. Part of their problems in the past has been that associates on the road have no visibility to the current state of the design room and to Jeremy's latest ideas. Whether working in the factories or working off site, associates need to have visibility to design room information. Keeping team members on the same page is critical with a tight team. Jeremy has gotten his team to work incredibly effectively using GAN, namely folios to keep everybody up to speed with the current works in progress of their design groups.
Jeremy has setup 6 folios naming them according to the collections he has pinned to his wall. In folio setup, he selects his design team of 5 associates with the roles of editor.
Jeremy labels each row in the folio, as he wants to see them laid out. Color, Theme, Trend, Wovens, Patterns, Silhouettes, Knits, Trim and Graphics are the row names Jeremy creates in the folio. Jeremy fills out the information slip of each folio typing in the season, a description of what he sees the group theme to be and enters the delivery date for each. Jeremy clicks the sharing tab and clicks the "share with" button. Jeremy selects his design team icon from his contacts and types a notification: "Gang, I've labeled the rows accordingly. Please add all of your current images and what we've got to date based upon our last design meeting."
All of the associates receive the notification from Jeremy and are perfectly clear with what to do. Sara does R&D on pattern and wovens, Ross is responsible for silhouette sketches and Angel is Jeremy' s right hand and always makes sure color, theme and trend are up to date on the design room wall. Jeffrey handles trim and graphics. This simple effort has created amazing efficiencies in communications for Jeremy's team. GAN keeps all associates on the same page providing the visibility they desperately need at all times.
Apparel Company - Sales/Merchandiser- presenting a new promotional to a key buyer Suzy Melendez is the top merchandiser for Urban Retro. She carries all of the key accounts for the company. Suzy has just completed a meeting with Jessica Kerwin, the top buyer at Bloomingdale's. Jessica wants to do a Fall promotional. Suzy is now on her way to design to discuss with the design director what she needs to present.
Patrick Scott is the director of design for Urban Retro. His assistant Sally does most of the detailed computer work, but Patrick trusts her with everything so it works well. Suzy explains the items, fabrications and print that Jessica has in mind. Of course, Jessica wants to see something right away and Suzy knows she'll either change her mind or go after a better offer in a heartbeat if they don't get something great-to her immediately. Patrick has a print on his wall that may actually work perfectly for what Jessica is looking for. Big time saver as "the right " prints are very difficult to find. The process will be, Sally will put together a storyboard laying out key silhouettes possibly sketched by Patrick along with the print and color direction. She'll then source some fabrications and run it all by Patrick. Once approved, Sally will create the final Presentation, get Patrick's sign off, share it with Suzy for her review and then it's ready to be presented to Jessica.
Sally remembers one of the collections she got from Robin at Koneko. She calls Patrick into her office and pulls up the Presentation to some of the swatch slides, he loves one of them and wants the other one in a lighter weave, but the swatches will do for now for these Presentation purposes. Sally quickly makes a comment to Robin saying, we need to see this style in a lighter weave, send over what you have. She then continues to build her storyboard with the swatches and the artwork from Patrick's wall. In the meantime, Patrick sketches up some key silhouettes. When complete, Sally scans in the sketches and puts together a terrific but straightforward storyboard, which is exactly what Suzy, needs to do the job. Sally also includes the single slides of the swatches for Jessica's closer review. Sally and Patrick got this Presentation together in just under two hours.
Sally has Patrick looking over her shoulder, he asks her to just double check the swatch info slips for details and approves it. Sally clicks the sharing tab from the Presentation and clicks the "share with" button to share with Suzy. Suzy is typically in the showroom with customers or in meetings so she calls her assistant to tell her the Presentation is done and waiting for her review.
Suzy gets to her computer and checks notifications. She clicks the link and reviews the Presentation slides. Suzy thinks it looks terrific. As the reviewer, Suzy only has the rights to make comments, so she duplicates the Presentation so she can publish. Suzy clicks on the captions tab and adds some narrative about each of the slides to speak directly to the buyer.
She types specific details they had discussed previous about what the selling forecasts are for prints and these colors.
Suzy is ready to publish. She clicks the sharing tab and clicks the publish button. The publish dialog box requests Suzy to choose a location where the published Presentation will reside, prompts Suzy to chose the users/teams she wants to publish to where she selects
Jessica Kerwin, and provides Suzy with a dialog to type a notification to recipients of the
Presentation. Suzy chooses her Bloomingdale's folder in Presentations, which is where she stores all of her Bloomies account interactions. She types in the notification: "Jessica, I think you'll love what we've put together. The print works beautifully with what we discussed. I have notes for you throughout. Send me your comments and I'll get right on samples for you." Jessica is very impressed with the Presentation and the fast turnaround from Suzy.
She sends her feedback the next day after reviewing the Presentation a few times. Jessica and Suzy go back and forth a few more times tying in design...Suzy definitely is getting this program from Jessica and has done so quickly not to mention dramatically cutting the costs typically incurred in old forms of communications such as manual storyboards, federal express and the worst... constantly calling Jessica to hear her comments. Working through GAN was extremely impressive for Jessica. The visuals and descriptive details provided gave her a clear picture to understand the concepts. Additionally, the time usually required to make dozens of samples with out first getting feedback and directions was bypassed.
Use Case 6: Apparel Company - Research and Development Associate- looking for new qualities from top suppliers for upcoming season
Anne works in Research and Development for Ross Whitney, The Collection. She has a very tight group of suppliers she works with most of the time. It's early in the Fall season; she has some specific things she is looking for. Anne is looking at her design room wall and has two very specific qualities of fabric she got from a garment on her last European shopping trip. She takes her camera and gets close to the garments pinned to her wall and snaps. Anne imports the shots into GAN. Anne uses the swatch object type, types the Fall Season into the information slip and chooses to put the swatches into her Fall 2004 Wovens folder under My Work.
Anne simply clicks on her Presentation tool button and is presented with the new Presentation splash screen. She gives the Presentation a name, selects the target location for the Presentation as Presentations! Fall 2004 R&D and opts not to setup sharing. Anne proceeds to drag and drop the two swatches from her My Work! Fall 2004 Wovens folder directly into the Presentation. Anne proceeds to double click each swatch to launch the quick image editor. In the quick image editor, she crops off a dark edge from each picture and fills out the info slip to the best of her ability. She types in the description field what the contents of the garment say and what kind of drape it has. Anne then reiterates the price point she is looking for. Anne clicks done from the quick image editor and the Presentation is updated with all of the current image edits and info data. Anne clicks on the sharing tab in the Presentation and selects the publish button. Anne selects Harvey at B&M Mills from her contacts. She types a notification "Harvey, looking for qualities for Fall. One of them I'd like to print on. See captions. Get back to me with what you have. " In the publish dialog, Anne chooses to lock the Presentation. Locking essentially restricts the drag and drop capabilities for GAN users and restricts the Save picture as in Internet explorer for non-GAN users. Anne is extremely particular with any images she gives out to even her most trusted suppliers.
Harvey receives the link to the Presentation from Anne. He views the two swatches quickly reviewing Anne' s captions and information slip details. Harvey then clicks the comments tab and types. "Anne, I have a few swatches, but this looks like a custom piece we'll have to work on. I will send you swatches first thing in the am and you can leave me snips of what you have so I can get them to the mill ASAP. I'll follow up in a few days. It would be great if you could send this Presentation to Lynn at the mill today, so she can start working out some ideas ahead of getting the swatches."
ALTERNATIVE EMBODIMENT
According to an alternative embodiment of the invention, the above-described system may be modified as follows. The system according to the alternative embodiment is referred to as Visuality.
Visuality provides a web-based, private, secure visual communications platform for the apparel industry. Fellow apparel workers in separate locations can use Visuality to work together online, with the same visual information in front of them on their computers.
Visuality reduces the need for guessing and the need for expensive and time-draining overnight shipping, long-distance phoning, and conference calls.
Real-time collaboration greatly streamlines and organizes communications and feedback. Inspirations become beautiful products as designers efficiently collaborate together. Sales people respond more quickly to customer requests and respond with clear visual information. This allows Sales People to get decisions made more quickly, anticipate the needs of their customers, and make more sales. Users can even utilize the platform to communicate visually with non-member customers as long as these customers have an e-mail address.
The system provides an intuitive, easy-to-leam, and easy-to-use technology solution that leverages current relationships. The software environment includes a Client Application that runs on the personal computers of GAN customers. Connectivity to the Internet enables the collaborative benefits of the platform.
Network Advantages: Visuality vs Traditional Email with Power Point Attachment:
Figure imgf000125_0001
The system does not clog Networks as E-mail attachments do.
Some examples:
In a typical situation, hundreds of employees send emails with visual attachments back and forth....the network as well as individual's work slows down as forwarded messages, replies, and replies to replies are going back and forth.
This is more than just a bandwidth issue but also a productivity issue... cluttered in boxes...trying to organize your dialogues around many versions of visual attachments no one working on the same page.
With the present system, instead of swapping emails with visual attachments creating multiple versions all over the place you are working on, a single version of the visual that always has the latest changes, discussions and decisions all in one place. Visuality is much better and faster than email for visual sharing, discussion, and decisions- all necessary for collaboration. While email lets you connect with other people, Visuality helps you really work with them, collaborating in an organized and easy way. Time is money:
Some examples:
With an ISDN-connection, it takes over 5 minutes to send an email with a 5 MB presentation. It takes 5 more minutes to receive this email. With an Analogue connection it nearly takes 12 minutes to send and 12 more minutes to receive an email with a 5 MB presentation. Normally a presentation will be sent several times, to either colleagues or business partners. This routine demands each time the same amount of bandwidth.
Using a SDSL connection, sending an email with a 5 MB presentation takes only 20 seconds, but it does require that the receiving parties have the same capacities. Moreover the internal use of these presentations affects the network in a similar way. Sending a presentation to a colleague means the presentation goes to a server and onwards to the receiver. Any replies with the same pictures affect the internal bandwidth again and again. User Requirements
According to one embodiment of the invention, the requirements for a client computer to be used in the system are:
• Pentium HI class PC workstations (800 MHz or higher) running Microsoft Windows 2000 or higher.
• 256 MB of RAM; 150MB of available hard-disk space. • Graphics are designed for display resolutions of 1024 x 768 pixels with 16 bit or greater color display adapter.
• Microsoft Internet Explorer version 5.5 or higher. (U.S. English versions)
• A persistent Internet connection, such as DSL, cable modem, or TI line is recommended, although features will also operate (slower) via dial up connection of 24kbps or greater.
• Access to' cameras and or scanners to input pictures into Visuality General Note: The experience of the GAN user is directly linked to the GAN user's underlying infrastructure (i.e., configuration of user's PC, network bandwidth and utilization and Internet connectivity). The Client Application "floats" on top of the user's infrastructure to connect to the Servers. The Servers enable the collaboration between GAN users.
According to one embodiment of the invention, the Visuality software application includes the following modules. a) Application Client Module
The Application Client Module functionality shall be based on the functionality of the pre-existing Visuality client program. This program shall be constructed using the Java computer language. The re-implemented Application Client Module shall be re-implemented in a manner compatible with the Application Server Module referred to in item (c). The look and feel of the application shall be improved and made more consistent as specified by CLIENT. Functionality to be included in this module includes:
1) Main application Frame, including Menus, Toolbars, Contact List and directory tree.
2) "In Box'V'Out Box" and "Sent Items" table views showing information sent by and to the program user.
3) Contents pages showing images and "arrangements" (Folios, Storyboards and Presentations) stored within a folder or arrangement.
4) Simple text messages- consistent with the current functionality to "notify" a person within Visuality.
5) Editors for Presentations, Folios, and Storyboards.
6) Quick image editor. Currently, if you double click an image, it launches the quick image editor that provides functionality to crop/flip/rotate etc.
7) Current non-modal tool that exists in both QIE and Stbd which is- hovering on selection boxes provides a pop up tool- resize, crop or rotate. Hovering inside the box calls the crop, hovering on the box calls resize hovering outside the box calls rotate. 8) Contact Address management sub form- this includes Visuality users.
9) Message/Comment editing sub form- This is relating to a pop up.
10) Address Book for managing contacts and teams
11) Drag and Drop functionality- this is currently ubiquitous throughout our application- we expect dnd throughout the application.
12) Viewing functionality for arrangements shared to the program user by other users. Editing not allowed for arrangements published to the program user by another user. Provide visual cue of comments appropriately within the arrangement viewers. Share is "unlocked" and published is "locked". If you share a folio- you give people the ability to dnd pictures to their workspace which engages a copy 13) Providing the functionality for shared participants to add pictures to the shared arrangement, even without the ability to edit pictures, is important to represent real collaboration and the ability to allow people to work on works in progress...as a team. (This item will not be implemented in the 90 day release; however the architecture will be designed to allow for this revision in a later release, outside the scope of this contract.)
14) Comments can be made to both shared and published arrangements.
15) Ability to store arrangements and images on the local computer. This is simply an architecture statement- not representing that we want to be able to store our arrangements as in open a Visuality storyboard in windows... 16) Remote synchronization to the Visuality Server through an internet connection with the ability to pass reliably through standard internet firewall settings.
17) Support the concept of "Save" and "Send".
18) Support offline and online functions. Provide status indicator and present proper functionality accordingly.
19) Coordinate with the Server Module to provide a facility for Visuality users to link up with each other through a discovery and confirmation process. I 20) The Client Module shall be implemented such that it can be remotely installed and updated ( very important) 21) Functionality to resize an image upon import will not be implemented in the 90 day release, however the architecture design will allow for this revision in a later release, outside the scope of this contract. 22) Functionality to provide usage report (e.g., number of arrangements created, shared, and published, etc ..) to user through the client module will not be implemented in the 90 day release, however the architecture design will allow 10 for this revision in a later release, outside the scope of this contract.
b) Web Client Module
The Web Client Module functionality shall be based on the functionality of the existing Visuality Web Module. This program shall be constructed using HTML
15 and Java Server Pages computer languages and shall be viewable using a Web Browser program. The program shall be re-implemented in a manner compatible with the Application Server Module referred to in item (c). Functionality to be included in this module includes: 0 1) Ability for a program user to view arrangements and images published to them by a Visuality program user. (The ability to publish single images will not be implemented in the 90 day release, however the architecture design will allow for this additional functionality in a later release outside the scope 5 of this contract
2) Ability to add comments that will be forwarded to the owner and other recipients of a published arrangement.
3) Ability to view the same published arrangements on subsequent occasions.
4) Ability to register and administer non Visuality users. 0
5) Ability to perform administrative tasks at the "World" and company levels. Tasks at the "World" level include adding companies, adjusting company licenses, assigning company administrators, and providing usage reporting
5 ^ (e.g., number of arrangements shared and published, average number of comments created per arrangement shared and published, etc .). Tasks at the company level include adding and deleting users and password reset.
c) Application Server Module
The Application Server Module shall allow for the storage and forwarding of shared and published arrangements and comments for the Visuality program users. This program shall be constructed using the Java programming language. 10 Functionality to be included in this module includes:
1) Use of a database to store Visuality application information.
2) Program logic to allow for the versioning and storage of arrangements and images uploaded by Visuality users.
3) Synchronization functionality to allow for correct sharing and publishing of
15 arrangements and images.
4) Web Server capabilities allowing Web Clients to access arrangements through an internet connection.
5) Detect data synchronization conflicts (different updates performed on two 0 separate computers under the same user account) and provide options (user to choose the version to keep).
6) Provide notification to all recipients when an arrangement is shared or published. 5 The benefits provided by Visuality are as follows. Visuality will give every employee the power to help the company get better products to more customers, faster, by easily and securely communicating and collaborating visually via a simple internet connection. For communicating visual information, Visuality is much more effective, faster, and better targeted than email, overnight deliveries, websites, telephones, or faxes. Designers and 0 Merchandisers will be able to communicate visual presentations clearly, quickly, and securely to suppliers, customers, and team members. Visual communication and collaboration means increased creativity and faster time-to-market with more on-target
5 products, resulting in increased sales. Sales will benefit greatly by visual communication, collaboration, and feedback, more often with more customers, resulting in increased sales with reduced sample costs. Visuality is truly a global solution, continuously helping your employees and their relationships regardless of geographic location or time zone. Visuality is not limited as to maximum number of users. The application is completely scalable to thousands of users, while also being extremely valuable to much smaller teams.
According to one embodiment of the invention, even non subscribers may receive and comment on presentations. Suppliers, customers and other relationships may also create and publish their own presentations, rather than just comment back and forth regarding the presentations.
According to one embodiment of the invention, additional benefits aimed to be provided by Visuality are: Increased Revenues
Real-time visual presentations to previously hard-to-reach new customers with no additional sales costs.
Beat competition to market with reduced cycle time for high hit-rate products
Increased Profitability
Decreased expenses for design and sales meetings, presentations, travel, phone, fax, overnight shipping, etc.
Higher Margin Sales of custom collaborated products instead of low- margin/generic products. Increased Cash Flow
Less shotgun design/off -target sample & product inventory & markdowns Real-time 24/7 internal & external communication reduces costly errors & rework, while increasing customer satisfaction & relationships.
Non-restrictive use: Visuality users can communicate with anyone they choose as long as they have an email address. Non- Visuality recipients can review visual presentations, and instantly comment back and forth specifically regarding each presentation without clogging their network with large image files. Easy to leam/easy to use: Garment Industry professionals created Visuality to mirror actual industry work routines, so that users are not required to learn a new way to do their jobs. It allows them to do what they have always done, only more easily and more efficiently. Visuality is easily and immediately adopted by users throughout the product cycle. Users appreciate the intuitive and efficient design and organizational tools and secure sharing capabilities.
Better than e-mail: Sending visual information via e-mail requires large files that take time to download and clog users' network. E-mail also does not track comments, document details about images, or offer any sort of collaboration feature. Visuality corrects all of this and is as easy to use as e-mail.
Designers have more time to be creative: Designers save precious time by communicating their concepts efficiently to those they need to and get the necessary feedback quickly. They can also now rely on visual information to make requests to suppliers versus "explaining" needs over the phone. Visuality ensures that all of this happens rapidly, allowing them to spend more time being creative. Designers receive valuable and context specific feedback that they normally never get.
Sales teams get more and smarter access to customers, leading to more sales: Sales teams can immediately respond to customer requests with efficient, elegant Visuality presentations-presenting exactly what the customer wants and making the sale. They also offer modifications to requests or their company's newest collections in an easy-to-view format ensuring customers always have the best possible options in front of them. Management will appreciate increased visibility across the entire product design and merchandising life cycle.
Offline use: Visuality customers can use the product online or offline. When connected, Visuality instantly updates all information to reflect the users' and all other designated collaborators' comments and changes.
Visuality's instant comments provide the functionality of instant messaging without the potential security problems. Additionally, Visuality instant comments are always context related to visuals and therefore more useful and effective. Participating users are automatically notified of new presentations or comments.
Furthermore, Visuality is better than e-mail in the following respects: Visuality keeps all Visuals Descriptions, and Threaded Comments correlated at all times. Visuality is virtually spam and virus free, as all users are known and invited. Visuality automatically handles version control. The large image files are only sent one time, while small comment threads are exchanged, making it faster than e-mail.
Visuality is also better than video conferencing. While Video Conferencing is helpful for meetings, Visuality does that and much more. Visuality participants actually create permanent work while collaborating together, rather than just generally talking about it.
Use of Visuality is friendly & intuitive. Getting started with Visuality is easy and fun: Simply import your photo or other pictures into Visuality Intuitively organize your pictures with Visuality' s Folio tool, easily adding picture and row captions and descriptions
Easily collage and layer pictures, ideas, concepts, and collections with Visuality's Storyboard tool, adding colors, text and shapes as you wish.
Create custom presentations by dragging and dropping pictures, folios, and storyboards into your Presentation tool, along with descriptions, captions, and comments.
Publish each presentation with a personal greeting to suppliers, customers, and team members of your choosing.
Even non-subscriber recipients simply click the link in a personally addressed e-mail to access your Visuality presentation, where they can instantly comment back and forth with you while viewing the presentation.
According to one embodiment of the invention, Visuality allows the user to create presentations and comments either offline or online. Only publishing and live comment threads require online connections.
According to one embodiment of the invention, the system requirements for Visuality are as follows:
If you are presently using Email, you can use Visuality with no additional IT infrastructure or connectivity.
IT support needs are extremely light, while providing appropriate user administration, usage reporting, and management.
Security is always ensured by requiring user ID and password.
Periodic Visuality Updates are automatically and transparently downloaded to each individual user computer.
Visuality presentations and comments operate transparently and securely through firewalls. Visuality is a hosted application, so no customer server is required.
Although this invention has been described in certain specific embodiments, those skilled in the art will have no difficulty devising variations to the described embodiment which in no way depart from the scopα and spirit of the present invention. Moreover, to those skilled in the various arts, the invention itself herein will suggest solutions to other tasks and adaptations for other applications. For example, while the present invention has been described in terms of the apparel industry, a person of skill in the art should recognize that the invention is extensible to a large number of industries characterized by broadly distributed makers, suppliers, designers and the like.
It is therefore the applicant's intention to cover by claims all such uses of the invention and those changes and modifications which could be made to the embodiments of the invention herein chosen for the purpose of disclosure without departing from the spirit and scope of the invention. Thus, the present embodiments of the invention should be considered in all respects as illustrative and not restrictive, the scope of the invention to be indicated by the appended claims and their equivalents rather than the foregoing description. A Glossary of terms used herein are as follows:
Active Favorites - An element of the Main Client Window. Active Favorites are like favorites in Internet Explorer, with the added feature that when they appear in the Active Favorites area on the clients, they can have objects dropped on them and tool specific actions will occur. 1 Administrator - 1.) A special user recognized by the system maintainers to manipulate objects and access rights on behalf of users of the system. 2.) A role that can be assigned to a GAN User. 3.) In GAN Version 2.0, an individual within a GAN Client Company who is assigned the task of maintaining the content of trend boards, called a Trend Board
5 Administrator.
Alert - A visual and/or audible cue to the User. For example, there will be an alert when new Notifications have arrived. It will appear as an icon in the Status Area of the Client.
1 „ Area - A portion of the Main Client Window, sometimes called a pane. The four areas are: Navigator, Object, People and Search.
Arrangements - The set of all containers within the CCF Environment. One embodiment of the present inventin includes four types of Arrangements: Folders, Folios, Storyboards, and 1 - Presentations. Alternative embodiments may add two or more additional Arrangements, the Trend Board and the Color Palette.
Artwork - An Element that references an artifact or icon of design. The image can be an original painting, photograph of architecture or product, portrait, poster, swatch, strike-off, „π printed fabric, etc. Declaring an image as an Element places no restriction on how the image can be viewed or manipulated; Artwork is simply an organizational label for the Designer and a small clue to help the viewer interpret the designer's purpose.
Authentication - The process by which the system validates a User. The User must Login _. with a valid identification. Authentication persists until the user executes a Logout or the connection is interrupted.
Author - A role automatically assigned to any GAN User when they create a GAN Object. An Author can add, modify and delete things they create. They control sharing. They can add comments, read all comments and delete comments. An Author has no access to objects that they did not create if no additional access has been granted. An Author is synonymous with Owner access rights. (See, Editor)
Auto-notify - A property set on Objects such that a notification message is sent to all those
35 sharing the object when the object is modified or deleted.
Batch - An option on the Import menu.
Bit Bag - Also, bit bags. Technical slang that refers to any file or attached object that is stored or manipulated as a closed binary thing, with no attempt to determine or understand the content.
Bitmap - A bit map defines a display space and the color for each pixel or "bit" in the display space. A Graphics Interchange Format (GIF) and a JPEG are examples of graphic image file types that contain bit maps. Because a bit map uses a fixed or raster graphics method of specifying an image, the image cannot be immediately rescaled by a user without losing definition.
Calendar - One embodiment of the present invention includes a simple, non-interactive calendar to handily display the current month/day. Scheduling capability (see Date Book) inside GAN is added in another embodiment of the present invention.
Calculus For Concurrent Update (CCU) - A calculus that unifies the notions of logical time stamps together with an update history and a well-defined set of transformation rales for applying updates to shared objects. CCU describes the algorithms and their proofs for concurrent updates and collision resolution. CCU provides the theoretical basis for the sharing implemented in the GAN Environment by the CCF.
Canvas - Generic term for drawing or painting area. In GAN, Canvas describes the physical dimensions of a Storyboard. While most Arrangements in GAN expand and contract based on the amount of content, like computer windows, the Storyboard displays its contents on a Canvas of predetermined size. The Canvas is more like the Page Size in Adobe Illustrator, Page Maker, or Quark than a computer window, even though the GAN user looks at a Storyboard through a window. The background color of a Canvas can be specified. Alternative embodiments allow any image (of usable format) to be used as a background.
In one embodiment, the canvas of a storyboard will be a 4x3 aspect ration, suitable for displaying full screen or printing on landscape-oriented paper. ZOOM and SCROLL BARS will be required on the Storyboard window to accommodate different size monitors and different levels of detail.
In one embodiment, canvas size is 1.00 x 0.75 where each element is placed on the canvas by a floating-point coordinate, and every element is re-sized to a floating point size relative to the same floating point size of the canvas. The element retains its originally imported pixel size and dpi density, and is scaled on the fly relative to the floating point coordinate system, the ZOOM, the size of the space to be rendered in, and the scroll bars.
Caption - An optional block of rich text associated with each slide in a Presentation arrangement.
CCF - The Common Collaborative Framework is the body of software, hardware and network that implements the CCU and supports the GAN Environment.
CCFP - The CCF Protocol which enables communication between CCF Servers and the Clients.
CCU — Calculus for Concurrent Update.
Client - The term Client is never used alone in GAN literature as it can refer to a Company, a Desktop Application, or an internal component of the software. Most often used to refer to the Client application software.
Client Greeter - The software component of the Logical Server that communicates with incoming network requests from the Logical Client and talks to the Client Proxy and Object Agent. Its purpose is to authenticate the user and provide the user with credentials to access the GAN Environment.
Client Proxy - The software component of the Logical Server responsible for creating instances of object agents as clients arrive, and for terminating object-agent instances as clients depart. Client Reset - The method by which client-state may be reset by the client requesting and the server-proxy delivering the complete state of an object or by having the client report an older state and having the client-proxy, deliver all of the updates to the client-state that have occurred since the last known good client state. If there is insufficient history to enable an incremental update, then the server-proxy will deliver a replacement state to the client that corresponds to the current most recent state of the object.
Collaboration - To work or act jointly or in concert with others.
Collection - The name of a Folio template, created with 9 empty, pre-named rows.
Color - An Element that uses an image to define a color. Any image can be declared to be a Color. Color is only an organization label that signifies to the viewer that regardless of what this image is, there is a significant color that the Designer wants to identify.
Color Chip - An Element that represents a single color value. A color-chip is automatically produced by the GAN Color Palette Tool. In one embodiment, the color palette will be preloaded with Pantone colors and their numbers.
Color Palette - An Arrangement that creates and stores a user defined library of Color Chips. The Color Palette is a container object that includes a generator for Color Chip basic design elements and storage to hold the created palette. The Color Palette Generator includes a color wheel and a Color Sampler Applet. Color objects drag/dropped onto the CSA can be sampled and the sampled colors may be added to the user's Color Palette. Color Chips in the Color Palette items that are drag/dropped from the Color Palette into other Arrangements become individual Color Chip basic design elements.
Comments - 1.) A function of an Arrangement that solicits, collects and returns feedback about the Arrangement from users sharing the Arrangement. 2.) The feedback provided by a User or Guest who is reviewing a Published Presentation. Common Collaborative Framework (CCF) - The distributed shared object management framework that underlies the G GAN Environment.
Common Tools - Generic descriptive term for the functions available in the GAN Application interface. The four common tools are: Calendar, Search, Chat/Instant Messenger, and History.
Concept - The name of a Folio template, created with 8 empty, pre-named rows.
Concurrent - Two or more events are concurrent if they occur at the same time or appear to occur at the same time.
Connected - The state of a GAN Application being in real time communication with the GAN Servers.
Contact - Also, GAN Guest. An external User who can only access the system through the Web interface for Published Objects (in GAN VI.0, Presentations). A Contact only receives Notifications through email.
Date Book - This component of the GAN environment also called My Date Book.
Disconnected collaboration - A significant aspect of the CCF that underlies the GAN Environment. It allows disconnected, i.e. offline users to enjoy the same sharing opportunities as connected (online) users.
Description - A text field of the Information Slip used to describe an object.
Design Room - An obsolete term dropped from current GAN discussions as it had been used to refer to structures not in the current proposed implementation.
Dynamic Data Transfer Protocol (DDTP) - The protocol layer that is responsible for delivering all traffic between the client and server and is the same whether the client or server generates the request. For simplicity of implementation the CCF Transport layer is a subset of HTTP/1.1 as defined by RFC2616. Details can be found in the GAN Architecture Specification, Section 4.8.1.
Editor - A role that can be assigned to any GAN User by an Author of an Arrangement. An Editor can add to and modify an Arrangement. An Editor can delete references to Elements in an arrangement but cannot delete the Arrangement itself. An Editor can see the presence of the other users who are sharing. They can add comments and read everyone's comments. A user with the Editor role has View and Update rights; they do not have Create and Delete rights for the arrangement itself. See Author.)
Element - The fundamental object that can be recognized by the CCF Environment. GAN Version 1.0 includes seven element types: Swatch, Trim, Color, Tear Sheet, Sketch, Artwork, and Image Miscellaneous. GAN Version 2.0 will add Color Chip. Future versions of GAN may expand Element types to include text, additional image file formats and other things such as video and audio. Structurally, GAN Elements are image files (JPEG or PNG) with a single attached, non-removable collection of meta-data stored in and viewed on the Information Slip.
The Element metaphor is a photograph. It is a two-sided object with an image on the Front and notations on the back, on the Information Slip.
When closed, an Element appears as a thumbnail of the image it contains or an icon. Opening an Element displays the image in "full screen" in a new GAN window. The user may open the Information Slip for the Element independently of the Element. Elements cannot be shared individually.
Environment - Generic term for all components and technologies of CCF and GAN.
Export - The action of causing the file of the current GAN Element to be saved in the users' local file system.
Extensibility - The quality of design of the GAN Environment that allows it to be extended by adding or replacing hardware and software modules as needed to support load and increase capability.
External User - See Contact and GAN Guest.
Folder - The basic Arrangement type in the CCF Environment. It looks and acts much like a computer folder but exists only within CCF. Folders can contain any and all types of objects: Elements and all types of Arrangements.
The Folder metaphor is a box, filing cabinet or pile of random items. An item is in a Folder because that was the most convenient place to put it when it was created or acquired. An organized user or group of collaborators can use folders extensively to organize materials if they wish, but the CCF Environment neither requires nor restricts such possible use.
Folders have three attributes: Content (which can be any number of items), Sharing (the list of Users able to share the Folder), and its own Information Slip.
A Folder, when created, is empty and the user who creates it is prompted (and required) to fill out the Folder's Information Slip. Content can be added by dragging into a open or closed folder.
Folio - The second level of Arrangement in the GAN Environment. A Folio can contain Elements, Folios, Storyboards and Presentations. (Previously know as "group folder") .
The Folio metaphor is a group of organized stacks of design elements to be reviewed. An item is in a Folio because it needs to be considered in context with all the other items in the Folio.
Folios have three attributes: Content (which can be any number of items), Sharing (the list of GAN Users/Contacts able to share the Folio), and its own Information Slip.
When created, a Folio is an empty stmcture. The user who creates a Folio is offered several types of initial structure: 1. Default (no pre-named rows, the Folio contains one empty Row named "Unnamed")
2. Collection (created with 9 empty pre-named rows: theme, tops, bottoms, jackets, sweaters, wovens, knits, color, trends)
3. Concept (created with 8 empty pre-named rows: themes, ideas, trends, runway, patterns, fabrics, yam, silhouettes)
Content is added by dragging Elements, Storyboards, and Presentations into the Rows. Items in a Row remain where they are placed. There can be no unfilled positions in a Row so when items are dragged to other rows or deleted the row closes up.
When closed, a Folio is represented by a Thumbnail automatically derived from the first four images in the Folio and a numeric count of the number of items in the Folio. If items are dragged onto a closed Folio, they are placed in the first position of the first Row.
When opened, a Folio displays its content in a specific form.
A variable length list of variable length rows. Rows are only as long as the number of items in the rows. There can be no empty locations between items.
Group Folders - An obsolete term for the idea that evolved into Folios.
GAN - An overloaded word used to refer to both the Global Apparel Network as an organization and as a generic abbreviation for the software environment.
GAN Administrator - An individual within a GAN Client Company with special privileges and responsibilities to create or maintain Client-specific GAN information.
GAN Assistant - A term that refers to the GAN Help System.
GAN Client Application - A specific Java Client Application, which runs on the GAN User's personal computer. Documentation should specifically call out the full name and version number to minimize confusion during technical support discussions. GAN Client Company - An organization with a currently paid membership for one or more employees and/or contractors, each of which is a GAN Subscriber.
GAN Environment - a creative virtual workplace for the collection and distribution of product and design images and their information within the fashion industry. The collective term, which covers the entire GAN User experience whether, the tasks are performed in the Client Application or on the Servers.
GAN Guest - (Also "Contact.")An individual who is not a GAN Subscriber, who has been "invited" by a GAN Subscriber to view a Presentation at a specific URL. A Guest can access the Presentation using only an Internet Browser and does not require the GAN Client Application on his/her computer.
GAN Member - Alternate term for GAN Subscriber.
GAN Object - Any namable, manipulatable structure within the GAN Environment. The fundamental GAN Object is the GAN Element, (see Element). Arrangements are GAN Objects that contain other GAN Objects. Computer files imported into GAN must be converted into some type of GAN Object.
GAN Servers - A collective term for the remote hardware and software that communicates with the GAN Client Application. This includes the web servers, applications servers and databases and the hardware they run on.
GAN Subscribers - An individual user of GAN with a currently paid up GAN Client Company membership fee. Equivalent to GAN User or GAN Member in most contexts. Contrast to GAN Guest
GAN Resources - The set of all object types, which the GAN Environment makes available to GAN Users.
Objects - all Basic Design Elements and Arrangements Notifications and Alerts - People (Users and Teams) - all GAN Subscribers within a GAN Client Company, and
Guests.
GAN User - The short term for any GAN Subscriber, used in the documentation to simplify discussions.
GUI - Industry standard term for Graphical User Interface, a method of controlling and interacting with a computer developed by Xerox Pare on the Alto, refined by Apple on the Macintosh and adopted by Windows and other platforms.
GUID - At the time that it is created, every object in the object store is assigned a globally unique identifier (GUID). The GUJD's are unique and are never reused. Thus every object in the object store has a unique handle that can be used to locate the object. GAN will use the GUTD's from the namespace as defined and registered by Microsoft.
History - object history viewer will be implemented so that the user may see a history of updates and may use that history to undo certain updates. The amount of local history depends on parameter settings. Server side history is kept as per the top-level network policy. The user interface should be modeled on Photoshop history
HTTP - Hypertext Transfer Protocol is the basic protocol used by the World Wide Web.
Image - A picture. In GAN, the front side of an Element.
Image file - A computer file. GAN does not recognize or store image files. GAN stores Elements that can contain JPEG or PNG format files.
Image Manager - Obsolete term replaced by Import functionality in the client. Was: A tool within the GAN environment that acts to Import into GAN all the images and other computer files that become GAN Objects. The import functionality can be invoked directly from a GAN Client menu or indirectly as a result of a cut/paste or drag/drop action.
Image/Miscellaneous - An Element which doesn't fall clearly under any of the other six types: artwork, color, sketch, swatch, tear sheet, or trim.
Image Uploader - A sub-function of the earlier Image Manager concept. Replaced by Import.
IMPORT - An item under FILE in the GAN menu bar. (Replaces obsolete term, "Image Manager"
Import - (verb) To bring information, predominately image files, into the GAN Environment and turn them into Elements. GAN VI.0 expects to offer multiple ways to import image files in JPEG or PNG formats: Drag/Drop from the computer desktop into the GAN Window, Cut/Paste from another computer application (application and PC operating system must support this), from the Open File command under the GAN IMPORT menu item, and Batch. In all cases, before GAN creates the Element that will hold the image, the user is prompted to select an element type and to fill out the minimum required information on the Information Slip for the element type chosen
Information Pane - a user interface component consisting of a tab folder control containing pages for Information Slip, Sharing properties, Comments and other object specific information fields, such as in Captions for Presentations.
Information Slip - The client visible attributes (name=value pairs) of an Object. Referred to as "the information on the back" of the object. Used to enhance the communication and purpose of a GAN object. Also a user interface component consisting of a set of attributes which typically appear in the Information Pane.
Inherited Access - The method used to initialize the default access rights of objects in the GAN security model.
Instant Messaging - In the sense of AOL/MSN Instant Messaging or Jabber, the ability of GAN Users to communicate among themselves while online.
Item - A generic' term to refer to one of several types of things that may be collected 1 together. A Menu has items. The GAN Objects in a Row of a Folio can be called "items in the row."
JSP - Java Server Pages offer Web developers a compelling alternative to traditional server- 5 side scripting languages like Perl, PHP and ASP.
Keywords - A field on the Information Slip of Elements and Arrangements, populated with key word text by the user to be specifically available for searching for the Element or Arrangement by key words.
10
Key-value pair - A data structure utilized to store information.
Locked Presentation: The GAN system's equivalent of copy protection. A presentation whose access has been restricted by its Lock status . Only the Author of a Presentation can 15 Lock it. By locking, the author makes the copying or duplicating of the Presentation as a whole or any of the Elements and or Arrangements within it by the Users or Guests that have been presented or shared the presentation.
Login/Logout - The process of User authentication.
20
Main Client Window - The top-level user interface (UI) into the CCF Environment. It is created and maintained by the GAN Client. The layout of the Main Client Window is divided into areas: Navigation, Object, People, Menus, Toolbars and Status.
,- » Me - The initial value of People attached to any potentially sharable Object when it is created.
Menu - A component of the User Interface. Typically a windows menu bar or context "right mouse click" menu.
30
Meta-data - Metadata or "data about data" describe the content, quality, condition, and other characteristics of data.
My Company - The topmost folder of a CCF corporate server. Folders that are shared across
35 teams are usually placed under this folder in a project based or repository based hierarchy.
My Projects - The topmost folder created for every user. It is by default shared to the user as Author and is therefore a private space. It is the default place into which images are imported.
Navigator - A pane in the Client Application that shows all resources available to the User in the GAN Environment, including people, private and shared objects in the user's workspace. Not to be confused with the Netscape Navigator browser or Windows Navigator although they all have similar behavior.
Notification - An automatic, one-way channel from the network to a user informing the user that activity has occurred affecting Objects shared with them. Notifications may also be used as a one-way channel of communication to send a short message to a user, as in email for example that have no association to a shared object or arrangement.
Object - Any namable, manipulable structure within the CCF Environment. Anything imported into CCF must be converted into some type of Object. (See also Element, Arrangement and GAN Object.)
Object Agent - An object agent is responsible for instantiating an object and making the object data and its meta-data available to one or more clients. Clients share an object by sharing access to its object agent. The object is then said to be instantiated by the object agent.
Offline - Industry standard term for the state of being disconnected from a computer network.
Online - Industry standard term for the state of being connected to a computer network.
Pane - A generic term for any of the independent areas of the user interface.
People- 1.) The body of persons enfranchised by being GAN Subscribers, GAN Guests, or potential members of these groups. 2.) An area of the GAN Main Window. 3.) Teams are groups of People.
Polling - The method of collecting data from a device, terminal or software module by requesting input on a regular cycle. The alternative is "interrupt driven" input initiated by the sender.
Presentation - An Arrangement of items (Elements, other Arrangements, and text) in a stream for the purpose of informing an audience. A Presentation is composed of any number of items displayed sequentially in a predetermined order..
The Presentation metaphor is a flip chart or slide show.
Presentation Narrative - The set of narrative text placed in the captions of the slides in a Presentation.
Presentations - A special folder where published presentations are placed by default. Items in the Presentations folder are also available to non-GAN users via the web if given access.
Published Presentation - A duplicate or snapshot of a Presentation. A Published Presentation is readable by both GAN Subscribers and GAN Guests. Anyone who is invited to read a Publication is able to add Comments to the Presentation as a whole and any individual slide within the Presentation.
Publish - The act of freezing an object's state at a point in time by making an entirely new copy of it and all its components, and restricting all modifications to it. Any CCF object can be theoretically published. However GAN Version 1.0 will provide a limited set of tools for published objects.
Quick Image Editor Tool - GAN's internal, minimal graphic tool that can perform simple edits on the image stored in an Element. In GAN V1.0, the Quick Image Editor can crop, resize, scale, rotate, draw on an element's image, replace the elements image using import functionality and edit the Information Slip. This tool actually modifies the image in an Element. Technology with a similar look and feel will be used within Storyboards and Presentations to resize and crop the appearance of an Element locally in that Arrangement.
Reviewer - A role assigned to any GAN User by an Author. A Reviewer can view and add comments to an Arrangement or the elements inside it. They can see the names of the other users who are sharing. They can add comments and read everyone's comments. (See: Author, Editor, Viewer.)
RGB- One of several color models used in printing and computer engineering. Literally Red Green Blue.
Role - GAN V 1.0 implements four roles within the application security model: Author, Editor, Reviewer and Viewer.
Scalability - The quality of design of the GAN Environment that allows it to be extended to accommodate additional load by adding or replacing hardware and software modules without reaching an unreasonable theoretical limit or unacceptable costs for future increments.
Search - A functional pane within the user interface for searching within the Environment.
Search criteria - The specification of items to search for, logical AND/OR and result return order of a search.
Security - GAN security is maintained by authenticating the end-user to allow access. (Note: GAN VI.0 does not support encrypted communication between the client and the server.)
Sessions - Sessions begin when a user-client connects by first authenticating itself, establishing credentials (Login), and then opening a client session with one or more client proxies. Sessions end when the client does a Logout or the connection is lost. The collection of connections to client proxies is the client session. It lasts as long as the client is connected to at least one client proxy. The client proxy provides all of the necessary server side state to instantiate its portion of a client session. This state consists of connection and pipeline information, and information about the object agents that the proxy is exposing to the client. Sessions are dynamic and represent the sum of the activity being performed by a client. They are stateless and are created and tom-down as the clients come and go.
Sharing - Sharing allows multiple users to access and manipulate the same Object. Multiple users can simultaneously create, read, update and delete the contents of an Object depending upon their permission. CCF is designed to share Objects and in fact even during the initial creation of an object, what actually happens is the Object is created then immediately shared to the creating user with the permissions of Author, therefore no other user can see the object until the Author shares the Object with them.
Shared Projects Default folder that exists in each user's Navigator pane. The shared projects folder is the default container for any shared arrangement and or object upon sharing, unless otherwise specified by the author/sender at the time of sharing.
Sketch - An Element whose image is any type of sketch art. Declaring an image, as an Element places no restriction on how the image can be viewed or manipulated; Sketch is simply an organizational label for the Designer and a small clue to help the viewer interpret the designer's purpose.
Status Bar - The area at the bottom of the Main Client Window that displays overall client and too-specific information.
Store - The collective term for the structure of databases that hold all information on the
Servers.
Storyboard - An Arrangement of items (Elements and text) in a collage for the purpose of conveying an idea. A Storyboard is composed of any number of items displayed on a background. The size of the Storyboard window is the size of the Canvas specified when the
Storyboard was created. The background color can also be set. Storyboards have three attributes: Content (which can be any number of items),
Sharing (the list of GAN Users able to share the storyboard), and its own Information Slip.
Elements in a Folder or Folio are represented by their thumbnail icons. In a Storyboard, Elements are always opened and viewed as their underlying image elements in a form determined by the Designer using the Resize, Crop tools and by placing the image on the Canvas.
Storyboards can also display text as a compositional element of the collage. Text fields are considered Titles or Captions depending on their use.
Swatch -An Element that specifies an image of a fabric sample. The image is typically a color digital photograph or color scan of an actual fabric. The Information Slip for a Swatch Element includes additional material to identify the Mill and physical characteristics of the fabric. Generic: a fabric sample.
Team - A Team is an Arrangement of People. People often work in teams, and it convenient to group them so they can be referred to as a team. Users can be on multiple teams
Tear Sheet - An Element whose image was collected by a Designer from a published source such as a magazine or catalog, or at least an image that fills that purpose.
Thumbnail - A miniature rendering of a larger image
Title - In a Storyboard, a Title is a bit of text used as part of the artistic composition of the layout. In a Presentation, a Title is a Position containing text instead of an Element. See also, Presentation Narrative.
Tool - The active components of the CCF environment. Tools create, delete, modify and relocate (move) Objects. GAN includes both Menu item tools and contextual tools.
Toolbar - A component of the User Interface, in the Main Client Window. The leftmost toolbar is the common toolbar. The rightmost is specific to the current tool.
Trend Board - A special type of Storyboard, which is read only by all GAN users in an organization. Only the Trend Board Administrator may create/write trend boards. An organization may have as many trend boards as they wish or none at all. Users should think of it as a company library of forecasted colors, trends, and basic design Elements.
Trim - An Element whose image is of frills, buttons, bows or other accessories. Any image can be declared to be Trim. Trim is only an organization label that signifies to the viewer that regardless of what this image is, there is a piece of trim or something that could be used to make some trim that the Designer wants to identify.
User - Anyone accessing the Environment through the Client Application. A GAN User or GAN Subscriber. Contrast with GAN Guest.
Viewer - Viewer is an overloaded term in GAN with multiple meanings. 1.) A user role in the GAN access security model. 2.) A collective term for users with the Viewer role. 3.) A software component; each object has an associated viewer.
A role assigned to any GAN User by an Author of an arrangement and or folder. A
Viewer is defined as a user who can view, add comments, read their own comments and read the author's comments to a shared arrangement. If others have been given access to the same arrangement by the author, the Viewer only sees the Authors comments and presence and sees no others.
Views - The user can view the same Object on their computer screen in different ways, depending upon the tools being used, the format selected and context the user is in.
Viral - The distribution model where the users themselves are in a position to aid the growth of the network by inviting their customers and business partners whether or not they are GAN subscribers. The architecture supports this activity in two key fundamental ways: it will not be difficult to extend the system to add additional interfaces to systems external to GAN; and, it's easy to extend the hardware platform to accommodate additional user load.
Wizard - Alternative embodiments may utilize Wizards (helpers) to help the user specify searches and create GAN objects such as Folios. The system does support a number of default Folios and such to help a user get started. The use of wizards is used to communicate the various roles within GAN. Workspace - A workspace is a logical partitioning of a collection of computer data that can be shared. The CCF will use workspaces to implement its collaborative technology. Rather than their data existing in a fixed workspace, it can be thought of as existing somewhere in the world yet is easily available and secured.
World - The topmost folder representing all the users and CCF data in the world. The user will be made to feel like they can share their work with anyone in the world.
Z-order - The sequence of items on the z-axis in a GUI or display.
Z-order Tools - A collective term for the Move Front, Move Back, Move Forward and Move Backward commands in a Storyboard that determine how images overlap in a collage.
Zoom - a control in the client that changes the scale of visual information in a window, such that the user is completely in control of the size of the visual image on their computer screen.

Claims

^ Claims:
1. A collaboration system comprising: a server; a plurality of client terminals coupled to the server, characterized in that a first client terminal and a second client terminal collaborate in concurrently modifying a visual object, wherein the modifications are reviewed for conflict resolution and applied to the visual object in real time based on the conflict resolution.
10 2. A collaboration system comprising: a first computerized tool coupled to a first user terminal for manipulating a visual object; means for selecting at the first user terminal a share recipient for the visual object; means for transmitting the visual object to a second user terminal accessible to the
15 share recipient; a second computerized tool coupled to the second user terminal for modifying data associated with the transmitted visual object; means for transmitting the modification to the first user terminal; 0 means for automatically correlating the modification to the visual object; and means for presenting the visual object with the correlated modification at the first user terminal.
5 3. The system of claim 2 further comprising means for selecting access rights of the share recipient to the visual object.
4. The system of claim 2, wherein the visual object is associated with metadata, and the modification is a modification of the metadata. 0
5. The system of claim 2, wherein the modification includes generating a comment about the visual object.
5
6. The system of claim 2 further comprising: means for receiving feedback about the visual object; and means for con-elating the feedback to the visual object.
7. A computerized method for collaboration comprising: invoking at the first user terminal a first computerized tool for manipulating the visual object; selecting at the first user terminal a share recipient for the visual object; transmitting the visual object to a second user terminal accessible to the share recipient; invoking at the second user terminal a second computerized tool for modifying data associated with the transmitted visual object; transmitting the modification to the first user terminal; automatically correlating the modification to the visual object; and presenting the visual object with the correlated modification at the first user terminal.
8. The method of claim 7 further comprising selecting access rights of the share recipient to the visual object.
9. The method of claim 7, wherein the visual object is associated with metadata, and the modification is a modification of the metadata.
10. The method of claim 7, wherein the modification includes generating a comment about the visual object.
11. The method of claim 7 further comprising: receiving feedback about the visual object; and automatically correlating the feedback to the visual object. ι
12. A computerized method for collaboration comprising: electronically associating comments with a visual object; sharing the visual object with the comments with a share recipient; receiving updated comments from the share recipient; automatically correlating the updated comments with the visual object; and presenting the visual object with the updated comments.
13. The method of claim 12, wherein the sharing comprises transmitting the visual 10 object with the comments over a computer network.
14. A collaboration system substantially as hereinbefore described with reference to the accompanying drawings.
15
15. A computerized collaboration method substantially as hereinbefore described with reference to the accompanying drawings.
0
5
0
5
PCT/US2003/024695 2002-08-07 2003-08-07 Multi-user collaboration system and method WO2004015897A2 (en)

Priority Applications (11)

Application Number Priority Date Filing Date Title
AU2003256867A AU2003256867A1 (en) 2002-08-07 2003-08-07 Multi-user collaboration system and method
US11/053,235 US7426693B2 (en) 2002-08-07 2005-02-07 Visual communications tool
US12/012,279 US20120290944A9 (en) 2002-08-07 2008-02-01 Visual communications tool
US13/194,905 US20120060102A1 (en) 2002-08-07 2011-07-29 System and method for visual communication between buyers and sellers
US14/083,424 US20140081808A1 (en) 2002-08-07 2013-11-18 System and method for visual communication between buyers and sellers
US14/540,022 US10367763B2 (en) 2002-08-07 2014-11-12 Visual communications tool
US15/043,469 US10699245B2 (en) 2002-08-07 2016-02-12 System and method for visual communication between buyers and sellers
US15/284,533 US10474999B2 (en) 2002-08-07 2016-10-03 System and method for visual communication between buyers and sellers
US16/525,359 US20190356618A1 (en) 2002-08-07 2019-07-29 Visual communications tool
US16/883,939 US20200356954A1 (en) 2002-08-07 2020-05-26 System and method for visual communication between buyers and sellers
US17/576,792 US20220158959A1 (en) 2002-08-07 2022-01-14 Visual communications tool

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US40180602P 2002-08-07 2002-08-07
US60/401,806 2002-08-07

Related Child Applications (2)

Application Number Title Priority Date Filing Date
US11/053,235 Continuation-In-Part US7426693B2 (en) 2002-08-07 2005-02-07 Visual communications tool
US11/053,235 Continuation US7426693B2 (en) 2002-08-07 2005-02-07 Visual communications tool

Publications (2)

Publication Number Publication Date
WO2004015897A2 true WO2004015897A2 (en) 2004-02-19
WO2004015897A3 WO2004015897A3 (en) 2004-06-24

Family

ID=31715738

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2003/024695 WO2004015897A2 (en) 2002-08-07 2003-08-07 Multi-user collaboration system and method

Country Status (2)

Country Link
AU (1) AU2003256867A1 (en)
WO (1) WO2004015897A2 (en)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1300691C (en) * 2005-01-10 2007-02-14 浙江大学 Predicting method for system lock in pattern coordinate design
WO2007079587A1 (en) * 2006-01-13 2007-07-19 Diginiche Inc. System and method for collaborative information display and markup
US7908178B2 (en) 2004-05-04 2011-03-15 Paul Nykamp Methods for interactive and synchronous displaying session
US8818935B2 (en) 2011-11-21 2014-08-26 Fluor Technologies Corporation Collaborative data management system for engineering design and construction projects
US9170989B2 (en) 2006-06-15 2015-10-27 Social Commenting, Llc System and method for facilitating posting of public and private user comments at a web site
US9495522B2 (en) 2014-09-03 2016-11-15 Microsoft Technology Licensing, Llc Shared session techniques
US20170068448A1 (en) * 2014-02-27 2017-03-09 Keyless Systems Ltd. Improved data entry systems
US10552797B2 (en) 2015-03-13 2020-02-04 Gemba Software Solutions Inc. Procedure flow administration system and method
US11082302B2 (en) 2014-09-19 2021-08-03 Impetus Technologies, Inc. System and method facilitating reusability of distributed computing pipelines
CN113407230A (en) * 2021-06-04 2021-09-17 中船重工奥蓝托无锡软件技术有限公司 Intelligent main model management system based on data driving
CN113674039A (en) * 2020-05-13 2021-11-19 意创坊国际股份有限公司 Knitted design and production system and method thereof
CN115706811A (en) * 2021-08-17 2023-02-17 上海幻电信息科技有限公司 Data processing method and device
CN115706809A (en) * 2021-08-17 2023-02-17 上海幻电信息科技有限公司 Resource processing method, device and system based on multi-person cooperation
CN117557240A (en) * 2024-01-11 2024-02-13 成都泰盟软件有限公司 Method, system, device and storage medium for reading jobs

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5309555A (en) * 1990-05-15 1994-05-03 International Business Machines Corporation Realtime communication of hand drawn images in a multiprogramming window environment
US5515491A (en) * 1992-12-31 1996-05-07 International Business Machines Corporation Method and system for managing communications within a collaborative data processing system
US5649104A (en) * 1993-03-19 1997-07-15 Ncr Corporation System for allowing user of any computer to draw image over that generated by the host computer and replicating the drawn image to other computers
US5694544A (en) * 1994-07-01 1997-12-02 Hitachi, Ltd. Conference support system which associates a shared object with data relating to said shared object

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5309555A (en) * 1990-05-15 1994-05-03 International Business Machines Corporation Realtime communication of hand drawn images in a multiprogramming window environment
US5515491A (en) * 1992-12-31 1996-05-07 International Business Machines Corporation Method and system for managing communications within a collaborative data processing system
US5649104A (en) * 1993-03-19 1997-07-15 Ncr Corporation System for allowing user of any computer to draw image over that generated by the host computer and replicating the drawn image to other computers
US5694544A (en) * 1994-07-01 1997-12-02 Hitachi, Ltd. Conference support system which associates a shared object with data relating to said shared object

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7908178B2 (en) 2004-05-04 2011-03-15 Paul Nykamp Methods for interactive and synchronous displaying session
US8069087B2 (en) 2004-05-04 2011-11-29 Paul Nykamp Methods for interactive and synchronous display session
US8311894B2 (en) 2004-05-04 2012-11-13 Reliable Tack Acquisitions Llc Method and apparatus for interactive and synchronous display session
CN1300691C (en) * 2005-01-10 2007-02-14 浙江大学 Predicting method for system lock in pattern coordinate design
WO2007079587A1 (en) * 2006-01-13 2007-07-19 Diginiche Inc. System and method for collaborative information display and markup
US8762856B2 (en) 2006-01-13 2014-06-24 Reliable Tack Acquisitions Llc System and method for collaborative information display and markup
US9170989B2 (en) 2006-06-15 2015-10-27 Social Commenting, Llc System and method for facilitating posting of public and private user comments at a web site
US8818935B2 (en) 2011-11-21 2014-08-26 Fluor Technologies Corporation Collaborative data management system for engineering design and construction projects
US20170068448A1 (en) * 2014-02-27 2017-03-09 Keyless Systems Ltd. Improved data entry systems
US10866720B2 (en) * 2014-02-27 2020-12-15 Keyless Systems Ltd. Data entry systems
US9495522B2 (en) 2014-09-03 2016-11-15 Microsoft Technology Licensing, Llc Shared session techniques
US11082302B2 (en) 2014-09-19 2021-08-03 Impetus Technologies, Inc. System and method facilitating reusability of distributed computing pipelines
US10552797B2 (en) 2015-03-13 2020-02-04 Gemba Software Solutions Inc. Procedure flow administration system and method
US11210634B2 (en) 2015-03-13 2021-12-28 Gemba Software Solutions Inc. Procedure flow administration system and method
CN113674039A (en) * 2020-05-13 2021-11-19 意创坊国际股份有限公司 Knitted design and production system and method thereof
CN113407230A (en) * 2021-06-04 2021-09-17 中船重工奥蓝托无锡软件技术有限公司 Intelligent main model management system based on data driving
CN113407230B (en) * 2021-06-04 2023-09-29 中船奥蓝托无锡软件技术有限公司 Intelligent main model management system based on data driving
CN115706811A (en) * 2021-08-17 2023-02-17 上海幻电信息科技有限公司 Data processing method and device
CN115706809A (en) * 2021-08-17 2023-02-17 上海幻电信息科技有限公司 Resource processing method, device and system based on multi-person cooperation
WO2023020092A1 (en) * 2021-08-17 2023-02-23 上海幻电信息科技有限公司 Multi-person collaboration-based resource processing method, apparatus and system
WO2023020091A1 (en) * 2021-08-17 2023-02-23 上海幻电信息科技有限公司 Data processing method and apparatus
CN117557240A (en) * 2024-01-11 2024-02-13 成都泰盟软件有限公司 Method, system, device and storage medium for reading jobs
CN117557240B (en) * 2024-01-11 2024-04-02 成都泰盟软件有限公司 Method, system, device and storage medium for reading jobs

Also Published As

Publication number Publication date
AU2003256867A8 (en) 2004-02-25
WO2004015897A3 (en) 2004-06-24
AU2003256867A1 (en) 2004-02-25

Similar Documents

Publication Publication Date Title
US11789930B2 (en) Method and apparatus for a file sharing and synchronization system
US9984358B2 (en) Managing team mailbox integrating email repository and content management store services
US7346656B2 (en) Asynchronous, networked publication and collaborative communication system
US20020138582A1 (en) Methods and apparatus providing electronic messages that are linked and aggregated
US20040141005A1 (en) System and method for integrating online meeting materials in a place
WO2001025919A2 (en) Architectures for netcentric computing systems
AU2004213986A1 (en) Semantic knowledge retrieval management and presentation
AU2001268674A1 (en) Distributed computing services platform
WO2001098936A2 (en) Distributed computing services platform
EA008675B1 (en) System and method for knowledge retrieval, management, delivery and presentation
US20030037100A1 (en) Streamlined data distribution system for commercial applications
WO2004015897A2 (en) Multi-user collaboration system and method
WO2010046526A1 (en) Method, system, and apparatus for process management
US11550551B2 (en) Method for establishing social network and storage medium thereof
US20090210512A1 (en) System, method, and program product for creating and sharing digital image output data across a network
US20050165888A1 (en) Peer-to-peer data binding
WO2004040873A2 (en) Multistage network computer architecture, with user-centered remote operating system
EP1421479A2 (en) Distributed computing services platform
US20070050450A1 (en) Interfacing an applet with a collaboration program
WO2016000593A1 (en) Method for establishing social network and storage medium thereof
Baasch et al. Group collaboration in organizations: architectures, methodologies and tools
Kwan Personalized multimedia news agents in a broadband environment.
Lundgren Bjuhr Centralize (media) file sharing within organizations: Design guidelines
Sadun The iOS 5 Developer's Cookbook: The Additional Recipes: Additional Recipes Found Only in the Expanded Electronic Edition

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 11053235

Country of ref document: US

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase in:

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP