  
  [1XE [33X[0;0YThe Core Packages and the Idea behind their Splitting[133X[101X
  
  [33X[0;0YI will try to explain the idea behind splitting the 6 [13Xcore packages[113X:[133X
  
  [31X1[131X   [33X[0;6Y[5Xhomalg[105X[133X
  
  [31X2[131X   [33X[0;6Y[5XModules[105X[133X
  
  [31X3[131X   [33X[0;6Y[5XHomalgToCAS[105X[133X
  
  [31X4[131X   [33X[0;6Y[5XIO_ForHomalg[105X[133X
  
  [31X5[131X   [33X[0;6Y[5XRingsForHomalg[105X[133X
  
  [31X6[131X   [33X[0;6Y[5XExamplesForHomalg[105X[133X
  
  
  [1XE.1 [33X[0;0YThe 6=2+4 split[133X[101X
  
  [33X[0;0YThe following is an attempt to explain the 6=2+4 split.[133X
  
  
  [1XE.1-1 [33X[0;0YLogically independent[133X[101X
  
  [33X[0;0YThe  package  [5Xhomalg[105X is logically independent from all other packages in the
  project.  And  among  the  six core packages it is together with [5XModules[105X the
  only  package  that  has to do with mathematics. The remaining four packages
  are  of  technical  nature. More precisely, [5Xhomalg[105X is a stand alone package,
  that  offers  abstract  homological  constructions  for  computable  Abelian
  categories.  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[113X  in  [5XGAP[105X  (-->  [14X'Modules:  Rings  supported in a sufficient way'[114X),
  [5XModules[105X  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[105X
  adds  the  missing  sufficient  support for [22Xℤ/p^n[122X and [22Xℚ[122X to [5XGAP[105X and his other
  package [5XGaussForHomalg[105X makes this support visible to [5XModules[105X).[133X
  
  
  [1XE.1-2 [33X[0;0YBlack boxes[133X[101X
  
  [33X[0;0YThe package [5XModules[105X uses rings and matrices over these rings as a black box,
  enabling other packages to [21Xabuse[121X [5Xhomalg[105X 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[105X is not at all the
  concern  of [5Xhomalg[105X. Even the [5XGAP[105X representation for external rings, external
  ring elements, and external matrices are declared in the package [5XHomalgToCAS[105X
  and not in homalg.[133X
  
  
  [1XE.1-3 [33X[0;0YSumming up[133X[101X
  
  [33X[0;0YOne  of  the  main concepts of the [5Xhomalg[105X project is that high level and low
  level  computations  in  homological algebra can and [13Xshould[113X be separated. So
  splitting [5Xhomalg[105X from the remaining 4 core packages is just emphasizing this
  concept.  Moreover,  [5Xhomalg[105X 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.[133X
  
  
  [1XE.2 [33X[0;0YThe 4=1+1+1+1 split[133X[101X
  
  [33X[0;0YThe following is meant to justify the remaining 4=1+1+1+1 split.[133X
  
  
  [1XE.2-1 [33X[0;0Y[5XHomalgToCAS[105X[101X[1X[133X[101X
  
  [33X[0;0YThe  package  [5XHomalgToCAS[105X (which needs the [5Xhomalg[105X package) includes all what
  is  needed to let the black boxes used by [5Xhomalg[105X reside in external computer
  algebra  systems.  So  as mentioned above, [5XHomalgToCAS[105X is the right place to
  declare   the  three  [5XGAP[105X  representations  external  rings,  external  ring
  elements,  and external matrices. Still, [5XHomalgToCAS[105X is independent from the
  external  computer  algebra  system  with  which  [5XGAP[105X  will  communicate [13Xand[113X
  independent of how this communication physically looks like.[133X
  
  
  [1XE.2-2 [33X[0;0Y[5XIO_ForHomalg[105X[101X[1X and Alternatives[133X[101X
  
  [33X[0;0YThe package [5XIO_ForHomalg[105X (which needs [5XHomalgToCAS[105X) allows [5XGAP[105X to communicate
  via  I/O-streams  with  computer  algebra  systems that come with a terminal
  interface.  [5XIO_ForHomalg[105X  uses  Max  Neunhöffer's  [5XIO[105X  package,  yet  it  is
  independent from the specific computer algebra system, as long as the latter
  provides a terminal interface. Splitting [5XIO_ForHomalg[105X from [5XHomalgToCAS[105X gives
  the  freedom  to  replace  the  former  by  another  package  that  lets [5XGAP[105X
  communicate  with an external system using a different technology. So making
  [5XIO_ForHomalg[105X  a  package  of  its own makes it clear for developers of a new
  communication  method  which  package  of  the  [5Xhomalg[105X  project  has  to  be
  imitated/replaced.  To  be  concrete,  Thomas Bächler wrote a package called
  [5XMapleForHomalg[105X  that  enables [5XGAP[105X to communicate with [5XMaple[105X without the need
  for a terminal interface.[133X
  
  
  [1XE.2-3 [33X[0;0Y[5XRingsForHomalg[105X[101X[1X[133X[101X
  
  [33X[0;0YThe package [5XRingsForHomalg[105X (which needs [5XHomalgToCAS[105X) provides the details of
  the  black  boxes [5Xhomalg[105X relies on. The details of the black boxes of course
  depend  on the external computer algebra system ([5XSingular[105X, [5XMAGMA[105X, [5XMacaulay2[105X,
  [5XMaple[105X,  [5XSage[105X, ...), but are independent from the way the communication takes
  place.  So  it can be used either with [5XIO_ForHomalg[105X, with [5XMapleForHomalg[105X, or
  with any future communication package.[133X
  
  
  [1XE.2-4 [33X[0;0YYour own [5XRingsForHomalg[105X[101X[1X[133X[101X
  
  [33X[0;0YIf  someone needs to support a ring in some computer algebra system that [5XGAP[105X
  can  already  communicate  with,  but  where  the  ring  is not supported by
  [5XRingsForHomalg[105X  yet,  she  or he needs to imitate/replace [5XRingsForHomalg[105X (as
  Simon Görtzen did with his [5XGaussForHomalg[105X, where the computer algebra system
  was  [5XGAP[105X  itself,  extended  by  his  package  [5XGauss[105X).  Any  substitute  for
  [5XRingsForHomalg[105X  -- as it only needs [5XHomalgToCAS[105X -- will again be independent
  from  the  way  how  [5XGAP[105X  communicates with the computer algebra system that
  hosts  the  ring. This should encourage people to link more external systems
  to  [5Xhomalg[105X  without  being  forced  to  join  the development of the package
  [5XRingsForHomalg[105X.  They  can  simply  write their own package and get the full
  credit for it.[133X
  
  
  [1XE.2-5 [33X[0;0Y[5XExamplesForHomalg[105X[101X[1X[133X[101X
  
  [33X[0;0YThe  package [5XExamplesForHomalg[105X (which needs [5XRingsForHomalg[105X) 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[105X package as they are defined over rings that [5XGAP[105X does not
  support.  The  package  [5XExamplesForHomalg[105X  is  meant to be the package where
  anyone  can contribute interesting examples using [5Xhomalg[105X without necessarily
  contributing to the code of any of the remaining core packages.[133X
  
  
  [1XE.2-6 [33X[0;0YDocumentation[133X[101X
  
  [33X[0;0YSplitting the core packages is part of documenting the project. The complete
  manuals  of  the [5Xhomalg[105X and [5XExamplesForHomalg[105X 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[105X,  [5XIO_ForHomalg[105X,  and [5XRingsForHomalg[105X will be rather technical and
  of interest mainly for developers.[133X
  
  
  [1XE.2-7 [33X[0;0YCrediting[133X[101X
  
  [33X[0;0YEveryone  is  encouraged  to  contribute  to the [5Xhomalg[105X 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.[133X
  
  
  [1XE.2-8 [33X[0;0YStability[133X[101X
  
  [33X[0;0YA  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.[133X
  
