summaryrefslogtreecommitdiff
path: root/docs/roadmap.txt
blob: bbfbbdd93fa3c8d6d71d5bb2b55cb5301fdc7093 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
Paste Roadmap
+++++++++++++

:revision: $Rev$
:date: $LastChangedDate$

This is a document describing Paste's future and some of the things
planned.  This may change as events continue.  Discussion is welcome;
please direct discussion to paste-users@pythonpaste.org

Bold items are particularly important.  The sections are in no
particular order.

.. contents::

To-Do
=====

paster
------

* **Package installation and upgrading.** (partially done)

  * Package installation should allow for Paste-specific hooks.

* Allow applications to easily add their own commands, e.g.,
  ``add-user``.  

* Better PID management when in daemon mode (don't clobber a PID file
  of a running process)

* Add options to manage the daemon process, like force
  reloading/restarting (HUP?) and stopping; make init.d scripts as
  minimal as possible.

paste.docsupport
----------------

* Add indexing for the various objects (middleware, configuration
  options, WSGI environment keys).

* Extract some packages into separate files.  (e.g., ``paste.webkit``,
  ``paste.wareweb`` -- but *not* ``paste.exceptions``)

paste.tests.doctest_webapp
--------------------------

* Maybe move out of ``tests`` package.

* Make it fail hard on certain errors (e.g., when ``paster`` fails)

paste.tests.fixture
-------------------

* Maybe move out of ``tests`` package.

* Get rid of fake_request (convert current tests to TestApp).

* Fill out or remove other mock objects.  (Maybe make a package for
  other pieces?)

* ``setup_module`` really only applies to application acceptance
  testing, but can be enabled unwittingly when doing ``import *`` --
  figure something out there.

paste.pycgiwrapper
------------------

* Document, test, or throw away.

* Allow for non-Python CGI scripts (no clever tricks, just run it in a
  subprocess).

paste.pyconfig
--------------

* Put in notion of "profiles," which involve different sets of
  configuration files.

* Add ini-file parser/loader (probably taking from the old
  ``paste.conf`` module), so some parts of configuration can be
  explicitly handed off to a simpler configuration file.

* Clean up ``use_package`` and move to another module.

paste.reloader
--------------

* Make it optionally use FAM or iNotify, instead of polling files.

* Make sure it uses HUP, etc.

paste.wdg_validate
------------------

* Allow other validators to be plugged in.

* Validate CSS (embedded CSS with report in parent page?).

Blue-sky
~~~~~~~~

* Validate Javascript...?  An anal Javascript parser would be really
  cool.  Maybe use http://www.crockford.com/javascript/lint.html --
  the interesting part is including the output of the lint in pages
  that include the Javascript.  Since the lint program itself is
  written in Javascript, this is mostly a figure-it-out task, not a
  server infrastructure task.

paste.exceptions
----------------

* Display local variables in exception reports, like ``cgitb``.
  Except values should be inlined into the source line itself in HTML
  ``title`` attributes, and the ``class`` should represent the rough
  type (e.g., module, None, string, number, function).

* Keep extra data from being doubly displayed.

* Add object and protocol so HTML can be included in extra data.

* Include "serial number" in non-exception output.

* Add hooks to suppress reporters.  E.g., if a "developer" is logged
  in, the error report need not mailed.  Maybe just based on IP
  address (a rough feature is all that is needed).

Blue-sky
~~~~~~~~

* Allow evaluation in local stacks, interactively, keeping the
  traceback in a session or similar location.

paste.urlparser
---------------

* Static-file-only serving, for serving directories full of Javascript
  and whatnot without security concern.

* Middleware for various compositions of applications, like nesting
  several applications under the same URL space, using the first one
  that doesn't return 404.

paste.session
-------------

* **Use flup session middleware**

* Add DB-API-based session storage.

* Add URI->DB-API connection parser (maybe strip from SQLObject).

paste.login
-----------

* Really document it, and test it.

* Provide some useful backends (htpasswd, database/DB-API,
  SQLObject).

paste.gzipper
-------------

* Probably should just be removed.

Things to Add
=============

No module yet, so these are listed generally.

* Really good static-file WSGI application, that knows about
  If-Modified-Since, ETag, etc.  Should have caching of gzipped
  versions and cache some metadata (like etags themselves).

* Authorization middleware.

* Something to manage collections of static files, like a Javascript
  library.

* Something to copy static files to a known location, based on
  configuration.  E.g., copy static files into a location served by
  Apache.  

* Bring some Javascript library in, mostly for use in examples, but
  also as a kind of suggestion.

* Upload-progress-tracking WSGI application.

* Something like Webware's TaskKit, but more abstract.  And
  multiprocess-friendly.

Done
====

25 May 2005: 
    **``--daemon`` option for running as background process**

29 May 2005:
    * Template files should have optional ``.ext_tmpl`` extension, where
      ``_tmpl`` gets stripped.  This way the currently-invalid ``.py``
      template files wouldn't be recognized as Pythohn files.

30 May 2005:

    * **Deployment of multiple applications using configuration files**

      * An application could be mapped to a particular URL, given a
        configuration file that describes the application.