00:00:20.939
Okay.
00:00:22.199
Um, just a show of hands—who has heard of or worked with Prawn at some point?
00:00:24.000
Okay, quite a few of you. Great! Yesterday, I was supposed to be doing a talk in the main room but I had a mishap and destroyed my slides about thirty seconds before my talk.
00:00:28.859
I've now learned the value of Apple Left.
00:00:30.779
These were the goals that I was going to cover. When I first proposed the talk, I was hoping to have Prawn 1.0 almost ready for this conference.
00:00:35.100
Unfortunately, we are nowhere near there. However, what we are close to is deciding what features will be included in that version and setting a timeline.
00:00:41.520
Prawn started off as a project where many people donated to support my work in open source. I decided to focus on PDF generation because it seemed to be what the community wanted most.
00:00:48.120
During that time, I was doing regular releases, at least once a month, maybe even more frequently. But once I had to return to work, things began to slow down.
00:00:55.739
It's been five months since we had an official stable release of Prawn, even though we have been writing code all that time. Let me quickly run through our goals.
00:01:02.340
We want to have a high-level interface for basic reports.
00:01:05.580
This serves several goals at once. You can see here that we are simply using a TrueType font and rendering some UTF-8 text, which is all you need to do to use Prawn for basic reports.
00:01:47.040
If anyone saw my RubyConf 2008 talk, which is available on Concrete, you may recall that I reverse engineered the GitHub invoices sent out to you. That took around 20 to 25 lines of code, showing that Prawn is efficient for basic tasks.
00:02:03.799
It is also the fastest pure Ruby PDF implementation with its feature set. If you visit that URL, you will see that, while it may not be as fast if you're working with non-pure Ruby tools, Prawn is significantly faster than alternatives like PDF Writer.
00:02:20.280
We do not rely on any third-party packages, whether C extensions or other gems. Everything was developed by the team working on Prawn. If you are familiar with PDF generation, you know that is significant work.
00:02:38.160
We handle low-level tasks, including font parsing and processing. Our goal is to maintain this control, and as a result, Prawn runs on multiple Ruby implementations, including MRI, JRuby, and Rubinius.
00:02:46.500
Internationalization is a top priority for us. We have full Unicode support, and if you're running on Ruby 1.9, it will transcode automatically, provided your encoding is compatible.
00:03:11.780
We plan to support Ruby 1.8.6 and above, including every version released from 1.9 up to Prawn 1.0. Our very first release actively supported Ruby 1.9, and we will continue to do so.
00:03:35.280
We also aim to replace PDF Writer. How many of you have used or are using PDF Writer? How many have managed to migrate everything over to Prawn?
00:03:54.480
The biggest issues with PDF Writer are its slowness and bugs. If we create an API compatibility layer, it will allow you to transition to using Prawn's functionality while maintaining familiar API calls.
00:04:30.139
Another goal is to establish a readable, unhackable core implementation. In my book, I frequently refer to best practices, and I emphasize that the design of Prawn is of high quality.
00:04:52.680
The fact that we've had over 40 contributors working on something as complex as a PDF generation library indicates we’ve had success, but there are still challenging areas.
00:05:12.240
For instance, the PDF format has a 1300-page specification. It implements its own object system, and that complicates things, especially when it comes to features like 'Page one of ten.'
00:05:26.820
Currently, we face limitations due to how we manage pointers across pages. However, last night and throughout today, we are working on replacing that object system.
00:05:45.300
By the time we release 1.0, you will certainly have more features for handling objects within the PDF, and we might even roll out some enhancements in the coming weeks.
00:06:03.440
That concludes my talk. I'm not sure if I have any more time to take questions. Does anyone have a question?
00:06:20.639
Alright, I cannot talk about that just yet, but my book has a contract that it will be open source by March 15th. We are trying to accelerate that timeline.
00:06:27.840
The book could be available for free sooner than March 15th, so keep an eye out for that.
00:06:39.539
Here, we will be working on the object system until we leave. If anyone wants to see me and ask questions about Prawn or work on it, just let me know.
00:06:42.380
Okay, thank you everybody.