The Source for Java Technology Collaboration


Users | Groups | Changes | Index | Search | Go

Colin M. Bullock


About Me

  • Name: Colin M. Bullock
  • Java.net ID: cmbullock
  • Email: cmbullock AT gmail.com
  • Web: http://www.cmbullock.com
  • Location: Chicago, IL, USA

  • Occupation: Student / Systems Admin / Contract Developer / Tinkerer
  • School: Harold Washington College
  • Area of Study: Pure Mathematics

  • Skills
    • Java 5, Swing/AWT, J2EE?, Servlets/JSP, JDBC, JAXP
    • XML, XSLT, XSL:FO, XPath, DOM/SAX
    • Apache Tomcat, JBoss
    • Linux Administration, Shell Scripting
    • Networking, DNS, Samba, Apache James

  • Interests
    • Number Theory and Complex Analysis
    • Machine learning in games of incomplete information (ie. teaching computers to play poker)
    • Generics, templates and component-based design
    • French

I am a second year math student, living in Chicago. My main course of study is pure mathematics. After this coming year, I intend to transfer to the University of Chicago, pursuing a degree in complex analysis and number theory. In addition to being a student, I currently work as a systems admin, and perform occasional contract development work. My last major project was a custom dispatch and enterprise management system for a courier company. My programming and development skills are almost entirely self-taught. I enjoy experimenting with new technologies and playing with new concepts and ideas.


Summer of Code 2005 Proposal

Project Looking Glass: 3D Start Menu (Subject #102)

Synopsis

This project will provide a highly configurable, 3D Start Menu for the Lg3d desktop environment.

The start menu is one of the most fundamental components in our concept of a desktop environment. For many users, it is their only window to the maze of applications and files stored in their computer. Since the advent of the graphical desktop environment, the start menu has seen very little in the way of evolution. Providing little more than a flat representation of the underlying directory structure, the current concept of a start menu is only navigable after years of practice and habit. Like any ordered and organized system, as the complexity grows, the natural tendency without external maintenence is towards chaos and disorder. As one installs more applications, it takes increasingly longer to find the desired application and requires more effort to manage them all. The expenditure of this additional time and effort has no bearing on or relevance to the task at hand.

Now, in the open space of an Lg3d desktop, new possiblities appear for the start menu. Users are no longer trapped in a flat environment. Movement through this digital world has taken a step forward, towards more fluid and instinctive motion. Navigation though and execution of one's applications should follow in the same manner. Users should be released from the constraints of 2D menus and directories, free to organize and roam through their start menus as they see fit and find natural. This will be the main design principle of the project: to cleanly separate the way the data in the start menu is stored and the manner in which it is displayed.

Objectives

  • Simple Organization: Applications should be organized in a simple and intuitive manner. The precise system of organization should be as highly customizable as possible, allowing end users to specify their preferences in a simple configuration format.
  • Natural Navigation: The start menu should be designed in such a way so as to allow a user to traverse the structure in a natural and fluid manner.
  • Pluggable 3D Models: Given the diversity of end users and the wide array of personal tastes, the start menu should provide a separation between the underlying structure of the menu and the 3D model used for display and interaction.

Deliverables & Schedule

Deliverables
  • User Interface 3D Design Models
  • Use Case Document
  • Class Diagrams
  • Implementation
  • Testing & Debugging
  • API Documentation

Schedule

  • 10 Jun 2005: Complete and submit proposal
  • 24 Jun 2005: Ongoing discussions with the community about desired functionality
  • 01 Jul 2005: Complete use case and class diagrams
  • 31 Jul 2005: Finalize API and complete initial implementation
  • 31 Aug 2005: Complete testing and debugging cycle via the issue tracker with the assitance of the community in locating and identify bugs
  • 01 Sep 2005: Final release

Detailed Description

To acheive the separation between the way the user perceives and navigates the menu and the method by which the menu items are stored, the start menu will be divided into two main components:

  • StartMenu: The main component, which handles item storage, sorting of items into related groups, mapping between groups and execution of applications
  • StartMenuModel: This component handles rendering and display, traversal of the underlying menu, and user interaction events

The StartMenu component will provide the underlying implementation for the storage and management of menu items. This component will be responsible for the basic data storage operations, such as adding or removing menu items, moving items from one location to another, and storing and editing individual item properties (icon, path, arguments, etc.). In addition, this component will define a mechanism for associating items into related groups or categories, and defining paths between such groups. This mechanism will be general enough to allow users to logically "build" their menu in the style that they find most sensible and accessible.

The StartMenuModel component will be the portion of the application responsible for rendering and managing the user interface to the start menu. This component will provide a well-defined, abstract interface to generic menu actions and events. The model wil be responsible for dispatching events between the user interface and the data structure, and individual model implementations will be responsible for actually handling and responding to the environment. This will allow for a wide variety of 3D user interfaces to be implemented, following simple and well defined design guidelines, which can be "plugged-in" or even switched on the fly. In the same way that a user can "build" their menu according to their own logic, users will be able to perceive and interact with their menu in the manner they find most natural and comfortable.

In addition to being easily customized based on users tastes, this separation of implementation and interface will allow the start menu to grow and change over time, without intensive changes to the codebase. This will enable the start menu to keep pace as the widget set for Lg3d is developed and expanded in the future. One of the biggest challenges in designing an effective and efficient start menu is our relative naïveté with this new 3D world. When someone announces that the world is indeed not actually flat, it takes some time for perceptions to shift and new ideas to emerge. By designing the start menu with a pluggable interface component, it won't be tied to a particular implementation, and will be able to evolve as understanding of this environment deepens and new design idioms develop.


SoC Project Status

  • 20 Jul 2005: Initial version checked into to cvs. Orbital-type 3D model completed.
  • 22 Jul 2005: Updated to use Lg3d event system for configuration
  • 24 Jul 2005: Added support for custom icons/mini-apps for menu items
  • 27 Jul 2005: Tenative integration with scenemanager completed
  • 08 Aug 2005: API updates and refinements
  • 16 Aug 2005: Completed alternate Panel-style 3D model
  • 21 Aug 2005: Initial Disc-style 3D model completed
  • 31 Aug 2005: Multi-scene support integrated
  • 01 Sep 2005: SoC Final Code committed to cvs
  • TODO: Support graphical editing and configuration of menu


Start Menu Screen Shots

Topic ColinMBullock . { Edit | Ref-By | Printable | Diffs r16 < r15 < r14 < r13 < r12 | More }
 XML java.net RSS

Revision r16 - 14 Sep 2005 - 20:08:38 - ColinMBullock
Parents: TWikiUsers