Okay. Let's go. So, this is the lining talk about popular, the PDF random library. This
is me. I'm a KD veteran. I've been doing KD things since 2003. I've relevant to this talk.
I started contributing in KPDF, which is now called Ocular, which is the document viewer
KD, but yeah, I also do lots of other things. About popular, I started contributing
to it in 2005, that's 20 years ago, and I'm the maintainer since 2008. Now, you're here,
what is popular? It wasn't the title of the talk. It's a PDF random library. It's written
in C++. You might like it, you might like not, but it's how it is. We're not going to
change it, right? It's been there for too long. It's a fork of expedient. We would talk about what
that means in the next slides, but yeah, we forked, and we forked because it's free software, right?
So, being free software allows you to do forking. It's good. It's not. We will talk about it. It's
GPL-2 and 3, right? It's not LGPL, so you want to link it to non-free software, don't do that.
It's also hosted in pre-desktop. It's bad. I don't know, but if you go to pre-desktop,
nowadays, they have a big banner setting. We're running out of servers. We need money, right?
So, if you have lots of money, I think their estimate was in the tens of thousands of dollars
a month, which since very high to me, but if you had that amount of money, please go to the
free desktop people and tell them you have it. If you have servers, maybe that also helps.
Poplar is also a weird name. I don't know if you follow food rammer or not. There is a episode
in food rammer, it's called the problem of the poplar, which is these very small things.
I don't remember how it goes, but I think they eat them without realizing they're actually
like sentient beings or whatever. We haven't been sued by whoever holds the copyright of food
rammer yet. I hope they don't do that. Yeah, anyhow. What poplar is not, right? Poplar is not
editing or creation library for PDFs, right? So, if you want something that will
get the input of your form and produce a PDF, that's not what you want popular for. You can
probably make it do that, but it will be painful. So, don't do that. We have small,
anything capabilities, you can add annotations or you can add a signature or you can add small things
on top of it, the things you would do from a viewer, but not the creation part of it.
It's also not a complete implementation of the PDF specifications, like standard. I don't know
any of you have read it, but it's like thousands lying long and then like see or for more
documents, which are also like for thousands lying long, right? Like, oh, and then there's the
font part. Oh, yeah, the fonts are specified here and like, oh, right? So, we would like it to be
a complete implementation of the PDF specifications. We don't have the time resources,
money to do it, right? It's not that it's not on purpose, it just that it happens not to be.
Okay, so why did we fork, right? Why did we fork back in 2003, right? Or five? I don't know,
back then. So, Expediev is free software or open source, well, what do you want? But the development
itself is not open, right? So, the person, the does the development of Expediev, does not accept
patches because they also sell, sell Expediev as a part of like a commercial thingy, right? So,
they want to control the whole copyright of the code so they can't sell it. So, they don't accept
patches. It's, it's not a library either, right? So, it just creates binaries, like the binary
for Expediev. So, it makes it hard for you to work with. Right? Back in the day with KPDF, what we used to
do is that we had the whole code of Expediev copied inside KPDF, right? And with it that, and the
gnome people did that, and coops did that, and everybody did that, right? And we ended up with
like 10 copies of the code everywhere, and then the third point appeared, right? PDF is hard,
PDF is a mess, the person that designed PDF, I did what design very long time ago, and people didn't
think about people being evil, right? Like nowadays, everyone tries to break your things, right? Like
things that people thought in the 30 years ago, it's like, no, people are going to be nice,
so that there's no need to protect about things, right? Everything in PDF is a three.
Things you can do with a three is do loops, right? So, like, yeah, you can say,
these references, this and these references, this, and then suddenly your parser is like,
better forever, right? So, we have lots of security issues, right? It's very easy. If you
pass a popular XPdf, you will find a crash, you're on, and we're getting better at it, but
it is relatively easy, and 20 years ago, it was super easy to find security problems. So, yeah,
everybody had a copy of XPdf was not great, so we needed to come up with a solution.
And also, XPdf, since I said, the person that develops XPdf wants to sell it, so it's
unpurpose, done not to have many dependencies, so it has its own jpec, the color, it has its own
PNG, the color, right? But there is this thing called the jpec and lippNG, which you can use,
and they're probably better than the thing you call that on your own, right? So, in popular
we decided, well, let's try to outsource as many things as we can, it will also help with the
security issues, right? Those are the good parts of forking, the bad part of forking is
that eventually you deburred too much, right? So, we forked at the time of XPdf 3,
they are now in XPdf 4, we can't match the changes anymore, right? It's too hard, I mean, we
could, but it's too hard. Anyhow, we use a popular lots of people, right? Everything on the Linux
desktop, that is not Firefox or Chromium or Ghostrip and users PDFs in some way, users potter, right?
So, I went to Art Linux and got to do and asked them, how many packages do you have that
pen on popular? The number is around 7580, so yeah, lots of people. How to use the library?
I have to run a bit fast, I thought I would be slower, hey, how to use the library? We have
4, 4, 4, 3, because the queue bindings are the same, public interfaces, right? So, like those interfaces,
we promise they will not change, right? So, you're, you're, you deal with, which is C days, or the
queue 5, queue 6 bindings with our C++, which is huge, oriented, or the CPP1, which is more
agnostic. There's also a few, you know, non official bindings for Python, go Ruby, I have no idea about those,
I know they exist, people sometimes, portus bugs and they're like, well, that's not me, right?
Go somewhere else. We also have private headers, you can enable them with this,
C-make option called C-make unstable API, API headers, and the comment is unstable XPF headers.
And this is a promise, right? We will thank you. We change these headers every least,
every least that changes here. If you want to use those, you can use them, I would prefer you didn't,
and you use one of the evolves, but if you want to use them, yeah, you know, we will break you.
Now, you can do viewer in 10 lines, that is exactly 10 lines, I'm missing the includes,
so it's a bit more 10 lines, and also only renders the first page, which is not very useful.
Cute, but the, the, the, the, the G-lib counterpart is very similar. You load the document,
you get the first page, you render it to an image, and you paint the image, right? It's not very complicated.
Obviously, if you want to do more things like annotations, signature, blah, blah, blah, you will need more code,
but if you want to start, I think it's not super hard. Okay, the development model.
We do a monthly release, right? Actually, like on the first day of the month, which should be today,
it's not going to happen. We will do it probably on Monday or something, following the year year,
on month, uh, release, and numbering, monthly is because I said, there's usually some kind of
security issues, so we try to get it as fast as you can, right? Uh, this doesn't like that,
it's like, oh no, again, you broke the API again. I'm sorry, but it's how it is.
We do have CI running on Linux Android, uh, Ming, the W, or whatever, how do you call that?
And then some, uh, checkers, right, plant, plant, 80, and 30, we also have non official CI's running on
PVC, Mac, and Windows compiler. People sometimes send us patches saying, yeah, I need this small
patch to make this compile in this my very, uh, obscure operating system. I usually tell them,
I don't want those patches because I cannot verify, I will not break them tomorrow, right? If you give
me a CI, I will accept your patch. If you don't give me a CI, you keep your patch, right?
It's hard enough to make sure everything compiles in these ones, which we have CI for, uh, to worry
about the others. As I said, we also have some, uh, security thing is, uh, I don't know, you know,
about as fast as, it's a, it's a passing, uh, service run by Google, uh, Kubernetes on our cloud,
similar things, they're, they're non free, but yeah, I mean, you do what you can. We use
good luck for, for everything, right, for magic guests and issues. Uh, last year, we had around 30
commuters, and of those 36 people sent more than 10 commits, so like you would say, like those six
people are, are the core, the core contributors. Uh, but yeah, I mean, I think it's not about number
or how niche slash hard doing PDF things are. So yeah, not combining. How can you help, uh, report
good backs, but please make sure they don't exist already, right? There's the, uh, typical problem
with backs, everybody creates one, when there's two of them are ready for the same thing. Uh, also,
usually, like, if you're, having a problem with Ocular or with Avintance, it might make sense to
check if it's also happening on the common line tools we have, like PDF to Cairo or PDF to
PPM or something, and then don't report the book about Ocular because the Ocular people will say,
well, you know, this is actually a back in popular, or the Avint's people will say,
it's like, yeah, we don't do this. So yeah, that might help. Uh, propose magic guests,
actually the one I want more is like, if you have time review much of us, like, we have
lots of lots of, lots of steel much of us, I do my best, but I, I have the time I have. Uh, so, yeah,
some of them are a bit stuck. And yeah, coming back to the money issue, uh, if you have
money for a server that would be nice, uh, right now I'm using, I'm doing the regression testing
in this laptop, right? Uh, it takes a few hours, and I worry at some point the CPL, the CPU is
going to burn. So if you have a server that can help us, uh, running the regression testing, that would
be super appreciated. Uh, and that's me. There is no time for questions. If you have questions,
you can come here and talk to me, maybe. Uh, so thank you for listening.