Skip to content
Zwetan Kjukov edited this page Oct 10, 2015 · 4 revisions

Old Design Document

Introduction

The how, why, what, etc. of how the distro tool should work.

This is an open document so we can remember why this or that decision have been made in the design of the tool.

I'm a single/simple/indie AS3 developer,
I start this because I need it for some other of my libraries,
participation and comments welcome (anyone can be added as contributor)

  • give me a shoot on twitter @zwetan
  • send an email [my username] @ gmail (dot) com
  • or simply comment on this page

The Problems

Currently most AS3 libraries are poorly distributed:

  • a simple *.swc file that may or may not contains other 3rd party libraries
  • a path to *.as source code (from a zip or a repository) with may depends on 3rd party libraries as *.as and/or *.swc
  • an *.mxp file that need to be installed with Adobe Extension Manager
  • sometimes poor versioning
    (eg. you don't know which version of the library is in the *.swc, *.mxp, etc.)
  • sometimes poor documentation (on how to install and use the library)
  • sometimes does not indicate runtime dependency, other libraries dependency
    (Flex SDK version vs "pure" AS3, AIR 1.0 vs 2.0, FP 9 vs FP 10, etc.)
  • distribution on blogs, forums, etc.
  • etc.

The Potential Solution

Learn from our peers (other languages) like Python, Ruby, Perl, etc.
and mimic for our own need (Flash Community in the large) a similar distribution mechanism
as distutils, rubygems, etc.

Provide a command line tool (that may extend to a GUI tool) distro
to help downloading, installing, building a packaged distribution of an AS3 library
taking into account the following parameters

  • runtime compatibility
    • Flash Player
    • AIR
    • Tamarin (redtamarin, mod_actionscript, shibuya, etc.)
  • Operating System compatibility
    • Windows
    • OS X
    • Linux
    • etc. (Android, iPhone for ex)
  • library versioning
    • {major}.{minor}.{build}.{revision}
  • timestamp
    • when the package have been built
  • URL and alternative URL
    • where to get the package
    • support replication on different hosts
  • contact informations
    • email(s)
    • web, blog, forum, etc.
  • license informations
    • freeware
    • open source
    • etc.
  • (maybe more ?) etc.

The tool should help gathering all those informations to make it easy
for a developer to create and distribute a package.

If for example you have an Ant build that can zip your *.swc and readme.txt
and/or other files (asdoc) into a *.zip with a version number
the distro tool should be able to replace this process in a simple way
so you can replace zip file1.swc readme.txt with distro -build file1.swc readme.txt.

Adobe Extension Manager

Easily install new extensions and manage the ones you already have with the Adobe Extension Manager. It runs side-by-side with most Adobe Creative Suite applications.

This tool can solve part of the problems but not all the problems
here some difficulties you can encounter with this tool:

  1. You need to have one of the Adobe CS applications installed to be able to install/use it to create a package
  • you can not create an *.mxp on Linux
  • the tool poorly run on the command line
  • for open source projects you should not have to install a commercial tool to be able to build a distribution
  1. End users need to have one of the Adobe CS applications installed to install AEM and an *.mxp
  • you can not target another application than Flash, DreamWeaver, etc.
  • you have to distribute all the dependencies within your package
  • hide where the different files are installed
  1. more

TODO

Runtime Compatibility

TODO

Future

By extension we could aslo want a "make" or build tool (again could be based on tamarin, single exe no dependencies), but let's consider this as another project for the moment.

For now, it is more reasonable to focus only on the distribution problem and leaving the building/making as outside the scope of the distribution tool.

But later in time it could make sens to add building and making features to the distribution, eg. distributing source code and automatically building locally.

TODO

References