Hi Radek,

Thank you very much for your thougths. I think they are very constructive and 
I will answer them in a minute.

Before that, let me ask for what kind of feature you are using PoDoFo? It is 
often easier to understand each other, if one knows the problem each of us 
want's to solve.
For me, PoDoFo started because of a need for a low level PDF library, which 
allowed me to analyze and modify the structure of PDFs and work with low level 
objects and streams. Later, in another project, I also needed more high level 
PDF generation features. I.e. generating PDF documents with fonts, forms, 
annotations etc. So, PoDoFo currently tries to solve two needs: low level PDF 
operations and high level document modification (like painting in to an 
existing document) and generation of documents. As far as I know, PoDoFo is 
very unique in allowing to access all the low level objects of a PDF and work 
with them.

This serving of two needs results currently in a bit of a messy architecture. 
I want to start soon to clean this up and split the PoDoFo library in two 
libraries: libpodofo-base and libpodofo. The base library will contain all the 
stuff required for low level PDF modifications (PdfParser, PdfWriter, filters, 
objects ...) and will only have a dependency on zlib. Libpodofo will build on 
top on this library and provide stuff like PdfDocument, PdfFont, PdfPainter and 
depend on all the other libraries. I hope to make these changes during 
November.

So, excuse my little rant about PoDoFo in general. Now to your questions.

Am Sunday 17 October 2010 schrieb Radoslaw Golebiewski:
> Hi Dominik,
> 
> Today I had a walk with my little baby and while pushing the pram I thought
> about a few things that are not clear or I find difficult in this/our
> project.
> 1) Licenses.
> I used PoDoFo for my project at work. That means the library has been bound
> with a commercial product. I am a little bit familiar with all the licenses
> but I do not understand the nuances. PoDoFo uses a few other libraries in
> its own stuff but each library (including PoDoFo) uses different license:
> - PoDoFo - GPL and LGPL,
> - libpng - libpng license
> - libjpeg - a license,
> - zlib - zlib license,
> - freetype2 - Free Type License
> There is a simple statement on the project web site about how to use but
> for me it is not convincing. For the potential users could we (as
> community) ask someone to help to clarify it. Or may be there exists such
> an explanation already. I think this would help to clarify usage of
> PoDoFo.

The complexity of the OpenSource License Ecosystem is a major drawback for 
adoption of OpenSource libraries in commercial projects. Most developers 
simply do not understand the differences between licenses (not there fault of 
course) and companies are of course careful with this topic. From my 
understanding, it is ok to link to PoDoFo and these libraries in this 
configuration and that is why I chose LGPL. Still, I would not want to give any 
legal advice on this topic because (i) I am no layer and (ii) and do not know 
how I/we would be liable in case this advice is wrong in certain cases. We 
could link to one of the FSF web pages which have explanations for these 
licenses, but honestly, I do not think they make the issue much more clear.

> 2) Project dependencies.
> On my work project we use a few libraries. The main external library is
> wxWidgets. Recently we added PoDoFo library as a result of our customer
> requesting a feature. This project has been lasting for 2 years so as new
> versions appeared we upgraded and tested the new release. This is a problem
> with dependencies that when they creep new testing is required.
> I think the project website should state somewhere to which versions the
> library dependencies have been tested.

I think a Wiki would be good to keep such information of users and which 
configurations they successfully used. In general, we always support the latest 
version. But you are right, I can at least name the versions I currently work 
with. I would love if the webpage would get more updates... Right now have to 
see that I have enough time to work on the code and integrate all 
contributions, though.

> 3) Library compilation setup
> I believe that on Windows platforms It is quite time consuming to setup all
> the compilation environment (we had it with Visual Studio). This fact may
> put off some of the new users that may want to use this library but may not
> have sufficient experience with compilers. The setup requires compilation
> of dependent libraries and they are not easy to setup too. On Linux
> machines it may be easy but Linux is not the only potential user. I
> believe that at the moment  most commercial desktop development is carried
> out for Windows (I am not a fan of this OS though) and setup for this OS
> should be made easier. In my project we created a solution (a super
> project) that contained all combined and dependent projects that one can
> rebuild with a simple mouse click. The result of compilation is a set of
> working libraries that our project interfaces to.

I agree, compiling PoDoFo on Windows always bothers me - not because of our 
own cmake build setup - but because it is a real PITA to build freetype, 
cppunit, .... . In the beginning of the project, we had a VC solution bundled 
with our project, but as main development happens under Linux right now, it 
was never up2date and I think it is worse to have a not working VS solution 
than having none. Always bundling all dependencies is honestly to much work 
for me. But if someone volunteers to do though, I do not see any problem to 
host it on Sourceforge for download.


> 4) Specification to which PoDoFo project is developed.
> Can one specify which parts of specifications have been implemented? E.g.
> pdf documents can be generated to 1.3, 1.4, 1.5 and higher versions. Have
> we got specifications and can we say that documents can be generated which
> are fully compatible with 1.3 or higher versions? This a general question
> before I had a look at the specification

This might need more clarification on the web page as well. As I stated above, 
the low level part of PoDoFo should be almost complete. We should be able to 
read and write any PDF specification. If something does not work in this area, 
this is a major bug.
Regarding high level features, we support only parts of every specification by 
a high-level API. E.g. only certain types of annotations are supported by our 
high level API. Still, every user can generate any type of annotation in any 
PDF specification version by using our low level API. Usually, the high level 
API is only a thin layer which adds certain keys to low level PDF objects.


> 
> 5) With regards to your last email I will have a look at PoDoFo test units
> and verify those related to the two reviewed sets of classes (PdfArray,
> PdfColor).
I checked all tests, but it would be great if you could also work with our 
test suite.

> 6) I would prefer for someone to review any of my changes to be commited.
> That means I would prefer to sent you my patches and you to review them.
Ok, I will continue to review your patches.

> 7) Is there any PoDoFo forum for developers where things like that could be
> discussed?
Maybe we can continue our discussion on our mailinglist podofo-
[email protected] . Usually, all discussion happens there and I 
think other could also benefit from your discussion.
I hope you do not mind if I set the ML on CC for this mail already. If you do 
not want to talk about your specific usage of PoDoFo in public, you can send me 
also a private mail.

Cheers,
        Dom
> 
> Thanks
> Radek


-- 
Dominik Seichter - [email protected] - http://domseichter.blogspot.com
KRename  - http://www.krename.net  - Powerful batch renamer for KDE
KBarcode - http://www.kbarcode.net - Barcode and label printing
PoDoFo - http://podofo.sf.net - PDF generation and parsing library

Attachment: signature.asc
Description: This is a digitally signed message part.

------------------------------------------------------------------------------
Download new Adobe(R) Flash(R) Builder(TM) 4
The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly 
Flex(R) Builder(TM)) enable the development of rich applications that run
across multiple browsers and platforms. Download your free trials today!
http://p.sf.net/sfu/adobe-dev2dev
_______________________________________________
Podofo-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/podofo-users

Reply via email to