Grant Proposal: Introduction to Application Development with Perl 6


The Grants Committee has received the following grant proposal for the May/June round. Before the Committee members vote, we would like to solicit feedback from the Perl community on the proposal.

Review the proposal below and please comment here by June 16th, 2018. The Committee members will start the voting process following that and the conclusion will be announced the last week of June.

Introduction to Application Development with Perl 6

  • Name:

    Patrick Spek

  • Amount Requested:

    USD $2,500


A book about getting started with application development in Perl 6. It will cover installation of Perl 6, the basics of the language, how to use the perl6 binary to run programs, how to create a terminal application and a GUI application using GTK::Simple.

Benefits to the Perl Community

The book, if approved, will be released in the public domain, which allows use for everyone interested. This can help new programmers to easily gain access to information to get started to use Perl 6 for real world applications. People who are already familiar with Perl 6 can freely distribute the contents of the book to other people to promote Perl 6.


A book titled "Introduction to Application Development with Perl 6", released under the Creative Commons license.

Project Details

The book will cover introduction to terminal application and GUI application development. Thus far, I have the following 20 chapters planned, with a short description of what they will contain:

  • Foreword: About the author, special thanks for contributors, what will this book teach you, what prior knowledge is required, a word about Unicode in Perl 6.
  • Getting ready to use Perl 6: Installing Perl 6 and setting up an editor
  • Hello world!: Run a minimal "Hello World" using perl6 -e, once written in a single file to be ran with perl6 and once in a generic Perl 6 module structure. Using App::Assixt for the last part.
  • An overview of Perl 6 constructs: Basic operators, conditional blocks, loops, differences between sigils.
  • The MAIN subroutine: What is the MAIN subroutine, and why should you use it?
  • Adding some plain old documentation: Using Perl 6 POD to document your code, along with common formatting constructs from Perl 6 POD.
  • Generating usage info with USAGE: Applying POD knowledge to MAIN and overriding the default USAGE to generate custom messages.
  • Accepting flags and options: How to make MAIN deal with command line flags and options.
  • Variable types: What are typed variables, why would you use them, some common types.
  • Splitting off into a module: Moving parts of your code into a separate module and using them.
  • Using modules: How to use modules, specifically third party modules.
  • Classes and objects: How to make classes and instantiate them.
  • Application configuration: How to deal with user configuration of your application? This will use the Config module.
  • Dealing with user input at run time: How to prompt the user for input and use it in your application.
  • Pretty output: How to format and color output of your application. This will use Terminal::ANSIColor.
  • Reading and writing files: How to read files and write files.
  • Making a GUI with GTK: Using GTK::Simple to create a GUI.
  • Handling GUI events: Continuing on GTK::Simple, how to handle events and change elements in the GUI based on these events.
  • Running as a service: How to run a Perl 6 application as a system service. This will target systemd, OpenRC and possibly BSD's RC as service managers.
  • Addendum
    • List of Unicode operators

The book itself will be written using LaTeX, though this can change if it is found to be unfeasable (lack of Unicode support, for instance). Whatever the source format will be, it must allow generation of many different formats for end users, such as PDF or EPUB. The sources will be publicly available on GitLab while the book is still being written. Once finalized, a PDF version of the book will be published on my personal site, sources will remain available on GitLab and everything will be released under CC-BY-SA, allowing free redistribution by anyone.

If the grant is accepted, I will also incorporate all the inch-stones of the project as issues on the GitLab repository, to make it easier for those watching to keep track of progression. If possible, I'd also like to request a grant manager with experience in writing technical books.

Additionally, I would like to have a handful of people willing to proofread the book. I will ask from my social circles first, but would like some "unknown" proofreaders with Perl 6 experience from the community as well. Each proofreader will be referred to in the book's foreword, with a link to their website if desired.


  • Acquire a cover image
  • Write the chapter "Foreword"
  • Write the chapter "Getting ready to use Perl 6"
    • Gather information on configuring Emacs
    • Gather information on configuring Atom
    • Gather information on CommaIDE
  • Write the chapter "Hello world!"
  • Write the chapter "An overview of Perl 6 constructs"
    • Contemplate which operators to cover
  • Write the chapter "The MAIN subroutine"
  • Write the chapter "Adding some plain old documentation"
    • Contemplate which POD elements to cover
  • Write the chapter "Generating usage info with USAGE"
  • Write the chapter "Accepting flags and options"
  • Write the chapter "Variable types"
    • Contemplate which types to cover
  • Write the chapter "Splitting off into a module"
  • Write the chapter "Using modules"
  • Write the chapter "Classes and objects"
  • Write the chapter "Application configuration"
  • Write the chapter "Dealing with user input at run time"
  • Write the chapter "Pretty output"
    • Gather information on how to use Terminal::ANSIColor
  • Write the chapter "Reading and writing files"
  • Write the chapter "Making a GUI with GTK"
    • Learn how to make menus with GTK::Simple
  • Write the chapter "Handling GUI events"
  • Write the chapter "Running as a service"
    • Learn about systemd unit files
    • Learn about OpenRC service files
    • Learn about BSD RC service files
  • Write addendum: List of Unicode operators
    • Research methods of Unicode input
    • Gather the Unicode operators relevant to the book
    • Create overview of the used Unicode operators and their input information

Project Schedule

I expect the total time required to be four months to finish the book. This includes researching certain topics (such as how to make use of some modules, how to configure editors) to ensure I can make it easy to understand for new programmers.

Completeness Criteria

The sources of the book, as available through GitLab, contain all the chapters described in the project details, and contains no TODO comments anymore.


I'm Patrick Spek, tyil on IRC, TYIL on CPAN. I've been interested in Perl 6 for a couple of years now, and have been using it for personal projects for a while. I've also written tutorials on Perl 6, which have been released on my personal website. I like writing about technical topics, and would like to expand from short tutorials on my blog to a larger article which can be published as a book. I've also heard from people at the local Perl Mongers that they'd like to see more Perl 6 books.

By writing a book on Perl 6, I can achieve both my personal goal of writing a book on a technical topic, and help out the Perl 6 community by providing them with more materials to support and promote Perl 6.


I like this proposal, and that the book will sufficiently differ from Learning Perl 6 and

Especially the chapters "Splitting off into a module", and "Making a GUI..."/"Handling GUI", and "Running as a service", cought my eye, as such things are of great value to help people make those types of programs, that would impress people with the value of Perl 6.

I concur with Wendy. The proposed book is just what I’m looking for to go with teaching a course in beginning programming in the fall!

This is a book scope that I would be interested in reading, and following along with / running the project code as it is explained and developed in the successive chapters.

Will the book show in detail both how the project utilises a code development platform (such as Github) to build the application, and how the code is organised, developed and managed utilising an IDE (specifically Comma)?

If not, then I wonder whether this project presents an opportunity for collaboration (perhaps with Edument, or some group of experienced developer folk) to build, alongside the book, an "extended Case Study" utilisation document for the Comma IDE.

If successful this collaboration could perhaps form the template for future "Case Study"-type documentation projects.

The grantee's GUI tutorial[^1] was very well received by the users, suggesting the book would have decently-written content. However, the shortness of the 4-month total time to finish the book that's listed on the grant concerns me a bit. Would this end up being a rushed book full of errors and poorly-written content?



Questions for tyil: what would make this book unique, compared to the other nine Perl 6 books ( )? Why should a person read this book, as opposed to reading a couple of already-available docs and tutorials for sub MAIN, GTK, and modules?

I have similar thoughts as Zoffix. tyil's previous writings are good, so I support the proposal, but four months is not a long time.

One suggestion for a topic that I don't think has been covered in a book already is profiling. Perl 6 has a built in profiler, but I have definitely run across people who didn't know that, or how to interpret the results when shown it.

Leave a comment

About TPF

The Perl Foundation - supporting the Perl community since 2000. Find out more at

About this Entry

This page contains a single entry by Coke published on June 11, 2018 3:10 PM.

Grant Proposal: App::rs - The first reference counting CPAN client was the previous entry in this blog.

The Perl Conference Newsletter: 6/11/18 is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.


OpenID accepted here Learn more about OpenID
Powered by Movable Type 6.2.2