The official roadmap of things that need to be completed, and their perceived status at the time this document was last updated (08:29:02 07-Aug-2011), and how you can help. Given the pace things are moving at, this roadmap does not refer to specific dates for addition.


The Vision

Although the JSAN will ultimately be different to the CPAN, the CPAN infrastructure has had 10 years to mature and evolve to it's current state, and serves as a good blueprint for anyone wanting to implement anything similar.


The JSAN Components

This list is probably not complete, things are moving very quickly and some of this may get a little out of date. If there is something you want to do, bring it up on the JSAN Development mailing list.

Although there aren't fixed milestones as such, you could consider Milestone 1 to be a working JSAN (in any form) where packages can be uploaded, installed, and used. This has been completed.

The next step, Milestone 2 if you will, mainly involves the completion of all items not marked as Future, and rounds out JSAN to be much more complete, flexible and rubust.

Core Repository

Tasks Status Description
Master Server (Physical) Done Source, build and obtain suitable sponsored hosting for master server.
Static Website Generator Done Template-based generator for primary site, so it's static and slashdot-proof (hopefully)
JAUSE Account System Done Create and manage JSAN accounts
JAUSE Upload Server Done Allow uploads to JSAN via secure server
JAUSE Incoming System Ongoing Receives, checks and processes uploaded packages
BackJSAN Done Stores/backup all uploaded files ever, even once deleted from primary JSAN
JSAN Indexer (YAML) Done Generate index from the packages in the repository
JSAN Indexer (SQLite) Done Generate SQLite index from YAML index.
JSAN Indexer (JSON) To Do Index as JSON instead/as-well-as full YAML to be more language neutral
JSAN Indexer Dep-aware To Do Make the indexer aware of per-package dependencies and populate index with them
Mirror Source Done Provide an rsync source for mirrors to pull from
Mirror Network 10+ Done 10+ mirrors with at least 2 in each of America/Europe/Asia
Mirror Network 50+ Ongoing 50+ mirrors with 3+ on all continents
Mirror Network 100+ Future 100+ mirrors with at least 1 mirror in all major (internet-using) countries.
Bug/Request Tracker Ongoing Provide bug reporting/tracking for JSAN itself, and seperately for all packages
Smoke Testing Ongoing Allow anyone to point their browser at something and smoke test packages
Smoke Testing (Automated) To Do Automated clients that smoke test and report on all new packages

Web Server Components

Tasks Status Description
JSAN Client/Shell v1 Done Rapid initial working implementation of SQLite/CDBI wrapper and the JSAN Shell
JSAN Client v2 Started Low-dependency, documented and caching standalone client libs
JSAN Config To Do Mirror navigator/selector and configuration storage
MiniJSAN Future Cache all package in current index, so you can install package offline
Package Merger Future Merge arbitrary packages into a single script following dependencies
Use Server Future Provide fast, cached delivery of arbitrary merged package sets

Browser Components

Tasks Status Description
Pseudo-Namespaces Done Describe and Document the use of Pseudo-Namespaces
Test.Simple Done Browser/Director-based Unit Testing Framework for JavaScript
JSAN.js Done Load arbitrary packages via XMLHttpRequest + eval
JSAN.js Script Inject To Do Provide same functionality using <script> DOM injection
JSAN.js Use Server Future Provide same functionality via a Use Server
Upgrade.js Ongoing Provide a package for "upgrading" browsers to add missing functions
Integrate Prototype Ongoing Integrate the Prototype JavaScript framework as JSAN packages

Documentation and Community

Tasks Status Description
Website POD Support Done Provide module documentation on the website using ordinary Perl-compatible POD.
Modules using JSPOD should expect bits of code to appear in online docs.
JSPOD Parser Done Creation of parser for JSPOD, the dialect of POD specifically adapted for JavaScript.
Website JSPOD Support To Do Website upgraded to use the JSPOD parser instead of plain POD parser.
Package-time Stripping Done Split out POD at package-time to reduce code size
Install-time Stripping Future Split out POD at install-time, with "developer mode" option to leave it in.
IRC Done Provide a primary IRC channel for the JSAN
Wiki Done Provide a wiki for general use
Mailing Lists Done A variety of mailing lists for the JSAN
List/NNTP Upgrade Future Move to Perl-style dual mailing-list/NNTP server structure
Public SVN Access Done Allow anyone to get access to the code for the JSAN
RSS/Feeds Done Allow the RSS-savvy to do things their way
Module Ratings To Do Allow users to rate and review JSAN packages
Welcome the Slashdot Hordes To Do It's bound to happen any time now...

How can you help?

Create an Import System for RT

Create a mechanism by which I can run an RT instance that has a queue for every distribution on JSAN. The idea is to have a centralized place to report and monitor bugs and features for the JavaScript on JSAN.

Create an Authentication Scheme for RT

All SVN Committers should have full access to the Internal RT instance. It would be great to have an authentication system that would look the user up in the SVN auth basic table and authenticate her credentials against it. Otherwise, the user is a guest.

I have some code that can do the authentication against the SVN auth table already.

Create a Mirror

Fill in our global network. Find out how to be a mirror for JSAN.

Writing Documentation

Open JSAN could use some good documentation on writing excellent classes and function libraries. The documentation should include support for the JSAN library and example tests using the Test.Simple distribution.

Promote JSAN

Get the word out on your blog, news site, at work, or just use some of our ideas to promote the project.