[Freeciv-Dev] Re: freeciv 2.0 spec
[Top] [All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
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.
- [Freeciv-Dev] freeciv 2.0 spec, Andrew Sutton, 2001/12/03
- [Freeciv-Dev] Re: freeciv 2.0 spec,
Raimar Falke <=
- [Freeciv-Dev] Re: freeciv 2.0 spec, Andrew Sutton, 2001/12/03
- [Freeciv-Dev] Re: freeciv 2.0 spec, Andrew Sutton, 2001/12/03
- [Freeciv-Dev] Re: freeciv 2.0 spec, Stepan Roh, 2001/12/03
- [Freeciv-Dev] Re: freeciv 2.0 spec, Vasco Alexandre Da Silva Costa, 2001/12/03
- [Freeciv-Dev] Re: freeciv 2.0 spec, Raimar Falke, 2001/12/04
- [Freeciv-Dev] Re: freeciv 2.0 spec, Andrew Sutton, 2001/12/04
- [Freeciv-Dev] Re: freeciv 2.0 spec, Raimar Falke, 2001/12/04
- [Freeciv-Dev] Re: freeciv 2.0 spec, Petrus Viljoen, 2001/12/04
[Freeciv-Dev] Re: freeciv 1.12.1 spec?, Mike Kaufman, 2001/12/04
|
|