I'm often asked why I created Venus, and I typically give an answer that amounts to "It's complicated" or "Have you looked at language X" which I concede is unsatisfying to most; so in this article, I will attempt to explain in a more precise and concise manner, for the record.
Why I created Venus
If you survey and analyze the features offered across programming languages used in modern software engineering you'll recognize what I call a "baseline feature set for modern software development". In my opinion, this is missing from the Perl programming language. It's achievable but missing in the sense that it's not core and it's not packaged in a way that's easily accessible.
Some examples are support for data encoding, reflection, gradual typing, object orientation, concurrency, error handling, a robust standard library, etc.
Getting to a modern software engineering baseline in Perl, in 2023, means
traversing a vast landscape filled with potential landmines. To do so successfully means having a firm grasp of the language and its idioms, as well as a familiarity with the CPAN and the best-in-class distributions.
Venus was created to alleviate that pain!
Maybe it's never occurred to you that getting to a modern software engineering baseline in Perl is a nearly impossible feat for someone new to programming, or new to Perl, or simply looking to "get shit done".
Venus, with its convention over configuration object-oriented architecture, is meant to feel familiar to engineers coming from other (modern) languages, looking (or needing) to work in Perl. Venus helps to answer questions like, "How do I create an array object that comes preset with methods that allow me to perform common array operations, which can be chained together?", etc.
Venus provides a robust standard library, embodies industry standards, enables object-orientation and reflection, has sophisticated and extendable exception handling, offers a library of abstract behaviors (i.e. roles/traits), and is built atop an intuitive convention over configuration architecture.
In the coming articles, I will further demonstrate the why and how of Venus, using code examples, comparisons, and real-world software challenges.
See for yourself!