  
  [1XH The Core Packages and the Idea behind their Splitting[0X
  
  I will try to explain the idea behind splitting the 5 [13Xcore packages[0m:
  
  (1)   [5Xhomalg[0m
  
  (2)   [5XHomalgToCAS[0m
  
  (3)   [5XIO_ForHomalg[0m
  
  (4)   [5XRingsForHomalg[0m
  
  (5)   [5XExamplesForHomalg[0m
  
  
  [1XH.1 The 5=1+4 split[0X
  
  The following is an attempt to explain the 5=1+4 split.
  
  
  [1XH.1-1 Logically independent[0X
  
  The  package  [5Xhomalg[0m is logically independent from all other packages in the
  project. And among the 5 core packages it is the only package that has to do
  with  mathematics. The remaining four packages are of technical nature. More
  precisely, [5Xhomalg[0m is a stand alone package, that offers abstract homological
  constructions  for  any  computable ring. But since the ring of integers (at
  least  up  till  now) is the only ring which for the purposes of homological
  algebra  is  [13Xsufficiently  supported[0m  in [5XGAP[0m (--> [14X1.1-4[0m), [5Xhomalg[0m can put the
  above  mentioned  abstract  constructions  into  action only for the ring of
  integers and by generic (but of course non-efficient) methods for any of its
  residue  class  rings  (Simon  Görtzen's  package  [5XGauss[0m  adds  the  missing
  sufficient   support   for  ℤ/p^n  and  ℚ  to  [5XGAP[0m  and  his  other  package
  [5XGaussForHomalg[0m makes this support visible to [5Xhomalg[0m).
  
  
  [1XH.1-2 Black boxes[0X
  
  The  package [5Xhomalg[0m uses rings and matrices over these rings as a black box,
  enabling  other  packages to "abuse" [5Xhomalg[0m to compute over rings other than
  the  ring  of  integers by simply providing the appropriate black boxes. And
  whether these rings and matrices are inside or outside [5XGAP[0m is not at all the
  concern  of [5Xhomalg[0m. Even the [5XGAP[0m representation for external rings, external
  ring elements, and external matrices are declared in the package [5XHomalgToCAS[0m
  and not in homalg.
  
  
  [1XH.1-3 Summing up[0X
  
  One  of  the  main concepts of the [5Xhomalg[0m project is that high level and low
  level  computations  in  homological algebra can and [13Xshould[0m be separated. So
  splitting [5Xhomalg[0m from the remaining 4 core packages is just emphasizing this
  concept.  Moreover,  [5Xhomalg[0m is up till now by far the biggest package in the
  project  and will probably keep growing by supporting more basic homological
  constructions,  whereas  the other 4 packages will remain stable over longer
  time intervals.
  
  
  [1XH.2 The 4=1+1+1+1 split[0X
  
  The following is meant to justify the remaining 4=1+1+1+1 split.
  
  
  [1XH.2-1 [5XHomalgToCAS[1X[0X
  
  The  package  [5XHomalgToCAS[0m (which needs the [5Xhomalg[0m package) includes all what
  is  needed to let the black boxes used by [5Xhomalg[0m reside in external computer
  algebra  systems.  So  as mentioned above, [5XHomalgToCAS[0m is the right place to
  declare   the  three  [5XGAP[0m  representations  external  rings,  external  ring
  elements,  and external matrices. Still, [5XHomalgToCAS[0m is independent from the
  external  computer  algebra  system  with  which  [5XGAP[0m  will  communicate [13Xand[0m
  independent of how this communication physically looks like.
  
  
  [1XH.2-2 [5XIO_ForHomalg[1X and Alternatives[0X
  
  The package [5XIO_ForHomalg[0m (which needs [5XHomalgToCAS[0m) allows [5XGAP[0m to communicate
  via  I/O-streams  with  computer  algebra  systems that come with a terminal
  interface.  [5XIO_ForHomalg[0m  uses  Max  Neunhöffer's  [5XIO[0m  package,  yet  it  is
  independent from the specific computer algebra system, as long as the latter
  provides a terminal interface. Splitting [5XIO_ForHomalg[0m from [5XHomalgToCAS[0m gives
  the  freedom  to  replace  the  former  by  another  package  that  lets [5XGAP[0m
  communicate  with an external system using a different technology. So making
  [5XIO_ForHomalg[0m  a  package  of  its own makes it clear for developers of a new
  communication  method  which  package  of  the  [5Xhomalg[0m  project  has  to  be
  imitated/replaced.  To  be  concrete,  Thomas Bächler wrote a package called
  [5XMapleForHomalg[0m  that  enables [5XGAP[0m to communicate with [5XMaple[0m without the need
  for a terminal interface, as, for example, such an interface is missing from
  recent versions of [5XMaple[0m on MAC OS X starting from [5XMaple[0m 10.
  
  
  [1XH.2-3 [5XRingsForHomalg[1X[0X
  
  The package [5XRingsForHomalg[0m (which needs [5XHomalgToCAS[0m) provides the details of
  the  black  boxes [5Xhomalg[0m relies on. The details of the black boxes of course
  depend  on the external computer algebra system ([5XSingular[0m, [5XMAGMA[0m, [5XMacaulay2[0m,
  [5XMaple[0m,  [5XSage[0m, ...), but are independent from the way the communication takes
  place.  So  it can be used either with [5XIO_ForHomalg[0m, with [5XMapleForHomalg[0m, or
  with any future communication package.
  
  
  [1XH.2-4 Your own [5XRingsForHomalg[1X[0X
  
  If  someone needs to support a ring in some computer algebra system that [5XGAP[0m
  can  already  communicate  with,  but  where  the  ring  is not supported by
  [5XRingsForHomalg[0m  yet,  she  or he needs to imitate/replace [5XRingsForHomalg[0m (as
  Simon Görtzen did with his [5XGaussForHomalg[0m, where the computer algebra system
  was  [5XGAP[0m  itself,  extended  by  his  package  [5XGauss[0m).  Any  substitute  for
  [5XRingsForHomalg[0m  -- as it only needs [5XHomalgToCAS[0m -- will again be independent
  from  the  way  how  [5XGAP[0m  communicates with the computer algebra system that
  hosts  the  ring. This should encourage people to link more external systems
  to  [5Xhomalg[0m  without  being  forced  to  join  the development of the package
  [5XRingsForHomalg[0m.  They  can  simply  write their own package and get the full
  credit for it.
  
  
  [1XH.2-5 [5XExamplesForHomalg[1X[0X
  
  The  package [5XExamplesForHomalg[0m (which needs [5XRingsForHomalg[0m) contains example
  scripts  over  various  rings  that  are  written  in  a universal way, i.e.
  independent  from  the system that hosts the rings. These examples cannot be
  part  of the [5Xhomalg[0m package as they are defined over rings that [5XGAP[0m does not
  support.  The  package  [5XExamplesForHomalg[0m  is  meant to be the package where
  anyone  can contribute interesting examples using [5Xhomalg[0m without necessarily
  contributing to the code of any of the remaining core packages.
  
  
  [1XH.2-6 Documentation[0X
  
  Splitting the core packages is part of documenting the project. The complete
  manuals  of  the [5Xhomalg[0m and [5XExamplesForHomalg[0m packages (maybe apart from the
  appendices)  can  then  be free from any non-mathematical technicalities the
  average  user  is  not  interested in. A documentation of the three packages
  [5XHomalgToCAS[0m,  [5XIO_ForHomalg[0m,  and [5XRingsForHomalg[0m will be rather technical and
  of interest mainly for developers.
  
  
  [1XH.2-7 Crediting[0X
  
  Everyone  is  encouraged  to  contribute  to the [5Xhomalg[0m project. The project
  follows  the  philosophy  of avoiding huge monolithic packages and splitting
  unrelated tasks. This should enable contributers to write their own packages
  (building  on other existing packages) and getting the full credit for their
  work, which can then be easily distinguished from the work of others.
  
  
  [1XH.2-8 Stability[0X
  
  A  huge monolithic package can never stabilize, even though parts of it will
  stay  frozen  for  a long period of time. The splitting makes it likely that
  parts  of  the  project  together  with  their documentation quickly reach a
  stable state.
  
