Hi Francesco,

First of all, congratulations on the release and thanks for all the
information.
I will go through your notes and also other mails, but wanted to give you
some feedback at first.

Kind regards,
 Dominik

On Sat, Feb 12, 2022 at 7:16 PM Francesco Pretto <cez...@gmail.com> wrote:

> Hello Dominik, PoDoFo maintainers, contributors and users,
>
> I'm happy to announce that after other months of strong development
> pdfmm, the PoDoFo fork I talked about last year, reached its first tagged
> release 0.9.20. The big list of changes[1] is comprensive of the changes
> of the first announce[2] together with latest features that I will
> summarize
> below:
>
> - A new PdfDynamicEncoding class has been added and set as the default
> encoding in font creation. The dynamic encoding is a CID encoding that
> gets built automatically when encoding strings. That is: Unicode
> characters are automatically mapped to arbitrary CID characters and a
> valid /ToUnicode map is created in the font when embedding. This mean
> you can just do painter.DrawText("Unicode string АБВГДЕЁ", x, y) and
> forget about picking or building a right PdfEncoding for the font.
> Beware: this doesn't yet mean full text shaping/ligatures support, but
> it's a big step in the right direction for supporting more complex scripts,
> such as arabic and asian ones;
> - Standard14 fonts coming from PDFium[3] (PDFium is a recent pdf
> renderer developed by google) have been bundled, enabling full font
> embedding of such fonts;
> - A new PdfContentsReader class has been added: this class completely
> replaces the old PdfContentsTokenizer (which was removed), providing
> Pdf operators recognition and XObject following. This class is going
> to be the core tool in building a PDF renderer and other PDF processing
> operations;
> - C++ move semantics has been added to most core classes
> (PdfVariant/PdfObject/PdfArray/PdfDictionary), allowing to improve
> performance in parsing indirect objects and page contents. I don't
> have measurements but this effectively halved the timings of my test
> suites. A lot other of micro optimizations appear to be possible following
> this move;
> - PDF/A preservation: the original PoDoFo library is not able to
> manipulate a PDF/A compliant file without loosing this compliance.
> pdfmm is now able to perform saves/incremental saves preserving the
> compliance (that is: updating the XMP metadata and respecting some
> serialization restrictions of PDF/A);
> - The automatic unit tests have been restored and a full-fledged
> continuous integration for Windows, linux and mac has been implemented
> using on github actions[4];
> - A playground area with full set of static dependencies built for
> Win64, macos-x86_64, linux-x86_64 has been prepared[5]. While the
> dependencies will comes without warranty, this makes testing/developing
> pdfmm completely hustle-free;
> - A lot of bug fixes and other things that I forget about, just look the
> changelog and git commit descriptions.
>
> While I still somehow don't recommend anyone to use pdfmm until I
> settle the API review (something that I plan to do together with other
> tasks
> before this summer in a 0.10.x release[6]) and assuming the C++ PDF
> manipulation user base to be quite small, I begin to think that pdfmm
> won't be ignored for much longer. pdfmm is at least 1 man year worth of
> work ahead of PoDoFo and represents a solid improvement in features
> and API quality, with a very little set of features dropped (only the
> broken
> PDF linearization support has been removed and Type1 font subsetting
> is temporarily disabled) and while I noticed a couple of interesting
> PoDoFo 0.9.x patches emerging (stack guards and modern encryption
> protocols) I doubt anyone at this point is really doing the same kind
> of active development I am pushing into pdfmm (or at least nobody talk
> about it openly in the PoDoFo mailing list). I thought a lot about my
> relationship with the PoDoFo project in these months and while I like to
> work without constraints and still aim to push for my vision of what
> a modern C++ PDF manipulation should be, I am concerned that this
> work may not settle in the long run. Convinced by zyx's openings in a
> recent discussion[7] I offer the community to merge back this work to
> PoDoFo. I am going to do this work at some conditions, which should be
> seen more as a concrete plan of action:
>
> 1) PoDoFo project should be split in two different subprojects,
> one covering the library and unit tests, one covering the tools.
> I will initially maintain the new library and test code, and keep this
> role until the I feel a good fit for the role and the community is
> comfortable with my work. Other people should take a step forward and
> show interest in porting the PoDoFo tools, which I will not maintain
> as a whole (I can port/maintain one or two). The old PoDoFo 0.9.x
> codeline will be branched and maintained separately by current people;
> 2) pdfmm should be accepted as a whole replacement of the PoDoFo
> library and test code, that will converge to a 1.0 release. pdfmm name
> references will be renamed back to PoDoFo before the move. Also
> PoDoFo 0.9.x latest commits will be merged to the new PoDoFo 1.x.y
> series (pdfmm is already currently in sync with SVN trunk). Some
> commits/patches will not be merged because unnecessary or the same
> features can be obtained in new ways. I am **not** going to
> gradually patch PoDoFo towards the actual state of pdfmm: I
> just don't have time for that and I don't see many advantages in doing
> it either;
> 3) PoDoFo development is moved without further doubts to a modern
> git based development platform such as github/gitlab/... . Minimum
> required features are easy pull-request interface, issue tracker, win-mac-
> linux Continous Integration with submodules support. I'm in favor
> or using github, which I am using in pdfmm, as the chosen platform.
> I'm open to evaluate other options if a person shows some advantages
> over my proposed solution and the same person is able to convert the
> current CI infrastructure, keeping submodule support (I'm not going to
> do this porting work). 0.9.x maintain tasks can continue to happen on
> the SF platform/mailing list;
> 4) As soon as the the new development platform is defined and set up,
> the old SourceForge web site begins to inform of the existence of the
> new platform. Either one person take a step forward and offers to
> create a new basic static website/FAQ for the new-PoDoFo or we go
> without a website at all. In both cases at some point the old SF website
> should be archived. Of course it can stay online indefinitely for
> preservation purposes;
> 5) Last but not least: I ask for a Mozilla Public License re-licensing
> of PoDoFo. This is a very complex topic involving legal/copyright
> matters. I am creating a new thread shortly after to discuss this,
> explaining exactly why I suggest this move. Please, let's discuss
> about this topic in that thread.
>
> I am really sorry for the lengthy post and if my words sounds bossy
> and or/shows little or no room for discussion. I actually truly encourage
> you to review the pdfmm code and say what you really think about it
> and about my offer/plan. I don't want to enforce a takeover of the
> project with a muscular move and if some of you feel it like that then
> it's all my fault as I couldn't suggest better ways to improve the
> development of PoDoFo in the past couple of years. I put no rush,
> but I foresee a window of opportunity later on this summer around August,
> and I would like the discussion to happen (and finish) before that. I will
> consider the plan accepted if Dominik, and PoDoFo more active
> maintainers in the past years, I guess Matthew and Zyx (do you mind
> to reveal us your name :-) ?), agree with it.
>
> Thank you for your attention.
>
> Cheers,
> Francesco
>
> [1] https://github.com/pdfmm/pdfmm/blob/master/CHANGELOG.md
> [2]
> https://www.mail-archive.com/podofo-users@lists.sourceforge.net/msg04628.html
> [3] https://github.com/mozilla/pdf.js/tree/master/external/standard_fonts
> [4] https://github.com/pdfmm/pdfmm/actions
> [5] https://github.com/pdfmm/pdfmm/tree/master/playground
> [6] https://github.com/pdfmm/pdfmm/blob/master/TODO.md
> [7]
> https://www.mail-archive.com/podofo-users@lists.sourceforge.net/msg04674.html
>
_______________________________________________
Podofo-users mailing list
Podofo-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/podofo-users

Reply via email to