What is Open Source?
Open source software is software with source code that anyone can inspect, modify, and enhance. “Source code” is the part of software that most computer users don’t ever see; it’s the code computer programmers can manipulate to change how a piece of software—a “program” or “application”—works.
I participate in a number of free and open source software projects. You can find most of them listed on my GitHub account.
Type::Tiny is a small Perl class for writing type constraints, inspired by Moose’s type constraint API and MooseX::Types. It has only one non-core dependency (and even that is simply a module that was previously distributed as part of Type::Tiny but has since been spun off), and can be used with Moose, Mouse, or Moo (or none of the above).
Type::Tiny is used by over 800 Perl distributions on the CPAN (Comprehensive Perl Archive Network) and can be considered a stable and mature framework for efficiently and reliably enforcing data types.
Type::Tiny is bundled with Type::Library a framework for organizing type constraints into collections. Also bundled is Types::Standard, a Moose-inspired library of useful type constraints. Type::Params is also provided, to allow very fast checking and coercion of function and method parameters.
Zydeco is a Perl module to jazz up your object-oriented programming. It fuses together:
- Classes, roles, and interfaces, including parameterizable classes and roles (a.k.a. class generators and role generators).
- Factories to help your objects make other objects.
- Powerful and concise attribute definitions.
- Methods with signatures, type constraints, and coercion.
- Method modifiers to easily wrap or override inherited methods.
- Powerful delegation features.
- True private methods and attributes.
- Syntactic sugar as sweet as pecan pie.
Zydeco is a Perl extension that adds cute syntax for object-oriented programming, and tries to steer you towards (what I consider) best practice design.
Some highlights and recent projects:
Simplified clone of smartmatch operator.
Perl implementation of an approximation for Haskell’s newtype.
Return a pair only if they are both defined. Syntactic sugar for key-value lists.
Why throw exceptions when you can return them? Port of Rust’s error handling to Perl.
Precision testing for modern Perl.
Tada is an opinionated command-line todo list manager. It offers commands to:
- Add and remove tasks to your todo list.
- Find the most important tasks on your list.
- Find the most urgent tasks on your list.
- Find the quickest tasks on your list.
- Find tasks by project or context.
- Mark tasks as done.
- Reschedule overdue items based on how tada thinks you should reschedule them.
It is a command-line tool as well as a programming library, so should be useful to Rustaceans and non-Rustaceans alike!
Most of my open source PHP code is WordPress plugins and themes. A selection can be found on GitHub.
WordPress theme based on Roots Sage 10. (Some of its internals refer to “parsley” which was my theme based on Roots Sage 9.) It’s the theme I use for this site.
Subclass of the built-in RSS Widget, but copes better with Mastodon feeds.
A simple GDPR consent getting script.
Very simple form-to-email contact form for WordPress, with ReCAPTCHA support.
Adds a keyboard shortcut to WordPress, allowing admins to quickly edit any page.
Another PHP project is Tada Server — a web-based todo list, compatible with my Rust project, tada.
My preferred licence for new open source software projects is the GNU GPL, either version 2 or version 3. (Version 3 preferred for web and network related projects. Perl projects, I would typically also license under the Artistic Licence. Rust projects, I would typically also licence under the MIT Licence and the Apache Licence 2.0.
Source Code Management
Contributing to My Projects
If you have any bug fixes or other improvements to my projects, the best way to contribute them is to submit a pull request on GitHub. For more information, see my guide on contributing to my free software projects.