Difference between revisions of "Library Categorization"

(Proposed new structure)
m
 
(15 intermediate revisions by 2 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.
  
*'''data'''
+
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:
:*'''database'''
+
* Root of library
::* ''ecli-contrib'': ODBC only database access
+
:* library
::* ''store'': Relational database access
+
:* example
 +
:* tool
 +
:* test
 +
:* doc
 +
 
 +
Here is the proposed library structure:
  
*'''data_structures'''
+
*'''data_structure'''
 
:*'''adt'''
 
:*'''adt'''
 
::*''base'': Kernel library classes, data structure, I/O
 
::*''base'': Kernel library classes, data structure, I/O
 
::*''event'': Low level mechanism to receive a UI event when a file/pipe has something new.
 
::*''event'': Low level mechanism to receive a UI event when a file/pipe has something new.
  
*'''language_interfaces''': Interact with other programming languages easily from Eiffel.
+
*'''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'''
 
:*'''C'''
 
::* ''api_loader'': Make it easy to call C routines from dynamically loaded shared libraries
 
::* ''api_loader'': Make it easy to call C routines from dynamically loaded shared libraries
Line 57: Line 73:
 
:*'''Java'''
 
:*'''Java'''
 
::* ''Eiffel2Java'': Calling Java from Eiffel
 
::* ''Eiffel2Java'': Calling Java from Eiffel
 +
 +
*'''multimedia'''
 +
:*'''video'''
 +
:*'''audio'''
  
 
*'''network'''
 
*'''network'''
 
:*'''socket'''
 
:*'''socket'''
 
::* ''net'': Networking library
 
::* ''net'': Networking library
 +
 +
*'''persistency'''
 +
:*'''database'''
 +
::* ''ecli-contrib'': ODBC only database access
 +
::* ''store'': Relational database access
  
 
*'''runtime'''
 
*'''runtime'''
Line 79: Line 104:
 
:*'''encoding'''
 
:*'''encoding'''
 
::* ''encoding'': Transforming text in one encoding to another encoding
 
::* ''encoding'': Transforming text in one encoding to another encoding
 +
:*'''encryption'''
 +
::*''eel-contrib'': Eiffel Encryption Library
 
:*'''internationalization'''
 
:*'''internationalization'''
 
::* ''i18n'': Internationalization library
 
::* ''i18n'': Internationalization library
Line 85: Line 112:
 
:*'''parser'''
 
:*'''parser'''
 
::*''parse'': EiffelParse
 
::*''parse'': EiffelParse
:*'''utilities'''
+
::*''ejson-contrib'': JSON parser
 +
:*'''utility'''
 
::*''diff'': Diff and patch facilities
 
::*''diff'': Diff and patch facilities
  
*'''ui'''
+
*'''utility'''
:*'''drawing'''
+
:*'''general'''
::*''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
+
 
+
*'''utilities'''
+
:*general
+
 
::* ''uuid'': UUID generation facility
 
::* ''uuid'': UUID generation facility
:*time
+
::* ''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
 
::*''time'': time and date
  

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