[brailleblaster] Re: Block diagram with clarifications

  • From: "John J. Boyer" <john.boyer@xxxxxxxxxxxxxxxxx>
  • To: brailleblaster@xxxxxxxxxxxxx
  • Date: Sun, 14 Oct 2012 07:26:37 -0500

I think it is time for others to express their opinions. From early 
discussions it was obvious to me that BrailleBlaster needed a word 
processor so it could create and alter documents. I wasn't even aware of 
a different understanding until Michael said that BrailleBlaster should 
not create documents.

John

On Sun, Oct 14, 2012 at 11:43:16AM +0100, Michael Whapples wrote:
> On the word processor, I will just put this down as yet another example of 
> the BrailleBlaster project being poorly defined and documented. Obviously 
> "basic word processing" was never properly defined, and so as a result 
> (predictably) people have concluded very different things.
> 
> Word processing in BrailleBlaster beyond what I have been describing to me 
> has no obvious contribution to BrailleBlaster meeting its goals of providing 
> a user friendly way for people who may not be Braille experts to produce high 
> quality tactile documents. Please explain how word processor as you describe 
> contributes to the goals. Have I missed a goal of BrailleBlaster`? What was 
> that goal?
> 
> Doing things which do not contribute to a project's goals is an unnecessary 
> use of resources, I just want to ensure this does not happen here. There 
> possibly are serious questions to ask regarding resources, originally 
> BrailleBlaster was planned to take two years, this has been missed, why? If 
> its a lack of resources, then its even more critical to ensure that none are 
> wasted.
> 
> Michael Whapples
> On 14 Oct 2012, at 11:12, John J. Boyer <john.boyer@xxxxxxxxxxxxxxxxx> wrote:
> 
> > To put it plainly, I am not at all interested in reducing duplication 
> > between BrailleBlaster and liblouisutdml. In fact, I would consider it a 
> > distraction and unwise. It would further increase the confusion about 
> > the difference between Braille and print, and it would require coding 
> > effort that could be better spent on other things. 
> > 
> > This debate has had the merit of making me think more about how 
> > BrailleBlaster works. Most of the things in the configurationn file 
> > really belong in the UserSettings file. newentries and 
> > internetAccessRequired can go in the semantic-action files. The latter 
> > is needed to tell BrailleBlaster that it will need to access the 
> > Internet for information, such as a DTD to be used in validation. APH 
> > wants to do validation. They also want to be able to download files from 
> > the Internet. 
> > 
> > A semantic-action file tells BrailleBlaster how to set up the document 
> > model given a parse tree of the document. 
> > 
> > Michael, I am surprised that you don't think a decent word processor is 
> > part of BrailleBlaster. It was decided at the beginning that we would 
> > not use an existing word processor. ViewPlus had too much experience 
> > with the difficulties of doing so. The word processor is built into the 
> > specifications. The edit submenu contains all the usual editing items. 
> > 
> > I am quite sure that both blind and sighted users will expect a 
> > reasonable, but not fancy word processor. If they do not get it they 
> > will consider BrailleBlaster an inferior product.
> > 
> > I think it would be bestto move on. You can still help with Mercurial 
> > and Java. 
> > 
> > John
> > 
> > On Sun, Oct 14, 2012 at 10:39:14AM +0100, Michael Whapples wrote:
> >> OK, see my responses inline below.
> >> 
> >> Michael Whapples
> >> On 14/10/2012 00:50, John J. Boyer wrote:
> >>> Michael,
> >>> 
> >>> Your view of BrailleBlaster is more restrictive than mine, and I think
> >>> than most of the people who are working on it. My understanding of the
> >>> original specification is that BrailleBlaster is to be a word processor
> >>> with special Braille facilities.
> >> MW: Really, I thought BrailleBlaster was an application for producing 
> >> high quality tactile documents. I thought that the word processing 
> >> facility was just part of the application assisting in reaching that 
> >> goal. If making a word processor with Braille facilities, then why not 
> >> take an existing word processor, which probably will be far more 
> >> advanced than we could hope to produce ourselves, and create an add-on. 
> >> MS Word being the most well known, OpenOffice/LibreOffice being probably 
> >> the best known open source alternative, but there are others like lotus 
> >> symphony.
> >> 
> >>> The print view is simply a standard WYSIWYG eord procesor. The user does
> >>> not normally see the structure of the xml document any more than the
> >>> user of MSWord sees the structure of a doc file.
> >> MW: Yes and no. A sighted user even in WYSIWYG editors do see the 
> >> structure of the document, the problem is that sometimes 
> >> authors/authoring tools don't produce proper structures and fake the 
> >> look of the structure. So My point was that the WYSIWYG editor of 
> >> BrailleBlaster needs to highlight (not screen highlighting, but rather 
> >> just drawing attention to) what is actual structure and what is not. 
> >> Again its a representation of information.
> >> 
> >> MW: As an example, sometimes authors will fake the look of a heading by 
> >> applying text attributes to a block of text rather than specifying an 
> >> actual heading. In such a case, MS word's WYSIWYG editor will know the 
> >> difference of this to where the author used a heading style, where a 
> >> heading style is used a screen reader will actually announce heading 
> >> information, where as for the case of altered text attributes it won't 
> >> (also Word can use things marked with heading styles to create table of 
> >> contents, etc). However, visually the two ways may look the same, and so 
> >> the structure is less possible to see.
> >> 
> >> MW: Coming back to BrailleBlaster, the editor needs to draw the user's 
> >> attention to these sorts of deviation from proper structuring. 
> >> Continuing with the heading example, as far as I know font size has no 
> >> bearing on what Braille will be produced, therefore it need not show the 
> >> font size changes, if headings are shown larger (which is a fairly 
> >> normal print convention) then the structure can be seen in quite an 
> >> intuitive way. The user may not believe they are seeing "structure" but 
> >> they are.
> >> 
> >> MW: Also, I must make it clear, they would not be seeing the XML 
> >> structure, they would be seeing the document structure. The subtlety 
> >> being that they would not be seeing DAISY, ePub, docbook, Word doc, etc 
> >> structure, they would be seeing the abstract document (probably the 
> >> document model) structure, or more accurately a representation of the 
> >> structure.
> >>> Reducing duplication between BrailleBlaster and liblouisutdml is not a
> >>> goal. The goal is clarity. That is the reason for separate files. In
> >>> liblouisutdml there are cases of blocks of code that are similar but
> >>> that have enough difference that combining them would reuire a lot of
> >>> extra code and probably a much greater chance for bugs. The same is true
> >>> to an even greater extent between liblouisutdml and BrailleBlaster.
> >> MW: Well reducing duplication is normally not stated as a project goal, 
> >> its just a good practice principal. It generally makes things much more 
> >> maintainable, fewer places to fix discovered bugs, fewer places to add 
> >> enhancements, greater chance things will exhibit consistent behaviour, 
> >> etc. Having looked at things, I feel there is even unnecessary 
> >> duplication inside liblouisutdml, configuration files just cover too 
> >> much, I mean cover too many processes, linking stuff which probably 
> >> should never be linked. Just because I desire using a different paper 
> >> size, why do I need to redefine things like XML processing? Surely XML 
> >> processing has nothing to do with my output paper size?
> >> 
> >> MW: If clarity is what is being sought, may be its time to decide taking 
> >> a different approach. I seem to remember when you first sent information 
> >> about BrailleBlaster configuration and semantic action files there being 
> >> confusion, now I have been confused, this doesn't seem to hold good 
> >> indications for clarity.
> >> 
> >> MW: I just await those questions like: "I have changed my BrailleBlaster 
> >> configuration yet the Braille output is not changed, why is this so?" 
> >> Will people really grasp the idea that the one piece of software they 
> >> downloaded has two sets of configuration files, will they be aware when 
> >> only one needs changing and when both will?
> >> 
> >> MW: I just feel its unmaintainable, both technically and from user 
> >> experience/support, therefore for this corner of BrailleBlaster I have 
> >> to say, I have said my view and if you pursue it then I may be best to 
> >> not be involved with this part so I don't have conflicts (how can I 
> >> support something I don't believe in).
> >>> Sighted users do like to get hard copies of documents. They will expect
> >>> a reasonable format, though not, of course, all the formatting of
> >>> MSWord.
> >>> 
> >>> I would like to see others join in this discussion.
> >>> 
> >>> John
> >>> 
> >>> On Sat, Oct 13, 2012 at 08:03:02PM +0100, Michael Whapples wrote:
> >>>> This is just puzzling me further. I think there must be some fundamental
> >>>> parts of BrailleBlaster which are not properly defined. While
> >>>> documentation can seem burdensome, it sometimes is necessary to ensure
> >>>> people are talking about the same things. May be BrailleBlaster needs
> >>>> more documentation and may be a glossary for what certain terms mean. In
> >>>> this spirit, I have quoted certain phrases in the following message and
> >>>> given definitions for what I understand these terms to mean (see end of
> >>>> my message for my glossary).
> >>>> 
> >>>> First thing is, may be semantic action files are doing too much, in this
> >>>> I mean both liblouisutdml and BrailleBlaster semantic action files. When
> >>>> one looks at BrailleBlaster and liblouisutdml there are certain things
> >>>> which are common to both (eg. loading a document into a "document model"
> >>>> from the "original source"). In trying to minimise duplication then
> >>>> these common actions should be made common. While the ideal case might
> >>>> be the code and the rules for how to do this would be shared, it may not
> >>>> be possible to have common code, but if the rules are defined in
> >>>> external files then these should be reusable. I would argue that the
> >>>> code could even be common, while liblouisutdml may not want to become
> >>>> specific to BrailleBlaster, BrailleBlaster is certainly highly linked to
> >>>> liblouisutdml, so why couldn't that offer a function to applications for
> >>>> loading a "document model". Obviously this would need the Java bindings
> >>>> for liblouisutdml to know how to convert the C "document model" into a
> >>>> Java "document model" and probably back.
> >>>> 
> >>>> So what I am saying is, may be semantic action files need to be changed
> >>>> as to what they work on, rather than working on "original source" they
> >>>> should work on a "document model". Then the files defining the rules for
> >>>> mapping from "original source" to "document model" could be common and
> >>>> so no duplication there.
> >>>> 
> >>>> Now to the fundamentals which aren't making sense to me. Well I will
> >>>> only mention one, as its relevant and I don't want to spend too much
> >>>> time writing this email.
> >>>> 
> >>>> What is the "print view"? What is the "print view" for? How does the
> >>>> "print view" add to BrailleBlaster goals? What is the "print view" not?
> >>>> My answers to these say that the suggested configuration files contain
> >>>> stuff they should not need to contain, hence why I am asking these
> >>>> questions in case the definition has moved on.
> >>>> 
> >>>> Here are some answers from my understanding:
> >>>> 1. The print view is a representation of the document using "print text
> >>>> characters". The print view will allow the user to easily see the
> >>>> structure of the document according to the actual structural definition.
> >>>> 2. The print view will be used by the user to identify where the
> >>>> "original source" did not give specific structural information and so
> >>>> will allow the user to correct this so that when the document is
> >>>> translated the Braille will contain the correct layout. An example of
> >>>> where a document might not contain correct structural information is
> >>>> where the author specified fonts and other text attributes for a heading
> >>>> rather than using the correct mark up for a heading.
> >>>> 3. By allowing the user to identify where the document does not contain
> >>>> sufficient structural information to allow a good quality Braille
> >>>> translation, it will assist the user in ensuring that the document has
> >>>> correct structural information and so hopefully lead to better quality
> >>>> Braille documents being produced.
> >>>> 4. The "print view" is not designed for "pretty print documents". If a
> >>>> user desires a pretty print document to read there document in print
> >>>> form then they may be advised to find alternative software designed for
> >>>> that purpose. Equally the "print view" would not be for creating
> >>>> perfectly formatted hard copy pretty print documents, again other
> >>>> software may be better designed for that task. To implement any of this
> >>>> answer in BrailleBlaster's print view would not contribute to the goals
> >>>> of BrailleBlaster as I understand them, hence why they are what the
> >>>> print view is not.
> >>>> 
> >>>> Taking my answers, particularly to the question of what the "print view"
> >>>> is not, I have questions over why BrailleBlaster configuration files
> >>>> need page information. Why would someone be printing the "print view",
> >>>> if the view is purely on screen then why does it need splitting into
> >>>> pages? The only case I can see for when a page break needs to be seen in
> >>>> the "print view" is when the document contains an explicit page break.
> >>>> On screen need not have paper size, margins, etc, these are all just
> >>>> unnecessary.
> >>>> 
> >>>> Again, may be configuration files are covering too much, may be they
> >>>> need to focus on specific parts of the process. As an example, when
> >>>> would it ever be needed that BrailleBlaster would need internet access
> >>>> to load the document but liblouisutdml would not? Surely this
> >>>> information could be shared? In fact, is there anything in the xml
> >>>> section of a liblouisutdml configuration file which would not be
> >>>> relevant to BrailleBlaster? So in seeking maximum reuse, why cannot
> >>>> BrailleBlaster use a liblouisutdml configuration file? May be correct
> >>>> uses of sections in the configuration files would be needed, eg. a
> >>>> [BrailleBlaster] section which liblouisutdml will happily ignore. These
> >>>> configuration files could be provided by the BrailleBlaster project if
> >>>> you don't want liblouisutdml to ship with this extra stuff, also correct
> >>>> uses of include statements could help here in keeping the separation you
> >>>> want. Also the liblouisutdml specific stuff is actually relevant to
> >>>> BrailleBlaster here, BrailleBlaster will need to provide a user friendly
> >>>> way of configuring liblouisutdml, so why not have it that BrailleBlaster
> >>>> works on one file?
> >>>> 
> >>>> Glossary:
> >>>> Document model: An abstract representation of a document. It should be a
> >>>> common model regardless of where the document came from or what the
> >>>> "original source" format is. There may be different implementations of a
> >>>> document model for different programming languages, but it might be
> >>>> conceivable that there may be ways of passing thenm between programming
> >>>> languages if such interoperability was desired.
> >>>> Original source: This is the format of a particular document, examples
> >>>> might be epub, docbook, daisy, XHTML, and so on.
> >>>> Pretty print documents: This is a print document as one would desire if
> >>>> producing it for a sighted audience, IE. how a publisher would intend to
> >>>> make a book look, making an article presentable for publishing, etc.
> >>>> Print view: The visual view of the document in BrailleBlaster, where the
> >>>> text will use print text characters and the view will allow
> >>>> identification of the document's structure. The print view will allow
> >>>> editing of the document, this is mainly to allow the user to correct
> >>>> minor text issues (eg. spelling mistakes) and correct formatting (eg. if
> >>>> the original source presented a heading by increasing the font, etc
> >>>> rather than specifying the correct structural element for a heading).
> >>>> Print text characters: These are the print characters of the alphabet.
> >>>> Most commonly the characters within the latin character set, but could
> >>>> also be Chinese characters, etc.
> >>>> 
> >>>> Michael Whapples
> >>>> On 13/10/2012 17:03, John J. Boyer wrote:
> >>>>> well, there is a lot of misunderstanding. I misunderstood your
> >>>>> presentation in your first message, thinkikng it was not
> >>>>> well-thought-out. Here is more explanation.
> >>>>> 
> >>>>> BrailleBlaster semanntic-action files are used to construch a document
> >>>>> model. This model is then used for displaying and editing both the print
> >>>>> and Braille views.
> >>>>> 
> >>>>> Braille rules vary wildly from one country to another. It is less
> >>>>> confusing to have a fairly standard print display of the document. The
> >>>>> user can always see how a block of characters is rendered in Braille by
> >>>>> focusing on the Braille window. This will show the part of the print
> >>>>> text corresponding to each line of the Braille in the print window.
> >>>>> 
> >>>>> There is a great deal in liblouisutdml semantic-action files that is
> >>>>> meaningless to BrailleBlaster. Similarly, the structure of
> >>>>> semantic-action files that is best for BrailleBlaster would not work in
> >>>>> liblouisutdml. Trying to combine the two to keep down the number of
> >>>>> files would lead to a great deal of confusion. There is already a lot of
> >>>>> confusion between what pertains to print and what pertains to Braille.
> >>>>> 
> >>>>> liblouisutdml and BrailleBlaster development should remain separate,
> >>>>> because liblouisutdml and liblouis are intended to form a transcription
> >>>>> engine that can be used in almost any application. Of course,
> >>>>> liblouisutdml can be enhanced with functionality that we discover is
> >>>>> needed while developing BrailleBlaster. An example would be a function
> >>>>> to report how much of a transcription is finished as a percentage, so
> >>>>> that it can be used in a progress bar.
> >>>>> 
> >>>>> John
> >>>>> 
> >>>>> On Sat, Oct 13, 2012 at 04:11:31PM +0100, Michael Whapples wrote:
> >>>>>> I did put thought into the reply, to say it wasn't well thought out to
> >>>>>> me feels insulting.
> >>>>>> 
> >>>>>> Whether I understood everything fully may be a question, if there are
> >>>>>> misunderstandings then we would do better in trying to explain it 
> >>>>>> better.
> >>>>>> 
> >>>>>> I am still unclear to really what the difference of semantic action
> >>>>>> files for BrailleBlaster and liblouisutdml are. Yes print is not 
> >>>>>> Braille
> >>>>>> and vice versa, but both are generated from documents. So map from the
> >>>>>> document model to the view, why have the view go right back to the
> >>>>>> original XML?
> >>>>>> 
> >>>>>> Documents may come from many sources, so why not map from the file
> >>>>>> format to the document model? This surely would reduce duplication of
> >>>>>> how to process a particular flavour of XML as there would only be one
> >>>>>> definition of how to process it.
> >>>>>> 
> >>>>>> With what I have suggested, there would be files to map from file
> >>>>>> formats into the document model and files to map from the document 
> >>>>>> model
> >>>>>> to the user's representation of the document (print or Braille). With
> >>>>>> what I am suggesting, add a new supported document format, you only 
> >>>>>> need
> >>>>>> to add one file to map from the format to the document model, rather
> >>>>>> than one for each user's representation (at current that would be two
> >>>>>> files). Want to add another user's representation, my idea would mean
> >>>>>> add one mapping, under what has been proposed I understand it to 
> >>>>>> require
> >>>>>> as many files as formats supported.
> >>>>>> 
> >>>>>> May be the current design of BraileBlaster and liblouisutdml where they
> >>>>>> are fairly separated would not allow exactly what I suggest, but still
> >>>>>> why do they need separate files to use? Isn't there a way to allow them
> >>>>>> to share semantic action files? This would at least reduce the work in
> >>>>>> supporting various formats. There may be features of the files not used
> >>>>>> by both (eg. the files may specify editing information which
> >>>>>> liblouisutdml does not need), but any uneedede information could be
> >>>>>> ignored by that tool (liblouisutdml could ignore editing information).
> >>>>>> 
> >>>>>> Further to the above, I also reject the idea that BrailleBlaster's GUI
> >>>>>> is producing print documents. This is quite a subtle point, the
> >>>>>> rejection is that we are not producing software which sighted people
> >>>>>> would choose to use to print documents because the visual output is so
> >>>>>> pretty, rather the visual aspect is more to show the document structure
> >>>>>> so that a sighted person will understand how the document will be
> >>>>>> translated (IE. a heading need not look like a print heading as in a
> >>>>>> print book, they just need a way that they can easily distinguish there
> >>>>>> is a heading which will appear in Braille). My point here is that the
> >>>>>> visual display needs to represent what should happen in the translation
> >>>>>> process, so may be the two are fairly linked in what they need to show,
> >>>>>> IE. they are just different ways of showing the same information.
> >>>>>> 
> >>>>>> I guess a better phrase to describe what I mean, BrailleBlaster's GUI
> >>>>>> shows a print representation of BrailleBlaster's document, 
> >>>>>> liblouisutdml
> >>>>>> will produce a Braille representation of that document. Ideally the
> >>>>>> Braille representation needs to conform to official Braille rules (I
> >>>>>> mean more than just the translation, I mean follow the standard for
> >>>>>> formatting), so may be the BrailleBlaster document model will be swayed
> >>>>>> towards Braille rules.
> >>>>>> 
> >>>>>> Notes on what I have used, to show this was thought out:
> >>>>>> * BrailleBlaster semantic action files are tied to the underlying
> >>>>>> document format: Appendix B says "the key part of a line in a
> >>>>>> semantic-action file is a reference to markup in the document. This may
> >>>>>> be literal markup or an XPath expression".
> >>>>>> * Section 4 of the liblouisutdml documentation has the title 
> >>>>>> "Connecting
> >>>>>> with the XML document - Semantic action files", this sounds very much
> >>>>>> like it goes right back to the underlying XML as well, also supported 
> >>>>>> by
> >>>>>> mentions of using xpath expressions to identify nodes, etc.
> >>>>>> * My statement of documents should go to a intermediate document model,
> >>>>>> so that the various views need not be concerned with the underlying
> >>>>>> document format, this is a key part of object orientation. If the
> >>>>>> document model were represented by a interface, then the view only 
> >>>>>> needs
> >>>>>> to know that what it has been handed implements that interface, it need
> >>>>>> not know how it works or even what class type it is. This is why
> >>>>>> frameworks which use dependency injection, such as the spring 
> >>>>>> framework,
> >>>>>> can be extended so easily, although it must be noted that I am not
> >>>>>> suggesting we go as far as using dependency injection or spring 
> >>>>>> framework.
> >>>>>> * My thought on BrailleBlaster's GUI and the Braille being just
> >>>>>> different representations of the same information, a similar example
> >>>>>> might be having data in a table and the same data plotted on a graph, 
> >>>>>> it
> >>>>>> may look very different but it contains exactly the same information. 
> >>>>>> It
> >>>>>> must be noted that even for some data there may be a number of 
> >>>>>> different
> >>>>>> choices of what sort of graph could be used (eg. peoples' responses to 
> >>>>>> a
> >>>>>> multiple choice question, it could be shown on a bar chart, it possibly
> >>>>>> could be shown in a PI chart).
> >>>>>> * Further to that last point, the data may be held in many ways, it
> >>>>>> might be in an excel spreadsheet, it might be in a database, it might 
> >>>>>> be
> >>>>>> in a CSV file, may be in XML, etc. It just seems crazy duplication to
> >>>>>> map straight from the input to the output rather than going to an
> >>>>>> intermediate model (eg. for responses to a multiple choice question I
> >>>>>> have identified three outputs and I have named 4 input formats, direct
> >>>>>> mapping requires 12 mappings, mapping to an intermediate model would
> >>>>>> only require 7 in total, 4 mappings for input and 3 mappings for
> >>>>>> outputs. It gets worse as you add more inputs/outputs, add another
> >>>>>> output you will need 16 direct mappings, but only 8 if going through a
> >>>>>> common model, increase outputs to 5 and you need 20 direct mappings but
> >>>>>> only 9 if going through the model, and so on).
> >>>>>> * How many inputs and outputs do we wish to support in BrailleBlaster?
> >>>>>> There are certainly a large number of inputs, there are many file
> >>>>>> formats out there and as I mentioned it is possible to think that other
> >>>>>> outputs could be conceived (eg. conversion to speech document). I
> >>>>>> certainly do not wish to support such a level of duplication as my
> >>>>>> calculations seem to suggest may need supporting in BrailleBlaster.
> >>>>>> 
> >>>>>> Michael Whapples
> >>>>>> On 13/10/2012 02:36, John J. Boyer wrote:
> >>>>>>> The configuration files are analogous to MSWord templates. The
> >>>>>>> semantic-action files enable BrailleBlaster to work with any flavor of
> >>>>>>> xml. The different flavors all use different markup. BrailleBlaster 
> >>>>>>> uses
> >>>>>>> a different set of configuration and semantic-action files than
> >>>>>>> liblouisutdml because print is not Braille and BrailleBlaster also 
> >>>>>>> does
> >>>>>>> editing. The algorithms in liblouisutdml have been successful, so it 
> >>>>>>> is
> >>>>>>> worthwhile to consider adapting them for wider application.
> >>>>>>> 
> >>>>>>> The reply does not seem to be well-thought out.
> >>>>>>> 
> >>>>>>> John
> >>>>>>> 
> >>>>>>> On Fri, Oct 12, 2012 at 08:42:58PM +0100, Michael Whapples wrote:
> >>>>>>>> I guess the main thing which crosses my mind is that there seems to 
> >>>>>>>> be
> >>>>>>>> quite a bit of duplication between BrailleBlaster and liblouisutdml,
> >>>>>>>> particularly configuration files and semantic action files.
> >>>>>>>> 
> >>>>>>>> If focusing on configuration files and semantic action files, I just
> >>>>>>>> don't get the difference of those for BrailleBlaster and 
> >>>>>>>> liblouisutdml.
> >>>>>>>> OK, its said that the BrailleBlaster ones are for how BrailleBlaster
> >>>>>>>> displays documents and the liblouisutdml ones are for how Braille is
> >>>>>>>> produced, but what is the difference, surely the idea of the GUI of
> >>>>>>>> BrailleBlaster is so that people can see the structure of the 
> >>>>>>>> document
> >>>>>>>> and how that might be handled for being put into Braille? Why does
> >>>>>>>> processing for the specific output have to always go right back to 
> >>>>>>>> the
> >>>>>>>> underlying document format?
> >>>>>>>> 
> >>>>>>>> Let me give some examples: Documents normally contain certain common
> >>>>>>>> features, headings, paragraphs, lists, emphasised text, etc. All the 
> >>>>>>>> GUI
> >>>>>>>> is interested in is whether it has a heading, a list, a paragraph, 
> >>>>>>>> etc,
> >>>>>>>> it should not be interested in how XHTML, docbook, epub, etc store 
> >>>>>>>> these
> >>>>>>>> elements. Equally, there are two outputs (at current) which the user 
> >>>>>>>> may
> >>>>>>>> encounter, the BrailleBlaster GUI and Braille/tactile document.
> >>>>>>>> 
> >>>>>>>> Requiring a mapping from file format to output system leads to a 
> >>>>>>>> large
> >>>>>>>> number of files required. In this case where there are two views
> >>>>>>>> (BrailleBlaster's GUI and Braille from liblouisutdml) we need twice 
> >>>>>>>> as
> >>>>>>>> many as supported document formats. If additional document views were
> >>>>>>>> added (eg. may be someone wanted to add a way to produce a spoken
> >>>>>>>> version using TTS, not suggesting it as an actual feature at this 
> >>>>>>>> point)
> >>>>>>>> then another whole set of files for all supported formats would need
> >>>>>>>> producing.
> >>>>>>>> 
> >>>>>>>> I guess I am thinking down the MVC design pattern, the document is 
> >>>>>>>> the
> >>>>>>>> model and implements a common model regardless of where it came from,
> >>>>>>>> the views being BrailleBlaster's GUI and the Braille document (at the
> >>>>>>>> moment) and the controller being there simply to introduce the two
> >>>>>>>> together. If a new document format was supported then neither view 
> >>>>>>>> needs
> >>>>>>>> any modification, if a new view were added then none of the support
> >>>>>>>> formats would be affected. Sounds much more maintainable.
> >>>>>>>> 
> >>>>>>>> Additionally with what was originally suggested, I get the feeling 
> >>>>>>>> that
> >>>>>>>> BrailleBlaster's GUI could show document elements differently 
> >>>>>>>> depending
> >>>>>>>> on what file format is being viewed (IE. a heading may look 
> >>>>>>>> different 
> >>>>>>>> if
> >>>>>>>> viewing a epub rather than docbook). OK, one might work to try and 
> >>>>>>>> not
> >>>>>>>> let this happen, but the potential is there from what I understand.
> >>>>>>>> 
> >>>>>>>> Just my views.
> >>>>>>>> 
> >>>>>>>> Michael Whapples
> >>>>>>>> On 12/10/2012 18:39, John J. Boyer wrote:
> >>>>>>>>> Here is the block diagram with some clarifications. I would 
> >>>>>>>>> appreciate
> >>>>>>>>> comments. It is important to be quite sure that this is the best
> >>>>>>>>> approach for BrailleBlaster.
> >>>>>>>>> 
> >>>>>>>>> --------------------
> >>>>>>>>> 
> >>>>>>>>> This is a sort of informal block diagram in narrative form. It is
> >>>>>>>>> intended as a guide for the future development of BrailleBlaster.
> >>>>>>>>> 
> >>>>>>>>> Input may be in the form of an xml file or it may be a utd working 
> >>>>>>>>> file
> >>>>>>>>> which has been saved so that work can be resumed later. xml files 
> >>>>>>>>> may
> >>>>>>>>> be
> >>>>>>>>> original well-formed files of any flavor, for example, dtbook, 
> >>>>>>>>> docbook,
> >>>>>>>>> etc. They may also be derived from other formats such as MSWord, 
> >>>>>>>>> rtf,
> >>>>>>>>> and so on. Another source is file sets, such as NIMAS or epub. In 
> >>>>>>>>> this
> >>>>>>>>> case the manifest is opened, and the file to be processed is chosen
> >>>>>>>>> from
> >>>>>>>>> it. A means is provided to concatenate several files into one. xml
> >>>>>>>>> files
> >>>>>>>>> can also be derived from plain-text by calling the translateTextFile
> >>>>>>>>> method with formatFor utd or from brf files by calling
> >>>>>>>>> backTrnslateFile,
> >>>>>>>>> also with formatFor utd.
> >>>>>>>>> 
> >>>>>>>>> Whatever its source, an xml file is rendered by calling 
> >>>>>>>>> translateFile
> >>>>>>>>> with formatFor utd. BrailleBlaster then works on the utd file 
> >>>>>>>>> produced.
> >>>>>>>>> In the case of formerly saved utd files or those produced by 
> >>>>>>>>> importing
> >>>>>>>>> plain text or brf files, BrailleBlaster works with these directly.
> >>>>>>>>> 
> >>>>>>>>> The file is first parsed to produce a parse tree.
> >>>>>>>>> 
> >>>>>>>>> The configuration files indicated in the user's settings are then 
> >>>>>>>>> read
> >>>>>>>>> and used to begin the construction of a semantic table. This table 
> >>>>>>>>> is
> >>>>>>>>> used to specify how markup in the document is to be rendered on the
> >>>>>>>>> screen and how styles and actions are to be associated with markup 
> >>>>>>>>> for
> >>>>>>>>> editing. For more on configuration files see Appendix A.
> >>>>>>>>> 
> >>>>>>>>> Semantic-action files are then read. A file is chosen by looking 
> >>>>>>>>> for 
> >>>>>>>>> a
> >>>>>>>>> file with the name of the root element and the extension .sem or
> >>>>>>>>> according to an indication in the configuration files. The 
> >>>>>>>>> information
> >>>>>>>>> in the semantic-action files is used to complete the semantic table.
> >>>>>>>>> For
> >>>>>>>>> more on semantic-action files see Appendix B.
> >>>>>>>>> 
> >>>>>>>>> If the semantic-action files contain XPath expressions as keys these
> >>>>>>>>> are
> >>>>>>>>> applied to the parse tree, and the selected nodes are modified by
> >>>>>>>>> adding
> >>>>>>>>> an attribute indicating the entry in the semantic table to be used. 
> >>>>>>>>> The
> >>>>>>>>> value of each key will already have been entered into this table.
> >>>>>>>>> 
> >>>>>>>>> The keys containing markup in the semantic files are then applied to
> >>>>>>>>> the
> >>>>>>>>> parse tree, and a similar attribute is added to the matching nodes,
> >>>>>>>>> unnless it is already present because it has been added by an XPath
> >>>>>>>>> expression.
> >>>>>>>>> 
> >>>>>>>>> This forms the DOM of the document.
> >>>>>>>>> 
> >>>>>>>>> This DOM is then used to display the document on the screen. Both 
> >>>>>>>>> the
> >>>>>>>>> print and Braille windows are filled in this process.
> >>>>>>>>> 
> >>>>>>>>> Editing of the print document can then take place. If the contents 
> >>>>>>>>> of a
> >>>>>>>>> text node are altered the new contents replace the old. They are 
> >>>>>>>>> also
> >>>>>>>>> dynamically translated and the translation is shown in the Braille
> >>>>>>>>> window. If an element node is deleted its entire subtree is 
> >>>>>>>>> deleted. 
> >>>>>>>>> If
> >>>>>>>>> a new block of characters is created the user is prompted to asign 
> >>>>>>>>> it a
> >>>>>>>>> style and a node with the appropriate markup (derived from the
> >>>>>>>>> semantic-action files) is added to the document at the place where 
> >>>>>>>>> the
> >>>>>>>>> new block was created.
> >>>>>>>>> 
> >>>>>>>>> if focus is shifted to the Braille window and the user has checked 
> >>>>>>>>> the
> >>>>>>>>> Edit Braille box on the advanced menu the window can be edited. Any
> >>>>>>>>> editing is highlighted in both the Braille and print windows. The 
> >>>>>>>>> print
> >>>>>>>>> window also changes to show the part of the original text that
> >>>>>>>>> corresponds to each line of Braille.
> >>>>>>>>> 
> >>>>>>>>> Dince the user may wish to view the result of editing Braille in the
> >>>>>>>>> context of the entire document, The translate and back-translate 
> >>>>>>>>> items
> >>>>>>>>> on the menu are replaced with retranslate and reback-translate.
> >>>>>>>>> 
> >>>>>>>>> The file can be saved as a utd file so work can be resumed later or 
> >>>>>>>>> it
> >>>>>>>>> can be saved as the original xml file with enhancements. These 
> >>>>>>>>> consist
> >>>>>>>>> of edited Braille which has been moved into the print document with
> >>>>>>>>> proper markup (specified in the semantic-actionn files). The 
> >>>>>>>>> attributes
> >>>>>>>>> used to create the DOM are removed during the save process. Editing 
> >>>>>>>>> in
> >>>>>>>>> the print window is handled automatically as part of the conversion 
> >>>>>>>>> of
> >>>>>>>>> the parse tree to a file.
> >>>>>>>>> 
> >>>>>>>>> Besides saving the file as utd or as an envanced document, it can be
> >>>>>>>>> saved as a brf file or embossed.
> >>>>>>>>> 
> >>>>>>>>> The enhanced document can then later be rendered by liblouisutdml 
> >>>>>>>>> with
> >>>>>>>>> any liblouisutdml configuration and semantic-action files that the 
> >>>>>>>>> user
> >>>>>>>>> wishes. This can be done either by BrailleBlaster or by another
> >>>>>>>>> application which uses the loblouis-liblouisutdml transcription 
> >>>>>>>>> engine.
> >>>>>>>>> 
> >>>>>>>>> Appendix A: Configuration Files
> >>>>>>>>> 
> >>>>>>>>> Here is a description of BrailleBlaster configuration files. They
> >>>>>>>>> specify how BrailleBlaster shall operate. The one which the user has
> >>>>>>>>> selected is referenced in the userSettings.properties file. 
> >>>>>>>>> Selection,
> >>>>>>>>> creation and editing are done via a dialogue. Note that 
> >>>>>>>>> BrailleBlaster
> >>>>>>>>> configuration files are completely separate from liblouisutdml
> >>>>>>>>> configuration files. They are stored in the configurations directory
> >>>>>>>>> within the programData directory. Below is a sample file. More lines
> >>>>>>>>> will be added as development proceeds. Explanations follow the 
> >>>>>>>>> sample.
> >>>>>>>>> 
> >>>>>>>>> --------------------
> >>>>>>>>> 
> >>>>>>>>> hyphenate=no
> >>>>>>>>> pageNumberAt=top
> >>>>>>>>> topMargin=0.5
> >>>>>>>>> leftMargin=1
> >>>>>>>>> rightMargin=0.5
> >>>>>>>>> bottomMargin=0.5
> >>>>>>>>> paperHeight=11
> >>>>>>>>> paperWidth=8.5
> >>>>>>>>> xmlheader="<?xml=version='1.0'=encoding='UTF-8'=standalone='yes'?>
> >>>>>>>>> semanticFiles=*
> >>>>>>>>> internetAccessRequired=no
> >>>>>>>>> newEntries=yes
> >>>>>>>>> file:filename include
> >>>>>>>>> debug=no
> >>>>>>>>> styles=para,heading1,heading2,list
> >>>>>>>>> 
> >>>>>>>>> --------------------
> >>>>>>>>> 
> >>>>>>>>> The first line specifies whether hyphenation should be used when a
> >>>>>>>>> document is displayed onscreen.
> >>>>>>>>> 
> >>>>>>>>> The second line specifies where the page number should be placed.
> >>>>>>>>> 
> >>>>>>>>> Then come six lines specifying margins and paper size. These are 
> >>>>>>>>> used
> >>>>>>>>> principally for making hard copies.
> >>>>>>>>> 
> >>>>>>>>> the xmlheader line specifies the header that should be used at the
> >>>>>>>>> beginning of new files.
> >>>>>>>>> 
> >>>>>>>>> semanticFiles is a comma-separated list of the semantic files to be
> >>>>>>>>> used. Here the value is an asterisk, which means to use the file 
> >>>>>>>>> which
> >>>>>>>>> is named for the root element of the document. This is actually the
> >>>>>>>>> default, so this line is not strictly necessary.
> >>>>>>>>> 
> >>>>>>>>> InternetAccessRequired specifies whether the Internet will be needed
> >>>>>>>>> for
> >>>>>>>>> processing a document, e.g., for getting a DTD.
> >>>>>>>>> 
> >>>>>>>>> newEntries specifies whether a record should be kept of the markup 
> >>>>>>>>> in a
> >>>>>>>>> document which has not been assigned to a semantic action or style.
> >>>>>>>>> This
> >>>>>>>>> is useful when processing a new flavor of xml for which a
> >>>>>>>>> semantic-action file does not exist. It applies to all documents.
> >>>>>>>>> Semantic-action files can also have a newEntries line. It applies to
> >>>>>>>>> that type of document only.
> >>>>>>>>> 
> >>>>>>>>> The include line, with a preceding filename, specifies that another
> >>>>>>>>> configuration file is to be read at the point where it is 
> >>>>>>>>> encountered.
> >>>>>>>>> 
> >>>>>>>>> debug specifies whether extra testing should be done, experimental
> >>>>>>>>> features used, and extra logging done.
> >>>>>>>>> 
> >>>>>>>>> The styles line gives a comma-separated list of styles that will be
> >>>>>>>>> used
> >>>>>>>>> in displaying and editing a document. These styles are in the styles
> >>>>>>>>> directory.
> >>>>>>>>> 
> >>>>>>>>> The order of entries in a configuration file is generally not
> >>>>>>>>> important.
> >>>>>>>>> However, an include line does cause the referenced file to be read 
> >>>>>>>>> at
> >>>>>>>>> the point where it is encountered.
> >>>>>>>>> 
> >>>>>>>>> Appendix B: Semantic-Action Files
> >>>>>>>>> 
> >>>>>>>>> Semantic-action files associate the markup in a particular type of 
> >>>>>>>>> xml
> >>>>>>>>> document with BrailleBlaster styles, methods (actions) and macros.
> >>>>>>>>> Usually they are named by concatenating the name of the root 
> >>>>>>>>> element 
> >>>>>>>>> of
> >>>>>>>>> the document flavor with the extension .sem They are not to be 
> >>>>>>>>> confused
> >>>>>>>>> with liblouisutdml semantic-action files. The latter are concerned 
> >>>>>>>>> with
> >>>>>>>>> rendering an xml document into Braille and tactile graphics.
> >>>>>>>>> BrailleBlaster semantic-action files are concerned with displaying 
> >>>>>>>>> the
> >>>>>>>>> contents of a document on the screen and with editing them. They are
> >>>>>>>>> stored in the semantics directory in the programData directory. 
> >>>>>>>>> There
> >>>>>>>>> is
> >>>>>>>>> a dialogue for creating and editing them.
> >>>>>>>>> 
> >>>>>>>>> the key part of a line in a semantic-action file is a reference to
> >>>>>>>>> markup in the document. This may be literal markup or an XPath
> >>>>>>>>> expression. There are a few exceptions, which will be discussed 
> >>>>>>>>> later.
> >>>>>>>>> The value part contains the name of a style or action, or of a 
> >>>>>>>>> macro,
> >>>>>>>>> which can combine several styles and actions. it may also contain
> >>>>>>>>> parameters.
> >>>>>>>>> 
> >>>>>>>>> Literal keys may have one of the following forms: an element name; 
> >>>>>>>>> an
> >>>>>>>>> element name, a comma, and an attribute name; an element name, a 
> >>>>>>>>> comma,
> >>>>>>>>> an attribute name, an attribute value. XPath keys begin with the
> >>>>>>>>> characters &xpath with the XPath expression imediately following and
> >>>>>>>>> enclosed in parentheses. The key may also be the word newEntries. If
> >>>>>>>>> the
> >>>>>>>>> value is yes markup which has not yet been associated with anything 
> >>>>>>>>> is
> >>>>>>>>> recorded and placed in a prototype semantic-action file. The key may
> >>>>>>>>> also be the word file, followed by a colon followed by a filename. 
> >>>>>>>>> In
> >>>>>>>>> this case the value is the word include, and the line specifies that
> >>>>>>>>> another semantic file should be read at this point.
> >>>>>>>>> 
> >>>>>>>>> Values start with one of the words action macro style. This is 
> >>>>>>>>> followed
> >>>>>>>>> by a space. If action is specified, the action is one of those 
> >>>>>>>>> below.
> >>>>>>>>> If
> >>>>>>>>> style is specified a style name follows. The extension .properties 
> >>>>>>>>> is
> >>>>>>>>> added to it and it is looked up in the styles directory. Likewise,
> >>>>>>>>> macros are looked up in the macro directory. All three may have
> >>>>>>>>> parameters preceded by a space and separated by comas.
> >>>>>>>>> 
> >>>>>>>>> The following actions may be specified.
> >>>>>>>>> 
> >>>>>>>>>  no, Do nothing except insert a space.
> >>>>>>>>>  skip, Skip the subtree of which this markup is the root.
> >>>>>>>>>  generic, Apply the parameters.
> >>>>>>>>>  cdata, Special processing for CData sections.
> >>>>>>>>>  htmllink, Insert a link
> >>>>>>>>>  htmltarget, to this target.
> >>>>>>>>>  configfile, Specify a configuration file.
> >>>>>>>>>  configstring, Specify a configuration string.
> >>>>>>>>>  configtweak, Use new configurations while rendering.
> >>>>>>>>>  # reserved styles. These styles are predefined, but may be altered
> >>>>>>>>>  document, Assign to the node that actually contains the content,
> >>>>>>>>>  such
> >>>>>>>>>     as the book node in dtbook.
> >>>>>>>>>  para, A paragraph.
> >>>>>>>>>  heading1,various levels of headings
> >>>>>>>>>  heading2,
> >>>>>>>>>  heading3,
> >>>>>>>>>  heading4,
> >>>>>>>>>  heading5,
> >>>>>>>>>  heading6,
> >>>>>>>>>  heading7,
> >>>>>>>>>  heading8,
> >>>>>>>>>  heading9,
> >>>>>>>>>  heading10,
> >>>>>>>>>  contentsheader, The heading of the table of contents.
> >>>>>>>>>  contents1, Various levels within the contents.
> >>>>>>>>>  contents2,
> >>>>>>>>>  contents3,
> >>>>>>>>>  contents4,
> >>>>>>>>>  contents5,
> >>>>>>>>>  contents6,
> >>>>>>>>>  contents7,
> >>>>>>>>>  contents8,
> >>>>>>>>>  contents9,
> >>>>>>>>>  contents10,
> >>>>>>>>>  # General text
> >>>>>>>>>  attrtotext, Transform an attribute value to text.
> >>>>>>>>>  runninghead, Specify a running header.
> >>>>>>>>>  footer, Specify a page footer.
> >>>>>>>>>  boxline, Specify a line of identical characters.
> >>>>>>>>>  italicx, Italicise the text within the markup.
> >>>>>>>>>  boldx, Bold it.
> >>>>>>>>>  underlinex, Underline it.
> >>>>>>>>>  linespacing, Number of blank lines between lines of characters.
> >>>>>>>>>  blankline, Leave a blank  line.
> >>>>>>>>>  softreturn, Start a new line, but not a new style.
> >>>>>>>>>  newpage, Start a new page.
> >>>>>>>>>  brl, Process the <brl> subtree rooted at this node.
> >>>>>>>>>  music, Display/edit the music notation in this subtree.
> >>>>>>>>>  math, Display/edit the MathML notation in this subtree.
> >>>>>>>>>  chemistry, Display/edit the chemistry notation in this subtree.
> >>>>>>>>>  graphic, Display/edit the graphic pointed to by the markup.
> >>>>>>>>> 
> >>>>>>>>> 
> >>>>>>>>> 
> >> 
> > 
> > -- 
> > John J. Boyer; President, Chief Software Developer
> > Abilitiessoft, Inc.
> > http://www.abilitiessoft.com
> > Madison, Wisconsin USA
> > Developing software for people with disabilities
> > 
> > 
> 

-- 
John J. Boyer; President, Chief Software Developer
Abilitiessoft, Inc.
http://www.abilitiessoft.com
Madison, Wisconsin USA
Developing software for people with disabilities


Other related posts: