Difference between revisions of "Library Categorization"

(Initial proposal (not yet completed))
m
 
(18 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
[[Category:Library]]
 
[[Category:Library]]
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.
+
The goal of this page is to offer a better file hierarchy for Eiffel libraries included in EiffelStudio. Currently (as of EiffelStudio 6.5 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:
 
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:
Line 38: Line 38:
  
 
==Proposed new structure==
 
==Proposed new structure==
It is a two level structure where libraries are always at the second level.
+
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.
  
* language_interfaces: Interact with other programming languages easily from Eiffel.
+
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:
:* C
+
* Root of library
::* api_loader: Make it easy to call C routines from dynamically loaded shared libraries
+
:* library
:* COM
+
:* example
::* com: COM technology
+
:* tool
:* Java
+
:* test
::* Eiffel2Java: Calling Java from Eiffel
+
:* doc
* data
+
:* database
+
::* ecli-contrib: ODBC only database access
+
::* store: Relational database access
+
* network
+
:* socket
+
::* net: Networking library
+
* runtime:
+
:* memory
+
::* memory_analyzer: Memory analyzis
+
:* process
+
::* process: Facility to start and follow processes
+
:* reflexion
+
:* concurrency
+
::* thread: Threading in Eiffel
+
* text
+
:* internationalization
+
::* i18n: Internationalization library
+
*ui
+
:*drawing
+
::*graph: Representation of graph in UI (See diagram tool in EiffelStudio)
+
:*interface
+
::*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
+
*web
+
:*cgi
+
::*web: CGI facility for Eiffel
+
:*framework
+
::*xebra: Eiffel Server Pages
+
  
* argument_parser: Parsing the command line arguments of a program
+
Here is the proposed library structure:
* data_structures: Kernel library classes, data structure, I/O
+
* diff: Diff and patch facilities
+
* parse: parsing and lexical analysis (including EiffelParse, EiffelLex)
+
* time_date: time and date
+
* uuid: UUID generation facility
+
  
 +
*'''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
  
Not yet reclassified:
+
*'''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
  
* event: Low level mechanism to receive a UI event when a file/pipe has something new.
+
*'''multimedia'''
* encoding: Transforming text in one encoding to another encoding
+
:*'''video'''
* gobo: Gobo
+
:*'''audio'''
* gobo_extension: ISE gobo extensions
+
* testing: Testing facility
+
  
 +
*'''network'''
 +
:*'''socket'''
 +
::* ''net'': Networking library
  
 +
*'''persistency'''
 +
:*'''database'''
 +
::* ''ecli-contrib'': ODBC only database access
 +
::* ''store'': Relational database access
  
Not yet reclassified:
+
*'''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
  
* event: Low level mechanism to receive a UI event when a file/pipe has something new.
+
*'''testing'''
* encoding: Transforming text in one encoding to another encoding
+
:*'''framework'''
* gobo: Gobo
+
::* ''testing'': Testing facility
* gobo_extension: ISE gobo extensions
+
 
* testing: Testing facility
+
*'''text'''
 +
:*'''encoding'''
 +
::* ''encoding'': Transforming text in one encoding to another encoding
 +
:*'''encryption'''
 +
::*''eel-contrib'': Eiffel Encryption Library
 +
:*'''internationalization'''
 +
::* ''i18n'': Internationalization library
 +
:*'''lexer'''
 +
::*''lex'': EiffelLex
 +
:*'''parser'''
 +
::*''parse'': EiffelParse
 +
::*''ejson-contrib'': JSON parser
 +
:*'''utility'''
 +
::*''diff'': Diff and patch facilities
 +
 
 +
*'''utility'''
 +
:*'''general'''
 +
::* ''uuid'': UUID generation facility
 +
::* ''eproj'': Cartographic Projections library (http://www.enml.org/en/lab/eproj.php wrapper for http://trac.osgeo.org/proj - [ [https://enml.svn.sourceforge.net/svnroot/enml/lab/gis/eproj/ svn repository] ])
 +
:*'''compression'''
 +
:*'''time'''
 +
::*''time'': time and date
 +
 
 +
*'''web'''
 +
:*'''cgi'''
 +
::*''web'': CGI facility for Eiffel
 +
:*'''framework'''
 +
::*''xebra'': Eiffel Server Pages

Latest revision as of 23:24, 18 January 2010

The goal of this page is to offer a better file hierarchy for Eiffel libraries included in EiffelStudio. Currently (as of EiffelStudio 6.5 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
  • tool
  • 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
  • encryption
  • eel-contrib: Eiffel Encryption Library
  • internationalization
  • i18n: Internationalization library
  • lexer
  • lex: EiffelLex
  • parser
  • parse: EiffelParse
  • ejson-contrib: JSON parser
  • utility
  • diff: Diff and patch facilities
  • utility
  • general
  • compression
  • time
  • time: time and date
  • web
  • cgi
  • web: CGI facility for Eiffel
  • framework
  • xebra: Eiffel Server Pages