Brewing a new backend


Subject: Brewing a new backend
From: Jesper Skov (jskov@redhat.com)
Date: Tue Dec 26 2000 - 05:35:09 CST


Hi there! (and merry Xmas!)

I've been thinking about making some serious hacking on the backend of
AbiWord for a while now. There have been a lot of discussions of
various rewrites/hacks of that part of AbiWord, but it's going to be a
very big job - and I fear that it'll never happen if we don't get
started.

So to avoid breaking the existing backend and avoid holding up coming
releases, I wonder if I could be allowed to clone the existing backend
(abi/src/text) as abi/src/text2 and check it in. Adding a simple
compile option would allow people to play with the new backend and
more importantly allow me to check in changes piecemeal instead of
waiting for a 100% rewrite to be completed.

I've considered creating a CVS branch instead, but I'd rather have a
separate directory - allowing people to switch backend with a compile
option instead of faffing about with CVS.

These are the issues I would like to address:

 o Improve documentation - both overview and API wise using
   Doxygen. [will happen as I fight^Wwork my way through the code]

 o Split existing view code into view and controller code.
 o Updating/including Mike's Cursor class.

 o Fix fake-run/findPointCoords mess by introducing EOL/EOD runs.

 o Move attributes from content Runs to separate attribute
   Runs. Reduces data size, speeds up lookups, allows (if desired)
   full attribute show code feature as in WP.

And eventually:

 o Look into caching IP searches on page/column/line levels reducing
   time spent traversing the document.

 o Look into representing the document using an AVL tree instead of
   the doubly linked list.

There's a ton of information which I've gone through - and will have
to go through again - to make all this happen. I would like to have
provided related pointers for each of the issues, but I'm too
lazy. Below is the list of postings I've marked in GNUS which are
going to affect the stuff I do.

! [ 0: Mike Nordell ] Cursor (second try)
! [ 0: sam th ]
! [ 0: Mike Nordell ]
! [ 0: Martin Sevior ]
!A [ 0: Mike Nordell ] asserts and pagebreaks
! [ 16: Jesper Skov ]
! [ 0: Mike Nordell ]
! [ 0: sam th ]
!A [ 0: sam th ] Summary (was Re: asserts and pagebreaks)
! [ 31: Jesper Skov ]
!A [ 0: Mike Nordell ]
! [ 83: Jesper Skov ]
!A [ 0: Mike Nordell ]
! [ 36: Jesper Skov ]
! [ 0: Mike Nordell ]
!A [ 46: Jesper Skov ]
! [ 28: Jesper Skov ] LineBreaks vs Page/ColBreaks
!A [ 0: Martin Sevior ]
! [ 42: Jesper Skov ]
! [ 0: Randy Kramer ]
! [ 0: sam th ]
!A [ 0: Eric W. Sink ]
! [ 44: Jesper Skov ]
! [ 0: Justin Bradford ] Re: Summary (was Re: asserts and pagebreaks)
! [ 0: Mike Nordell ] Re: FieldStart/End Runs
!S [ 0: Mike Nordell ] Preliminary Cursor patch
! [ 0: Joaquín Cuenca Abela]
! [ 0: Mike Nordell ]
! [ 0: Mike Nordell ] patch for the cursor patch
! [ 0: sam th ] A Proposal (why we should have setBold(true))
! [ 0: Bruce Pearson ]
! [ 0: sam th ]
! [ 0: Martin Sevior ]
! [ 0: Mike Nordell ]
! [ 0: jeff@abisource.com ]
! [ 0: sam th ]
! < 0: Eric W. Sink >
! [ 0: sam th ]
! < 0: Paul Rohr >
! [ 0: sam th ]
! [ 0: Paul Rohr ]
! [ 0: sam th ]
! [ 0: Paul Rohr ]
! [ 0: sam th ]
! [ 0: Jesper Skov ] [RFC] New fl_BlockLayout::findPointCoords implementation
! [ 0: Martin Sevior ]
! [ 0: Jesper Skov ]
! [ 0: Martin Sevior ]
! [ 0: Jesper Skov ]
! [ 0: sam th ]
! [ 0: Martin Sevior ]
! [ 0: Mike Nordell ]
! [ 0: Mike Nordell ]
! [ 0: Jesper Skov ] IP and Fields (and another Field problem)
! [ 0: Martin Sevior ]
! [ 0: Jesper Skov ]
! [ 0: Martin Sevior ]
! [ 0: Jesper Skov ]
!A [ 0: Martin Sevior ] Calculating Cursor Size ar Run boundaries.
! [ 83: Jesper Skov ]
! [ 0: sam th ]
! [ 0: Paul Rohr ] raw material for fields design
! [ 0: Paul Rohr ] fields -- known bugs in the existing implementation
! [ 0: Martin Sevior ]
! [ 0: Paul Rohr ] fields -- file format issues
! [ 0: Paul Rohr ] fields -- miscellaneous design details
! [ 0: Paul Rohr ] fields -- proposed designs on the table
! [ 0: Paul Rohr ] fields -- related issues for later
! [ 0: Jesper Skov ] [RFC] new findPointCoords implementation
! < 0: Martin Sevior >
! [ 0: Jesper Skov ] findPointCoords changes checked in
! [ 0: sam th ] re: [RFC2] new findPointCoords implementation (fwd)
! [ 0: sam th ] Re: [RFC2] new findPointCoords implementation (and bug triage(sp?)) (fwd)
! [ 0: Martin Sevior ] Re: [RFC2] new findPointCoords implementation (and bug triage(sp?))
! [ 0: sam th ]
! [ 0: Jesper Skov ] [RFC] fp_EmptyTextRun
! [ 0: Martin Sevior ]
! [ 0: Paul Rohr ] empty blocks vs. zero-length runs
! [ 0: Jesper Skov ]
! [ 0: Paul Cubbage ]
! [ 0: Paul Rohr ]
!A [ 0: Jesper Skov ]
! [ 32: Jesper Skov ]
! [ 0: Paul Rohr ] fields design -- proposed edit/select behaviors
! [ 0: Martin Sevior ]
! [ 0: Paul Rohr ]
! [ 0: Justin Bradford ]
! [ 0: Paul Rohr ] fields design -- no field codes
! [ 0: Paul Rohr ] commit -- sample documents with fields
! [ 0: Paul Egli ] Blank Paragraphs
! [ 30: Jesper Skov ]
! [ 0: Aaron Lehmann ] commit -- fixed -- Martin's segfault on startup
!A [ 0: Jesper Skov ] Thoughts on text styles, Show Paragraphs, and internal representation
! [ 0: Randy Kramer ]
! [ 0: Randy Kramer ]
! [ 0: Jesper Skov ]
!A [ 0: Randy Kramer ]
! [ 16: Jesper Skov ]
! [ 16: Jesper Skov ]
! [ 0: Randy Kramer ]
! [ 0: Big Ed ] Cursor movement
! [ 0: Martin Sevior ]
! [ 0: sam th ]
!A [ 0: Mike Nordell ]
! [ 0: sam th ]
! [ 0: WJCarpenter ] navigating the sources (was Re: patch: do-again for Background Checks patch)
! [ 0: Martin Sevior ] Fields Update.
! [ 0: Paul Rohr ] fields design -- assumptions
! [ 0: Paul Rohr ] fields design -- FIELDs vs. CHUNKs (LONG)
! [ 0: Paul Rohr ] chunks design -- ABW-format selections on the clipboard
! [ 0: Martin Sevior ]
! [ 0: Paul Rohr ] Re: chunks design -- ...
! [ 0: Martin Sevior ]
! [ 0: Paul Rohr ]
! [ 0: Paul Rohr ] fields design -- FIELD is a strux
! [ 0: Martin Sevior ]
! [ 0: Paul Rohr ] fields design -- editing operations
! [ 0: Paul Rohr ] fields design -- separate endStrux() APIs??
! [ 0: Paul Rohr ] one more try on fields design
! [ 0: Paul Rohr ] fields -- ASSERT(field updates are rare, and undoable)
! [ 0: Paul Rohr ] fields -- ASSERT(headers and footers are a special case)
! [ 0: Paul Rohr ] fields -- ASSERT(all fields are actually chunks)
! [ 0: Martin Sevior ] Yet another Fields update.
! [ 0: sam th ]
! [ 0: Martin Sevior ]
! [ 0: sam th ]
! [ 0: Martin Sevior ] Re: Field bugs was Re: commit: undebugged Lists and Fields.
! < 0: Martin Sevior >
! [ 0: Sam TH ]

There's a lot, huh? :)

I expect that this will probably take months to do - if I don't get
fed up with it all and give up on the way. So I'll try to post
occasional progress reports and battle plans on the list so people can
track the progress (or lack thereof).

I'll also use a ChangeLog and ask anyone who decide to hack on the
same files to do the same. That way it should be easier for people to
both track what has been done, and how.

I'll be interested in hearing comments, complaints, whatever...

Cheers,
Jesper



This archive was generated by hypermail 2b25 : Tue Dec 26 2000 - 05:35:27 CST