All of lore.kernel.org
 help / color / mirror / Atom feed
* [Printing-architecture] Bi-di plug-in functionarities
@ 2002-12-06 13:04 Yasumasa TORATANI
  2002-12-06 15:38 ` Michael Sweet
  0 siblings, 1 reply; 13+ messages in thread
From: Yasumasa TORATANI @ 2002-12-06 13:04 UTC (permalink / raw)
  To: printing-architecture; +Cc: printing-japan

Hello Mark, Mike, Peter and All,

I appreciate your comment, and I reply this time into the architecture
ML, and please forgive me if it's not appropriate.

In our bi-di plug-in group's opinion, we hope we could design
the bi-di plug-in module and its API like following;

1) Make it simple and small for being used frexibly from any upper
modules, such as PAPI with CUPS backend modules or other
filters, or any daemon modules with Omni / PDC, etc.

2) Make the generic plug-in API  to keep the plug-ins independent
from the implementations.

3) Each bi-di plug-in module for each printer vendor has the
    following functionarities;
  a) Handle the vendor dependent protocol to communicate with
      each vendor's printer.
  b) Obtain the printer status, including error, e.g. ink level,
      paper jam, no cartridge, etc.
  c) Obtain the information of the printer options, e.g. sorter,
      stapler, extended memory, etc.
  d) Printer discovery for both local and network.
  e) No UI. to be simple and generic.
  f) In some cases, receive the printing data from the upper system,
     translate it for eachr device or protocol, and send it to the
     appropriate target.
  g) Send the printer information to the upper system.

All of the above idea is TBD, and I appreciate any comment.
We think we should make a list of all functionarities, use cases and
senario to consider how we should deal with the printer information
and send them back to the upper system.

Regards,
Yasumasa TORATANI.



^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: [Printing-architecture] Bi-di plug-in functionarities
@ 2002-12-06 16:10 Pete Zannucci
  2002-12-06 18:11 ` Michael Sweet
  0 siblings, 1 reply; 13+ messages in thread
From: Pete Zannucci @ 2002-12-06 16:10 UTC (permalink / raw)
  To: printing-architecture

Michael Sweet wrote:

> FWIW, in CUPS #3 is normally handled by the backend (in CUPS 1.1
> and earlier) and/or by the driver (in CUPS 1.2), the idea being
> that the same commands/protocols will generally be used over
> serial, parallel, USB, and network connections, and since the
> driver has a copy of the device URI (the device for the printer)
> it can tailor its input/output accordingly.

With using backends, how do we handle spool information that may
be needed to do recovery, restart a job, rerender a page, and possibly
manage other asynchronous events that may need to be mananged?

I realize there may be potential security issues but in my diagrams
I attempted to allow for management of the spool system and rendering
along with async. data manipulation.  Is there any easy way with CUPS
to provide similar function so that we don't end up with issues such
as jobs disappearing along with providing robust recovery from errors?

This direction, especially error recovery and job tracking, has been
a hot button with corporate customers in the past and generated into
a much more integrated solution for bi-di support.

Thanks,


Peter Zannucci

IBM Linux Technology Center
Open Source Software Development
Omni Print Project http://sourceforge.net/projects/omniprint
Austin, TX - Tel. 512-838-4687 (t/l 678) pzaan@us.ibm.com





^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: [Printing-architecture] Bi-di plug-in functionarities
@ 2002-12-09 16:44 Pete Zannucci
  2002-12-09 20:49 ` Michael Sweet
  0 siblings, 1 reply; 13+ messages in thread
From: Pete Zannucci @ 2002-12-09 16:44 UTC (permalink / raw)
  To: printing-architecture

Yasumasa TORATANI wrote:
> ...
> The dataflow is as following;
>
> [CUPS filters]-->[CUPS standard backend]<-->[bi-di plug-in]<-->[prt]
>
>     or
>                                   +----[bi-di plug-in]--------+
>                                   |                           |
>                                   V                           |
> [CUPS filters]-->[CUPS standard backend]------------------>[prt]
>
> Furthermore, if we make the bi-di plug-in API generic, everyone will
> be able to reuse these modules for any other printing system if they
> want.

Michael Sweet Wrote:

> Your implementation is basically making
> the CUPS backend a printer driver which talks with a separate
> daemon/process to communicate with the device.  This is certainly
> doable, but limits the use of your driver to interfaces that the
> bi-di plug-in API (instead of all devices);

I would like to see that separate process due to a couple of issues:

1.  Customer's like to have true status and info on the printer.
    This would make it easier to manage async. events and alerts
    coming from the printer (power off/on, jam, etc.)
2.  That process would likely have the ability be be more robust
    in error handling because if you do have two pipes and that
    would imply separate threads to do all the management function
    and I have see many times that a particular api call has
    the ability to get hung which will force multiple threading.

I will give you that having a separate plugin would be more complex
to manage from a driver perspective but since the implementor would
want to handle the bidi case no matter what, the non-bidi (simplistic)
case should be easy and with less overhead.

If we can adequately handle async. events, true printer status, job
tracking and error reporting/recovery with the simpler implementation
than it is fine.  I don't think it is just an interface issue if we
need to do job/page management also.


Peter Zannucci

IBM Linux Technology Center
Open Source Software Development
Omni Print Project http://sourceforge.net/projects/omniprint
Austin, TX - Tel. 512-838-4687 (t/l 678) pzaan@us.ibm.com





^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: [Printing-architecture] Bi-di plug-in functionarities
@ 2002-12-10 15:18 Pete Zannucci
  2002-12-12 13:53 ` Yasumasa TORATANI
  0 siblings, 1 reply; 13+ messages in thread
From: Pete Zannucci @ 2002-12-10 15:18 UTC (permalink / raw)
  To: printing-architecture; +Cc: Yasumasa TORATANI


Yasumasa TORATANI wrote:

> Yes, and I suppose it might be better, for instance,  in case of
> the printing data being blocked due to the buffer full or some
> error, such as no paper, while the driver writes the printing
> data into the pipe. I suppose the driver can't read the printer
> info from the backchannel under the single process when it's
> blocked, but the driver doesn't have to read any printer info
> from the backchannel pipe with another process or thread of
> the driver, since the printer info which affects the printer data
> generation should be obtained once before each printing, and
> probably, printer error and other info should be obtained by
> another process separately.

> For instance, the bi-di plug-in module, if it is a separated
> process from the driver and backend, the bi-di plug-in can
> read the printer info from the printer and send it back to the
> upper system periodically via another path, such as stderr,
> and user can see the printer info.

> So, one process for generating and writing the printing data,
> and another process for reading the printer status is the point.

Blocking issues and async. communications to a print job were
precisely what I am worried about.  That is why I stated previously
that multiple threads or processes would be very helpful.  Printer
alerts and other info could be gathered async. to the print job.
The issue that really would need to be addressed is the "send it
back to the upper system periodically via another path".  That path
would need to be designed into the print and rendering system.

As far as a bidirectional plug-in, it would be nice to have a single
interface for plugging in protocol support so that the same info.
and interfaces are used in the system.  The underlying printer
communications protocol can be hidden.  A single backend (transport)
and spool interface could be defined so that smaller components
could be used (would be nice).  The more modularized the architecture
can be made, the less individual code and testing will be required.
Perhaps it could be started with a custom backend grouping of interfaces
for a bidi plug-in along with defining what data might be needed where,
such as error recover, status, power off/on alerts, etc.  Once we
are sure what components would need what particular pieces of data
then we what would really need to be added to the system.

Since CUPS has a major portion of what is already needed, we should
start looking what would need to be extended, if anything.

Much of the work would be designing a backend architecture to support
plugins.  That would be a good beginning utilizing the basic CUPS
infrastructure.


Peter Zannucci

IBM Linux Technology Center
Open Source Software Development
Omni Print Project http://sourceforge.net/projects/omniprint
Austin, TX - Tel. 512-838-4687 (t/l 678) pzaan@us.ibm.com




^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2002-12-12 13:53 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-12-06 13:04 [Printing-architecture] Bi-di plug-in functionarities Yasumasa TORATANI
2002-12-06 15:38 ` Michael Sweet
  -- strict thread matches above, loose matches on Subject: below --
2002-12-06 16:10 Pete Zannucci
2002-12-06 18:11 ` Michael Sweet
2002-12-09 10:01   ` Yasumasa TORATANI
2002-12-09 14:19     ` Michael Sweet
2002-12-10 10:52       ` Yasumasa TORATANI
2002-12-10 15:30         ` Michael Sweet
2002-12-12 13:49           ` Yasumasa TORATANI
2002-12-09 16:44 Pete Zannucci
2002-12-09 20:49 ` Michael Sweet
2002-12-10 15:18 Pete Zannucci
2002-12-12 13:53 ` Yasumasa TORATANI

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.