![]()

![]()
Project Proposal
Date: February
2, 2001
Members: Bryan Accosta
Steven Hines
Anteneh
Kefale
James Kirk
Eskendir
Mulugeta
Ronald Pasko
Gordan Raic
Jeff Szekely
Bart Wyatt
The overall objective of this IPRO is to develop a window manager for the ‘X’ windows
operating environment. This primary objective is only achievable if further broken down into steps. Thus, we have defined several “secondary goals” which, when achieved, will bring this multi-semester project closer to completion. These secondary objectives are, as follows:
![]()
![]()
1. The existing architecture demands a more secure foundation that will provide a basis on which to greatly expand functionality. This foundation must inhabit a modular, object orientated environment that is conducive to its expansion by potential developers.
2. The program must offer a simple, yet robust, three-dimensional Windows environment that will ensure stability under even the most demanding of test cases.
3. This program must support a network of stable terminals that will be integral to the success of this program.
4. To augment the functionality and ease of use of the three-dimensional Windows environment, it is necessary to utilize the Microsoft wheeled mouse for navigation and manipulation of the environment.
5. The website must be restructured so that it exhibits professionalism in its presentation and organization. Because this is an open source project, its life-span depends on its ability to attract interest of many prospective developers.
6. Functionality must be added to the existing “window” objects. This implementing rotation about the x and y axes, the ability to move and rotate individual objects, and correct placement of windows.
7. Progress must be made towards the implementation of real windows, rather than “window-type” polygons. Associated with the development of usable windows is the implementation of a central control menu through which all windows, as well as the environment, may be manipulated.
8. The project must move towards implementing Open GL display lists through which common window constructs (buttons, the window frame, etc) may be uniformly drawn.
9. An algorithm for window selection must be implemented which will overcome the difficulty of selecting an object in a three-dimensional environment using a two-dimensional interface.
10. User-customizable configuration files should be
implemented into dimension to give the environment needed versatility. Most X-Windows managers avoid “hard-coding”
environment features.
![]()
IPRO team 370 is currently undertaking the development of a Windows Manager that will run on a Linux platform. This implementation distinguishes itself from most other Window Mangers insofar that it will do its rendering in real-time OpenGL. The mainstream protocol for making Window Managers for a Linux system is known simply as “X.”
The
Linux operating system was created by Linus Torvalds, modeling it after the
MINIX pla tform. He began development
in 1991, having released version 1.0 by 1994.
Linux, today, stands among operating systems as a symbol of stability, a
benchmark by which all other operating systems are compared.
Perhaps
one of the strongest arguments for using Linux for a project of this nature is
that Linux is “open.” This means that
for the entire base system, which includes the kernel, the GNU tools, each of
the basic utilities have their source own code available to view and
analyze. This allows the opportunity
for us to modify it to our specific needs.
An important aspect of open software is the ability to write kernel
extensions and drivers as needed. This
is vital for supporting new hardware and technologies, which is a major segment
of this project.
Linux
is also available to anyone at no cost.
Acquiring a working copy of Linux for each of the team members,
therefore, carries no price tag. This
allows the project team to divert funds to other needed areas. In addition to Linux being free, each of the
tools that are native to Linux (which are vital to this project effort) are
also available at no cost and without licensing requirements
Linux
is, again, one of the most stable platforms available today. This is primarily attributed to the fact
that it is “designed by computer programmers for computer programmers.” Having a stable operating system to develop
for will ensure that any errors which may crop up during the course of this
project’s development will be attributable to our source code and architecture,
not due to shortcomings of the selected operating system. Furthermore, since all of the work done for
this project will be performed on Linux-based computers (with a few exceptions)
it is absolutely vital that the operating system be reliable in order to save
time and frustration.
The
X Protocol was developed in the mid-1980’s to meet the need for a network
transparent graphical user interface for POSIX systems. X provides for the display and management of
graphical information. What
distinguishes the X Protocol from other graphical user interfaces is its
inherent structure. Whereas most
graphical user interfaces simply display graphical applications local to the
PC, the X Protocol distributes the processing of applications by specifying a
client-server relationship at the application level. The X Client performs most of the necessary functions of the
application while the X Server, or display, determines how these functions
should be carried out. The benefit of
this architecture is the provision of a true client-server and distributed
processing.
The
reason to use the X Protocol is, like Linux, that it is open source. This
protocol can then be modified it to suit our needs. X is also the authority for making graphical user interfaces for
posix systems.
OpenGL,
which stands for OPEN Graphics Library, was developed by Silicon Graphics
Incorporated and now is maintained by the OpenGL Architecture Review
Board. OpenGL simply interfaces with
graphics hardware. It is the premier
option for the development of useful, attractive, and stable 2D and 3D
interactive environments. Since its
introduction in 1992, OpenGL has become the industry standard graphics
application interface programming.
OpenGL fosters innovation and promotes efficient development by
incorporating a wide variety of rendering, texture mapping, and other powerful
visualization functions.
We
are using OpenGL as our choice of graphics API for several reasons. Due to its stature as an “industry
standard,” OpenGL is supported by nearly all modern graphics hardware. OpenGL is also an extremely stable
library. Much like Linux (our choice of
operation system), it is absolutely vital that our design and implementation is
as flawless as humanly possible.
Inherent instabilities in the graphical interface libraries would be
catastrophic to the development and growth of this project.
OpenGL,
despite is impressive power, is very easy to learn and use. This saves the IPRO team valuable time in
the training of its members. The
libraries are well maintained and well documented, leading to optimized code in
shorter amounts of time, producing better overall product.
![]()
![]()
In a software development project as complex as the Open GL “X” Windows Manager, the most efficient way to achieve the specified objectives in the limited time allotted is, obviously, to delegate tasks. Unlike previous semesters, however, the tasks to not break evenly into clear-cut categories. Instead, the following tasks will be delegated to team members based on performance, knowledge, and preference as the semester progresses:
Task Tentative Assignment
Window Selection Jeff Szekely
Window Object Attribute Augmentation (rotation, etc) Bart Wyatt
Window Development James Kirk
Ronald Pasko
Misc. 3D Class Development Bryan Accosta
Anteneh Kefale
Eskendir Mulugeta
Gordan Raic
General Bug Trouble-shooting Steve Hines
Website Renovation As
assigned
Configuration Files Steve Hines
![]()
During
this semester we expect
to accomplish, not only our specified goals as a team, but also hope to affect the course of future window-management endeavors across the computing industry. Some of these results include:
·
A
more efficient application with more stable data structures and minimal
overhead.
·
To
lead the computing industry into a new, three-dimensional outlook toward
window-management. At present time, the
newest, most popular windows-based operating systems all have the same
two-dimensional look and feel. We hope
that by introducing our project into the industry, it can be shown that a
three-dimensional approach can be much more elegant and impressive.
·
Implementation
of a fully usable, three-dimensional window that not only accepts user input
and display standard applications, but also rotates and changes the window
contents to match.
·
Creation
of an elegant and practical user interface complete with “sensible” a window
selection algorithm, easily accessibly menu, and customizable configuration
files.
·
To
attract other engineers towards designing more realistic, three-dimensional,
“user-friendly” software. By
introducing a new three-dimensional window manager we hope that others will be
inspired to further investigate the potential for other applications being
created in a three-dimensional environment.
![]()
![]()
Based on the set list of objectives, IPRO Team #320 has created the following tentative calendar:
Effective project weeks: 11
|
Week |
Date |
Task(s) |
|
1 |
1/29 - 2/04 |
Code Review, training, design |
|
Proposal due 2/2/01 |
||
|
2 |
2/05 - 2/11 |
New Feature Design |
|
3 |
2/12 - 2/18 |
New Feature Design |
|
4 |
2/19 - 2/25 |
Design Implementation &
Testing |
|
5 |
2/26 - 3/04 |
Design Implementation &
Testing |
|
6 |
3/05 - 3/11 |
Design Implementation &
Testing |
|
Midterm Progress Report due 3/09 |
||
|
7 |
3/12 - 3/18 |
*** Spring Break *** |
|
8 |
3/19 - 3/25 |
Design Implementation &
Testing |
|
9 |
3/26 - 4/01 |
New Feature Freeze |
|
Debugging |
||
|
10 |
4/02 - 4/08 |
Debugging |
|
Begin Final Report, Poster,
Presentation |
||
|
11 |
4/09 - 4/15 |
Debugging |
|
12 |
4/16 - 4/22 |
Code Freeze |
|
Prepare for final presentation |
||
|
13 |
4/23 - 4/27 |
Prepare for final presentation |
|
IPRO Day: Friday, April 27 |