PHP, Zend Framework and Other Crazy Stuff
Wishing For A PEAR Channel Aggregator? Yes, Please!
There are a few things many PHP developers should be familiar with. We should be familiar with PEAR packages. We should be familiar with the PEAR installer. More and more of us actually are getting familiar with running PEAR channels. The problem that some of us have, like me, is that we’re working against an architecture which focuses on the central PEAR repository. It’s the elephant in the room, so to speak, and we spend year after year working around or completely ignoring it.
While I do criticise PEAR through this statement, that would be missing the point. PEAR is a story of two parts – the distribution mechanism using the PEAR installer and PEAR channels, and the centralised package repository. The problem is splitting the two, and I don’t believe the PEAR group (along with the rest of us) have really considered that which is a shame. As Till Klampaeckel recently stated, “PEAR packages are not as easy to use as some code you copy-pasted off the Zend devzone or phpclasses. While I agree, that we should try to make it just as easy, it’s just not one [of] PEAR’s goals right now.”.
That kind of sums up my issues with PEAR as a distribution mechanism – it’s not as easy as it could be and it really ought to be a primary goal. It’s not… PEAR obviously treats its own package repository as an elite citizen. You don’t need to discover its channel, or use a channel prefix, or go consulting Google to find something useful (it has a neat categorised package listing). No other PEAR channel set up independently has those advantages and the extra steps can’t compete with a simple download from a website. To install from another channel, you need to go search Google for a suitable library, check if it even has a PEAR channel, find the channel URI, guess the channel prefix – and then finally install something. Since channel discovery is probably not automatically performed (by default), dependency resolution can lead to more pain. This assumes hosting a PEAR channel is easy (which it is given the recent explosion of them using sane channel hosting tools like Pirum). Maybe that’s our trigger – PEAR channels are easy now. Suddenly, all the libraries I use are, or will be, hosted on a PEAR channel. Even Zend Framework 2.0 is heading to PEAR split by component. It’s fantastic!
Since we seem to like blaming the PEAR Group, and getting that ball kicked back to us, it’s time we did something useful. We’ve spent too much time ignoring PEAR as we grew apart from it with our frameworks, standalone libraries and custom plugin architectures. We’re making life harder for ourselves in doing so. Stuart Herbert has posted a short article to gather requirements for a Pear Channel Aggregator. I strongly suggest that interested PHP programmers drop by and add a comment with some suggestions/feedback. Let’s get this thing moving forward!
Gathering Requirements For A PEAR Channel Aggregator
Once that article went up, we started seeing that people are out there working on the problem. I don’t see any of them as being a final solution, and God forbid we just adopt a half-measure for some limited subset of requirements. It would be far preferable, if not essential, to see a complete solid solution meeting everyone’s varied requirements. There’s no excuse not to. Either we want a robust complete solution or we don’t.
As to the concept of a channel aggregator, I view it as a shift away from PEAR’s focus on a centralised repository to a focus on supporting and enabling an open decentralised system with one (or more) focal points. PEAR’s own channel should just be one among many. A channel aggregator should do away with channel prefixes, channel discovery, compulsory reliance on PEAR packaging/channel hosting (git is too popular to ignore), and support combining the package details from potentially hundreds of channels/git repos into one or more competing aggregators that offer easier lookup, rankings, user feedback, etc (baby steps obviously before we go nuts). Installing any package from any channel or supported git repo should only require hitting up a channel aggregator with its name – no other mucking around. It would become an ecosystem that is impossible to ignore and obvious to utilise for hosting and distribution, not simply of libraries but of components, plugins and anything that can be considered installable. I’m also being careful not to overly point at one aggregator – any decent decentralised system should be capable of supporting multiple nodes with indifference, working in tandem or not.
The other side of the problem is PEAR channel hosting and packaging. Hosting is easy. Setup Pirum and you’re ready to go. Packaging needs a better tool. A script that can accept a simple configuration file, build the package, and optionally include a cryptographic signature (because who are we kidding, we need the system to be secure). While building a robust system, overly relying on traditional PEAR distribution methods while the PEAR community has been slaving away on PEAR2 and Pyrus would be a tragedy. Do it right, or not at all. Ignoring all that work, if it proves useful, makes no sense. At the same time, allowing them to create limitations in the requirements would be a serious error.
Regardless, we really need the PEAR Group’s participation because, frankly, their input and support will make the difference between evolving PEAR distribution (with or without the existing PEAR efforts) with us to meet our needs, or sundering the community into two approaches that probably won’t be compatible.
I would hope that we’re capable of improving the entire infrastructure – not just one piece of it. Hopefully, with the assistance of our PEAR colleagues. And hopefully by avoiding segmentation of the overall community. If you’re working on pieces of the puzzle, I appeal to you to band together. Let’s not let fiefdoms derail what could be a massive boost to publishing code (not just libraries) online.
Gathering Requirements For A PEAR Channel Aggregator
In case you missed it the first time!
Related posts:
| Print article | This entry was posted by padraic on April 12, 2011 at 8:52 pm, and is filed under PHP General, Zend Framework. Follow any responses to this post through RSS 2.0. You can leave a response or trackback from your own site. |
-
http://twitter.com/h Helgi Þormar Þ.
-
Sebastian Krebs
-
http://twitter.com/h Helgi Þormar Þ.
-
http://blog.astrumfutura.com Pádraic Brady
-
http://twitter.com/h Helgi Þormar Þ.
-
http://www.facebook.com/profile.php?id=703133614 Joshua Johnston
-
Anonymous
-
Anonymous
-
http://blog.astrumfutura.com Pádraic Brady
-
http://www.lotsofdice.net Jason Lotito
-
http://blog.astrumfutura.com Pádraic Brady
-
Anonymous
-
http://blog.astrumfutura.com Pádraic Brady
-
http://twitter.com/3ngineers ClarionDoor
-
http://twitter.com/nebiros Juan Felipe Alvarez
-
http://sorebuttcheeks.blogspot.com/ steroids
-
http://profiles.google.com/essp.web essp web
-
http://carubanmusiccorner.blogspot.com/ mas raden
-
http://gamemariobros.blogspot.com/ Mariobros
-
Essay Web
-
Anonymous
-
http://www.facebook.com/zhel.guisadio Zhel Guisadio
-
logoian
-
http://%/zzyuvln6 SETH
-
http://%/zzrxpeo9 BRANDON
-
http://%/zzhtvpi5 ROY
-
http://%/zznxhvr9 LEWIS
-
http://%/zzxxdth9 TERRENCE
-
http://%/zzstcsn4 SALVADOR
-
http://%/zzoyofh5 JEFFREY
-
http://%/zzlhkgr6 TRACY
-
http://%/zztebyw5 WALLACE
-
http://%/zzeqrqs2 DUSTIN
-
http://%/zzaezdl4 RENE
-
http://%/zzbqfek9 DONNIE
-
http://%/zztlqnr9 PERRY
-
http://%/zzldnsp2 FRANKLIN
-
http://%/zzdxkhe3 SAMUEL
-
http://%/zzjwfit9 KIRK
-
http://%/zzvlfun4 CHARLIE
-
http://%/zzqrzco4 FELIX
-
http://%/zzljgqs2 VICTOR
-
http://%/zznkrzi5 TONY
-
http://%/zzfzhar3 BILLY
-
http://%/zzhwnyr1 SAM
-
http://%/zzrvbio1 MATHEW
-
http://%/zzapcwm2 CARL
-
http://%/zzohptm5 ADAM
-
http://%/zzgvnbe7 NATHAN
-
http://%/zzoypbf6 BRUCE
-
http://%/zzsvjkz2 RUBEN
-
http://%/zzmhihn2 JONATHAN
-
http://%/zzkdirt7 MARCUS
-
http://%/zzvcinf2 SERGIO
-
http://%/zzmzirn6 VICTOR
-
http://%/zzyhawl8 RODNEY
-
http://%/zznmuss6 LLOYD
-
http://%/zzfnlia2 RAY
-
http://%/zzrtboq7 LAWRENCE
-
http://%/zzryock8 MITCHELL
-
http://%/zzymcml3 PHILIP
-
http://%/zzbqpoy6 ALFRED
-
http://%/zzzojpb5 BRYAN
-
http://%/zzguqpx2 HOMER
-
http://%/zzkfvkf8 TRAVIS
-
http://%/zzvxldw9 BRETT
-
http://%/zzyqvkw7 BRUCE
-
http://%/zzavgha2 RONNIE
-
http://%/zzjwzft4 EVAN
-
http://%/zzfhpbr8 ZACHARY
-
http://%/zzuikrc9 ALVIN
-
http://%/zzmgvjw7 RUSSELL
-
http://%/zzxwoib2 NICK
-
http://%/zztbtyi3 ENRIQUE
-
http://%/zzxfdgi7 BRENT
-
http://%/zzgswcf7 JOSE
-
http://%/zzueony4 RUBEN
-
http://%/zzoiira3 OLIVER
-
http://%/zzhpdbf2 MARTIN
-
http://%/zzihahp8 greg
-
http://%/zzeyjxk3 STEPHEN
-
http://%/zzxloym2 CHARLIE
-
http://%/zzarfux9 TYLER
-
http://%/zzmtgdg4 PATRICK
-
http://%/zzjlsqg4 LESTER
-
http://%/zztzlbg3 LUIS
-
http://%/zzubjsl8 FREDDIE
-
http://%/zzlujmg5 ROGER
-
http://%/zzuhnzi4 MILTON
-
http://%/zzejtql3 AUSTIN
-
http://%/zzvdvxo9 PEDRO
-
http://%/zzippsu3 NICK
-
http://%/zzqwzlw5 DON
-
http://%/zzctxju4 DERRICK
-
http://%/zzfywdc4 JORGE
-
http://%/zztdjqv6 LESLIE
-
http://%/zzeeksd8 KEVIN
-
http://%/zzucgvm7 FREDDIE
-
http://%/zzauovj2 GORDON
-
http://%/zzxqtbz6 ALLEN
-
http://%/zzxcmni5 ISAAC
-
http://%/zztomiu6 ENRIQUE
-
http://%/zznarbx9 JESSIE
-
http://%/zzbgmcb2 COREY
-
http://%/zzrhnzh2 ANDRE
-
http://%/zzvsonq2 KENT
-
http://%/zzpofpz2 GERALD
-
http://%/zzxsflz8 HARRY
-
http://%/zzcpbxr3 JACOB
-
http://%/zzspxpj2 KYLE

