Alien::Base Final Report
I have just sent my grant manager, Makoto Nozaki, my final grant report for Alien::Base. As I have said in the report, it has been slowed recently by my Ph.D. Thesis and Defense (successful!) and the lack of Mac CPANTesters (or at least the lack of reports on my testing modules). TL;DR, Alien::Base is essentially ready, but work still needs to be done, and will continue.
The report is included after the break.
Alien::Base Final Report
With this report I end my grant for Alien::Base. I consider it to be a reasonable success and have hope that the project will continue further. It became, as perhaps I should have expected, a larger project than anticipated; the problems were rarely the anticipated ones.
In the end Alien::Base faced two major problems: (program/script) compile-time linking of the library and the localization of the built binary library on Mach (read Mac) platforms.
The the linking problem is solved, running
use Alien::MyLibrary; in the dependent module dynamically loads the module as expected.
The Mach problem should be solved, though part of the problem is that the solution must of necessity be different for proper users and CPANtesters.
Mach binaries must hard-code the path to themselves in the binary, this requires fore-knowledge of the final install location of the library.
Steps have been taken to ensure that the install location is set correctly for common (
perl Build.PL && ./Build && ./Build install) use.
CPANtesters unfortunately do not run the install phase, but rather append the
blib directory into
I hope that I have fixed this problem, however I have waited months and yet have seen no Mac reports on either of my test modules Acme::Alien::DontPanic and Acme::Ford::Prefect; until these reports come in I cannot assess the ability of my recent work to compensate for this so-called “blib-scheme”.
I am happy to report that I have received much interest in the project and even some patches to the code-base. I am confident that the project will continue to progress; for my part I will continue to contribute and shepherd patches/pull-requests. Certainly the system is still in a rather basic form, for example HTTP support is still rather fragile, but the major architecture exists and will continue to improve.
- Alien::Base is released to CPAN and is even being used by several early-adopter projects.
- The documentation and tests are included
- Alien::Base::ModuleBuild can fetch, build and install libraries. By design they are localized to the current Perl installation
- The system is perlbrew/local::lib compatible and as a result does not require root privileges
- FTP and HTTP are supported, though both could use some polish, bundled binaries are also supported
- Library metadata is extracted from pkgconfig data or may be generated if needed
- Alien::GSL does NOT yet depend on Alien::Base, though a branch on its github development site is ready to be uploaded to PAUSE once I deem Alien::Base fully stable.
I would especially like to that my ever-patient project coordinator Makoto Nozaki for his help coordinating the project, and for far longer than expected. As the project progressed beyond its expected life, my Ph.D. Thesis and Defense took more and more of my time and so I want to thank both the Perl Foundation and the community at-large for being patient with me as well.
I also want to thank all of those people who have in any way encouraged or contributed to Alien::Base:
- Christian Walde (Mithaldu) for productive conversations about component interoperability
- kmx for writing Alien::Tidyp from which I drew many of my initial ideas
- David Mertens (run4flat) for productive conversations about implementation
- Mark Nunberg (mordy, mnunberg) for graciously teaching me about rpath and dynamic loading
- Torsten Raudssus (Getty) for productive conversations about usability
- giatorta, alexrj, jtpalmer, rsimoes, preaction for patches/pull-requests
- Any others I have forgotten
This process has been taxing at times, but still rewarding. I hope that Alien::Base will be a useful part of the CPAN toolchain in the future as the Perl renaissance progresses!