Difference between revisions of "Library Categorization"

(Included some of the proposal of the talk page.)
(Proposed new structure)
Line 115: Line 115:
 
:*'''general'''
 
:*'''general'''
 
::* ''uuid'': UUID generation facility
 
::* ''uuid'': UUID generation facility
 +
:*'''compression'''
 
:*'''time'''
 
:*'''time'''
 
::*''time'': time and date
 
::*''time'': time and date

Revision as of 23:03, 21 August 2009

The goal of this page is to offer a better file hierarchy for Eiffel libraries included in EiffelStudio. Currently (as of EiffelStudio 6.4 and older) you have a flat representation of libraries under $ISE_LIBRARY and they are represented by their name. Our goal is to provide a hierarchy based on what they provide. Our inspiration is the FreeBSD ports hierarchy which is only one level deep.

In addition to the categorization, we will add some suffix to the library name so that we can clearly check the status of the library:

  • no suffix: Eiffel Software endorsed and supported library.
  • -contrib: externally contributed library not supported by Eiffel Software.
  • -unstable: library available to user but beware that it might change its interface from release to release.

Here is the list of libraries included flat in EiffelStudio 6.4:

  • api_wrapper: Make it easy to call C routines from dynamically loaded shared libraries
  • argument_parser: Parsing the command line arguments of a program
  • base: Kernel library classes, data structure, reflection, I/O
  • com: COM technology
  • diff: Diff and patch facilities
  • docking: Facility to have a customizable UI.
  • Eiffel2Java: Calling Java from Eiffel
  • encoding: Transforming text in one encoding to another encoding
  • event: Low level mechanism to receive a UI event when a file/pipe has something new.
  • gobo: Gobo
  • gobo_extension: ISE gobo extensions
  • graph: Representation of graph in UI (See diagram tool in Eiffel Studio).
  • i18n: Internationalization library:
  • lex: lexical analysis
  • memory_analyzer: Memory analysis
  • net: Networking library
  • parse: Parsing:
  • preferences: Facility to store user preferences
  • process: Facility to start and follow processes
  • store: Relational database access
  • testing: Testing facility
  • thread: Threading in Eiffel
  • time: Time facility
  • uuid: UUID generation facility
  • vision2: Platform independent UI toolkit
  • vision2_extension: Extension to Vision2
  • web: CGI facility for Eiffel
  • wel: UI toolkit for Windows

Proposed new structure

It is a two level structure where libraries are always at the second level. This is what you can expect to see when installing EiffelStudio and look under the library directory under $ISE_EIFFEL. The same structure will be present in example. Internally it does not mean that examples have to be disconnected from the library, it is just how we integrate it into EiffelStudio.

Currently to make it easy to integrate third-party libraries into the EiffelStudio delivery, third-library provider should provide a source package of their library using the following proposed hierarchy:

  • Root of library
  • library
  • example
  • test
  • doc

Here is the proposed library structure:

  • data_structure
  • adt
  • base: Kernel library classes, data structure, I/O
  • event: Low level mechanism to receive a UI event when a file/pipe has something new.
  • graphic
  • drawing
  • graph: Representation of graph in UI (See diagram tool in EiffelStudio)
  • framework
  • docking: Facility to have a customizable UI
  • preferences: Facility to store user preferences
  • toolkit
  • vision2: Platform independent UI toolkit
  • vision2_extension: Extension to Vision2
  • wel: UI toolkit for Windows
  • language_interface: Interact with other programming languages easily from Eiffel.
  • C
  • api_loader: Make it easy to call C routines from dynamically loaded shared libraries
  • COM
  • com: COM technology
  • Java
  • Eiffel2Java: Calling Java from Eiffel
  • multimedia
  • video
  • audio
  • network
  • socket
  • net: Networking library
  • persistency
  • database
  • ecli-contrib: ODBC only database access
  • store: Relational database access
  • runtime
  • memory
  • memory_analyzer: Memory analysis
  • process
  • argument_parser: Parsing the command line arguments of a program
  • process: Facility to start and follow processes
  • reflection
  • concurrency
  • thread: Threading in Eiffel
  • testing
  • framework
  • testing: Testing facility
  • text
  • encoding
  • encoding: Transforming text in one encoding to another encoding
  • internationalization
  • i18n: Internationalization library
  • lexer
  • lex: EiffelLex
  • parser
  • parse: EiffelParse
  • utility
  • diff: Diff and patch facilities
  • utility
  • general
  • uuid: UUID generation facility
  • compression
  • time
  • time: time and date
  • web
  • cgi
  • web: CGI facility for Eiffel
  • framework
  • xebra: Eiffel Server Pages