240 likes | 405 Vues
CPAN6. Mark Overmeer, YAPC::EU 2008. CPAN6. Under development since 2006 detailed design available (XML Schema's) implementation underway Attempt to offer the beauty of CPAN to Perl6 modules. CPAN6. Under development since 2006 detailed design available (XML Schema's)
E N D
CPAN6 Mark Overmeer, YAPC::EU 2008
CPAN6 • Under development since 2006 • detailed design available (XML Schema's) • implementation underway • Attempt to offer the beauty of CPAN to • Perl6 modules
CPAN6 • Under development since 2006 • detailed design available (XML Schema's) • implementation underway • Attempt to offer the beauty of CPAN to • Perl6 • Parrot derivates: PIR, Lua, ...
CPAN6 • Under development since 2006 • detailed design available (XML Schema's) • implementation underway • Attempt to offer the beauty of CPAN to • Perl6 • Parrot derivates: PIR, Lua, ... • other scripting languages: PHP, Python, ...
CPAN6 • Under development since 2006 • detailed design available (XML Schema's) • implementation underway • Attempt to offer the beauty of CPAN to • Perl6 • Parrot derivates: PIR, Lua, ... • other scripting languages: PHP, Python, ... • other programming languages: Java, VB, ...
CPAN6 • Under development since 2006 • detailed design available (XML Schema's) • implementation underway • Attempt to offer the beauty of CPAN to • Perl6 • Parrot derivates: PIR, Lua, ... • other scripting languages: PHP, Python, ... • other programming languages: Java, VB, ... • other sets of files: photo's, documents, ...
CPAN6 • Under development since 2006 • detailed design available (XML Schema's) • implementation underway • Attempt to offer the beauty of CPAN to • Perl6 • Parrot derivates: PIR, Lua, ... • other scripting languages: PHP, Python, ... • other programming languages: Java, VB, ... • other sets of files: photo's, documents, ...→ "My Pictures" becomes "Our Pictures"
CPAN6 • Attempt to introduce "new" technologies • multiple name-spaces • distributed network • helpful servers • cryptographic signatures • trust calculation • commonly used standards • (web) interactive • auto-configuration • mirroring, release under embargo, etc.
No commitment to and from "Perl" CPAN6
Basic concept • Some heterogeneous set of files and directories to be distributed is a release • Releases are collected in Archives • Every release has a name, a version, a source archive, and a publisher • Releases have explicit relations • Archives have rules, set by the board
Network of Archives • CPAN6 • how to exchange releases between archives. • design should never change. • Pause6 • administer one archive • upload, download, search
Promises • No new "standards" • Easy growth paths • All Unicode • No limits set, but possible with rules • Auto-detect whenever possible
Using standards • Auto-negotiating communication • CPAN6 protocol level: pause2008, ... • protocol syntax: XML, YAML, ...
Using standards • Auto-negotiating communication • CPAN6 protocol level: pause2008, ... • protocol syntax: XML, YAML, ... • packaging: none, tar, zip, rar, ... • compression: none, gzip, bzip2, ... • encoding: none, base64, hex, ... • authentication: none, Basic, PauseID, PGP, ... • language: nl-BE, en-US, ... Demo: pause show algorithms
Specification • XML Schema's (120 types, 45kB) <complexType name="file"> <complexContent> <extension base="c6:item-released"> <sequence> <element name="checksum" type="c6:algo-data" minOccurs="0" maxOccurs="unbounded" /> </sequence> </extension> </complexContent> </complexType> <complexType name="item-released"> <sequence> <element name="meta-data" type="c6:meta-data" minOccurs="0" /> <element name="revision" type="c6:algo-data" minOccurs="0" maxOccurs="unbounded" /> </sequence> <attribute name="path" type="c6:label" use="required"/> </complexType> Demo: pause create identity
XML Support • XML is typed, name-spaces are a hassle: • XML::Compile • XML::Compile::SOAP • XML::Compile::SOAP::Daemon • XML::Compile::Cache • XML::Compile::Tester • XML::Compile::Dumper • XML::Compile::Rewrite • XML::LibXML::Simple • ... all created for CPAN6
Translations • For user interface • Log::Report • produce errors/warnings/notice/trace/... • handle translations • exception framework • log dispatch framework fault __x"cannot read config {fn}", fn => $fn; • Text::Catalog • combine message with abstract explanation and detailed explanation in various languages.
CPAN6 Core • CPAN6 components: • CPAN6::Core • CPAN6::XML • CPAN6::XML::2008 • CPAN6::Daemon • CPAN6 (CPAN6.pm) • Chicken/Egg problem • Pause6 components: • Pause6::Core • Pause6::XML • Pause6::XML::2008 • Pause6::Edit Demo: perl2pause
Progress... • XML::* close to 1.00 • 12 distributions • 68 packages • over 300 documented methods • 26k lines of doc and code • 12k lines of test-scripts • CPAN6 core initial steps • 9 distributions • 52 packages • 4k lines of doc and code • no tests
XML::Editor • (Graphical) user interface • edit multiple (related) XML files at the same time • do not show that they are XML
XML::Editor • (Graphical) user interface • edit multiple (related) XML files at the same time • do not show that they are XML • Components: • (graphical) interface library • interaction, help, design by template • from schemas • structural, validation, repetition, default templates • from application • translations, smart behavior, load/save XML, overrule templates
Coming year • Implement XML::Editor • Local archives, create egg • New website • Experimental network archive(with Perl5 modules?)