Complete.Org: Mailing Lists: Archives: freeciv-dev: December 2001:
[Freeciv-Dev] Re: freeciv 2.0 spec
Home

[Freeciv-Dev] Re: freeciv 2.0 spec

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: Andrew Sutton <ansutton@xxxxxxx>
Cc: freeciv development list <freeciv-dev@xxxxxxxxxxx>
Subject: [Freeciv-Dev] Re: freeciv 2.0 spec
From: Raimar Falke <hawk@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 3 Dec 2001 21:38:11 +0100
Reply-to: rf13@xxxxxxxxxxxxxxxxxxxxxx

On Mon, Dec 03, 2001 at 02:29:57PM -0500, Andrew Sutton wrote:
> all,
> 
> i'm attaching the introduction to what will hopefully be the master 
> requirements/design document for the freeciv 2.0 development effort. the 
> introduction details what i coceive as shortcomings of the current system and 
> defines the goals of the next generation system.
> 
> also, this looks like crap under konquerer, but looks nicer under windows. 
> it's built from a kword document, so blame kde ;) i'd have posted it in 
> latex, but kword kept crashing when i tried to export it.
> 
> PLEASE take the time to read this and comment on it. i'd like to know if i'm 
> missing any major goals for the next system. keep in mind that rulesets are a 
> feature of extensibility so they don't need mentioning yet.
> 
> also, please don't flame me on the shortcomings of the freeciv 1.x. i 
> understand that alot of people have put alot of time into its development, 
> but the problems are with the original design and execution of the project. 
> it just wasn't thought out.
> 
> which brings me to the real purpose of this stuff. to take freeciv and 
> rebuild it - except to try to think thru all the issues before we lay down 
> alot of code. it's only going to make it better.

> 
>                                  Introduction
> 
>    This document provides a comprehensive discussion of issues related to
>    the development of FreeCiv 2.0. The first step is to identify the
>    shortcomings of the current implementation and provide a list of
>    properties that make FreeCiv 2.0 a more capable product.
> 
> FreeCiv 1.x
> 
>    FreeCiv was designed as a client/server application where the server
>    controls all game functionality and the client is a dumb terminal.
>    This architecture has proven efficient and scalable, providing the
>    capability to play both single and multiplayer games.
> 
>    The server component, however has its shortcomings. First, it is a
>    monolithic application that aspires to a certain level of
>    extensibility. 

> These two properties exist in direct contradiction of each other.

I disagree.

>    Currently, extension to the core set of capabilities of the
>    FreeCiv server requires patching the source and hoping for
>    eventual integration into the distribution. This development
>    model slows the progression of the product and makes large
>    changes nearly impossible. Also, replacing major subsystems of
>    the sytem require massive patches,

> fixing all code that needs to be updated.

This will always be required.

> This is unacceptable for a system that claims extensiblity as a
> requirement.

Do we?

>    FreeCiv was written using the C language and has few if any
>    object-oriented concepts built into the existing code base.

>    Object-oriented design and implementation can greatly enhance design
                                               ^^^
This effect will not apply to every software.

>    and development, allowing developers to visualize functionality as
>    discrete components. Object-oriented analysis and design is a natural
>    progression from functional analsysis and design, and seems to the
>    current trend of the software industry in general. FreeCiv needs to be
>    "modernized".

Follow the current hype.

>    Finally, there is little to no quality documentation of requirements,
>    features or design of the game itself. 

Ack.

>    Features and capabilities have been added without regard to the
>    overall structure of the software.

It is the task of the maintainers to think about the big picture. I
think my predecessors have done this job well.

>    This development model increases the complexity of the source code
>    exponentially

Why?

>    and seriously discourages easy comprehension of the software
>    architecture and implementation itself.

IMHO some docu will help.

> FreeCiv 2.0 Goals
> 
>    In contrast to FreeCiv 1.x, FreeCiv 2.0 aspires to modern design and
>    implementation concepts. This subsection lists the goals of the
>    FreeCiv 2.0 development effort.
> 
>   Development Process
> 

>    First and foremost the establishment of software development
>    process will be a major goal of the development effort.

Iiiiiihhhh. Freeciv is an _open source_ project. All people work
_voluntary_. I think such an position is just wrong. You can't project
the model you use at work.

Can you give examples of other open source projects which do such
things? I know about gcc which has a test suite and a release
requirement. But hey even the linux kernel has no test suite or
regression testing.

>    The development
>    process will not be so structured that it hampers development, but
>    will be the guiding force in the development of the software. In
>    general, each development cycle will incorporate the following process
>    steps:
>     1. Feature specification
>     2. Requirements and design
>     3. Implementation
>     4. Testing
>     5. Relase
> 
>    Feature specification shall be primarily done via the FreeCiv
>    development list group. The result of feature specification will lead
>    to documentation of the requirements and design of the feature. All
>    will be recorded in this document.
> 

>    Note that adhering to this goal will make FreeCiv 2.0 almost unique in
>    the open source community.

So freeciv will be a guinea pig?

>    Many open source projects spurn development
>    processes and documentation on this order in order to focus on the
>    implementation. As a result, interfaces changes and 

>    complete rewrites of major subcomponents happen frequently

This doesn't have to be bad thing. See Brooks. The regular expression
engine of python was rewritten at least 4 (_four_) times till python
1.6.

>    Additionally, getting involved means spending a good amount of
>    time flipping through page after page of source code to identify
>    problem or extension areas.

Extra docu should help.

>    The hope is that this document will provide a comprehensive roadmap of
>    the project. New developers can refer to this document to locate
>    requirements and designs, find flaws or learn how to write extensions.
> 
>   Client/Server Architecture
> 
>    The one aspect of FreeCiv 1.x that will survive the test of time is
>    the client server architecture. FreeCiv 2.0 will encapsulate all game
>    functionality within the server itself, leaving clients to be dumb
>    terminals to the server. This architecture helps reduce data
>    concurrency between the client and server and helps discourage
>    cheating.
> 
>   Object-Oriented

>    Unlike FreeCiv 1.x, FreeCiv 2.0 will take full advantage of OO
>    concepts and idioms. As much as possible, OO shall be used to
>    implement extensibility and provide resuable code.
> 
>    In addition, all efforts should be made to identify software patterns
>    employed by the design and encapsulate those patterns into reusable
>    frameworks. The use of additional software to provide these frameworks
>    is preferred.

I feel like I'm back in a software engineering course. You forgot UML ;)

>   Extensiblity
> 
>    FreeCiv 2.0 will be fully extensible. Great care will be taken to
>    identify features of the game that would benefit from extension. This
>    allows the game to take on many forms, satisfying a wider range of
>    users.
> 
>   Modularity
> 
>    Unlike the monolithic FreeCiv 1.x server, the FreeCiv 2.0 server will
>    implement the microkernel pattern. The kernel will be responsible for
>    maintaining game data, while modules implement specific behavior of
>    game components. This architecture allows for maximum extensibility
>    and allows testing to be done for individual components as opposed to
>    the system as a whole. It also frees the development model to allow
>    multiple maintainers for each module, thereby increasing the
>    development speed and deployment turnover rate.

Will the AI be a module? How do the modules communicate? Security?

>   Maintainability
> 
>    Early in the development process, one goal of this system is going to
>    be maintainability. The architecture itself and the development
>    process lends great support to this goal. However, additional measures
>    will be taken to provide developers with a means for "easy"
>    development. To this end, coding standards and naming conventions will
>    be enforced. All documentation shall be written using the javadoc
>    style, allowing external documentation tools to strip the source and
>    generate detailed internals documents.

In general I think you have just got your software engineering course
and a course "Advanced operation systems design". You want to apply
what you have learned to freeciv. IMHO freeciv isn't a good target for
this. Yes freeciv has shortcomings but your solution is overkill. Like
Brooks said.

        Raimar

-- 
 email: rf13@xxxxxxxxxxxxxxxxx
  Microsoft does have a year 2000 problem. I'm part of it. I'm running Linux.


[Prev in Thread] Current Thread [Next in Thread]