Gate | Previous | Korean

About Orion Project




An Introduction



Orion project consists of following three parts,

IMA Libraries
Orion Framework
Orion End User Application

The final step, end user application, will supply tools to create the environment where real-time interactions between objects are occurred. The representative example of such environment is the 'game'. So, the Orion end user application can work for the game generator.

But, the reason I don't limit the scope of this project to the field of the game but I use more generalized concept ( the environment where real-time interactions between objects are occurred ) is that such operations to create this environment can be made a broad interpretation to create a general applications, in a certain point of view. For example, RAD tools like Delphi has such concepts. But when we observe currently existing softwares, we realize that RAD tools are just RAD tools and game generators are just game generators. But, I think such operations are essentially equivalent - I think there are no differences between a crashed plane hit by enemy's missile and a button clicked by a mouse.

Such idea is a part in the final goal of the Orion project. So, Orion Framework has a propensity for general purpose application architecture, covers all the major application parts like object system, network communications, multi-thread environment, scripts and records, etc. And this implementation works on small devices like PDA or smart phone as well as large workstations. So the Orion software architecture is called highly portable script/record/component based asynchronous server-client architecture.

Functions needed to implement this framework are supported by IMA libraries. Basically Coral is the library which implements various data structures but it also defines API functions to support the dynamically loaded objects system like MS COM, platform independent I/O and thread environment, etc. IMAGE ( I,M,A,G,E for pronunciation ) covers the graphic functions which are not dealt in Coral library, namely, user interface, graphic rendering, multi-media, etc. implemented platform independently.

Because these IMA libraries can be used independently themselves, it's not true that they can be used only in the Orion project. So, before completing the Orion project, someone can find some projects which these libraries can play good roles. So, in case of Coral library, it is opened to public. But up to now, it wasn't managed properly, newly added features during 3 years are not uploaded. Developers take no interests for it and I didn't properly respond to infrequent interests because I was busy - so it has not been activated until now. I think I'm still not good at managing open source project.

After completing Orion framework, it is possible to create various application programs using it. Now, though it is under construction, I've applied this framework to commercial projects if possible. By applying the Orion framework to various actual projects, I expect that generality and stability will be increased. Actually, I intend to apply this framework to ten or more projects before starting the final step of the Orion project. In that period, I should meet developers who can cooperate for the Orion project, and I'll be very happy if some new projects can be started by some developers who think this project is useful.



The Current Issues



Now I'm implementing the foundation of Orion framework, supplementing IMA libraries which progression is stopped for some periods. If these tasks are accomplished sufficiently, I'll take the first step for the final goal of the Orion project, and maybe it will be possible in the next year.

Currently I'm working for video I/O and the general purpose editor. When the general purpose editor API functions were implemented, it was assumed that the data structure to insert another video to the specified position or to apply special effect to the specified range is the same as the data structure needed in the word processor to insert a new string into the specified position or to apply some effects like font size or color.

After completing this implementation, it is possible to implement API functions to create modifiable formatted document. Basically, the layout implementation is used to generate hierarchical structure to arrange two dimensional UI( User Interface ) widgets defined by IMA-GE library, and furthermore this structure can be applied to the document structure for the word processor.

[An example of a simple layout hierarchy using the layout data structure implemented in Coral library]


Finally, this structure can contain the capability of XUL or MS XAML, and it will be used to implement the 2 dimensional UI in the Orion framework. I've participated in some analyzer software for several industry fields, and I've felt modifiable user interface like word processor is needed. Such implementation is useful, but it is very complex. So it is difficult to find such implementation which can be easily adopted in an application and flexibly add some new features for the purpose of that application.

The other side, IMAGE 2nd edition should be completed. In the first release of IMAGE, it was successful to implement its own software rendering library, but it was not considered to closely work with OpenGL or DirectX and no more development was not accomplished after finishing the first release in 1998. Different from OpenGL or DirectX, IMAGE supports its own UI API. This API is platform independent, and API functions for graphic rendering are used to render UI widgets. Because IMAGE includes sound I/O and video I/O, now IMAGE means IMA Game Engine, though initially it means IMA-Graphic Engine. Additionally it is possible to use OpenAL, DirectSound, FFMPEG and DirectShow, etc. optionally.

Another part to be considered is byte code generator for C language. ( Surely there are some alternatives. ) The virtual machine which can execute byte code can be widely used, and it takes some important roles in the Orion framework.

These will be the first release of the Orion framework. The Orion project is the final goal in my life, as a developer, so it has wide scope, it needs many times, especially it needs persons who have congenial spirits.


Cooperation


I've progressed these projects up to ten years, there were several criticisms from fellows, and I know there are many similar implementations or alternatives.

But I feel it is very difficult to fuse those all alternatives for the final goal of the Orion project, as if all people works with perfect unity for the human co-prosperity. Surely, it is not true that all usable external libraries are excluded - it is impossible. Many external libraries like libc, zlib, ffmpeg, OpenGL, DirectX, etc. are used.

Nevertheless, existing alternatives can be rejected for the final goal, some functions can be redefined in a new form to maintain compatibility and portability. Some developers feel that such implementation is arbitrary and firmly personal so they can have aversion. My implementations are not well known and not widely used, so such aversion is natural if they are not developers who agree to the final goal of the Orion project.

For example, Coral library has DL ( Dynamic Loader ) API functions correspond to the subset of MS COM implementation. So if I insist to use these API functions, it is certain to receive the following question.

"COM is all possible, so why use it ?"

Then, first I ask like this.

"Does COM can be used non-Windows platforms ?"

But, many companies works on Windows, so my answer is meaningless for such situations. Surely I can say another reasons, but to persuade persons who think COM is all possible, it might be needed to mention the philosophy related to the program development. The philosophy can be easily related to personality so it can be emotional dispute. There is no advantage by winning such argument.

Such obstacles will make it difficult to me to find some developers who follow the Orion project. The one thing difficult to understand is that, developers working in companies don't apply the same criterion for source codes or libraries downloaded from internet written 'by unknown developers' and source codes or libraries written 'by me'. I think such developers use self-centered criterion. Refer to Refactoring written by Martin Fowler,

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."

Such developers might misunderstand this and make a stupid mistake, they think a source code is bad if they cannot understand it, and they regard its writer as a bad programmer.

Personally this is a big trouble besides making full efforts to complete Orion project. Most of all, some projects led by other persons are needed to partially or fully apply IMA libraries, especially currently opened Coral library though it is insufficiently opened.

I also use it to my personal projects or commercial projects for companies, evidently there will be applicable projects. For this, documentation is needed, but I have not enough power to create a good document.
Possibility of cooperation will be increased by augmenting projects which use IMA libraries. If I want to complete Orion project alone, I must rebirth over and over and resume the last memory of the project. :-)

Conclusion


There were a little anonymous developers in internal or external countries who inquire the whole or a part of this project, but until now I haven't responded to those request properly. First of all, I think I don't exactly know the proper way to respond such request. And currently my life is not stable, I need to concern about earning money. Currently only the Coral library is partially opened but descendent libraries will be opened continuously. But I wonder how many my outcomes can be opened to public and my outcomes are valuable enough to be opened. The more I progress this project, the more I consider it.



2007.09.17




Gate | Previous | Korean