Menu

[2275f9]: / roadmap.xml  Maximize  Restore  History

Download this file

276 lines (223 with data), 13.1 kB

  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
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
<?xml version='1.0' encoding='utf-8'?>
<html lang="en">
<h2>Roadmap</h2>
<p>
This document explains what we've done and where we're going with future versions.
</p>
<toc level='h3'/>
<h3>History</h3>
<p>
This is a quick overview of the major features added to Zero Install. It focuses on features available to feed authors, who want to know which features they can safely use while supporting users on older distributions.
</p>
<h4>2005 (versions 0.1 to 0.17)</h4>
<p>
Zero Install was created in 2003 as a distributed network filesystem. In 2005, it was redesigned to the current "injector" system. Feed files from version 0.2
can still be run using the current version.
</p>
<h4>2006 (versions 0.18 to 0.24)</h4>
<p>
Major features added in 2006:
</p>
<ul>
<li>Support FTP downloads of archives.</li>
<li>XML signatures (not just plain GPG).</li>
<li>The &lt;recipe&gt; element allows combining multiple archives.</li>
<li>Restrictions on suitable versions of dependencies, using the &lt;version&gt; element.</li>
<li>Support for other secure hashes (not just sha1).</li>
<li>Support for extracting from RPM, Debian, Autopackage, zip and Cabinet format archives.</li>
<li>Compile a binary from source.</li>
<li>More flexible version numbering (e.g. "1.2-post7").</li>
</ul>
<h4>2007 (version 0.25 to 0.31)</h4>
<ul>
<li>Extracting from .tar.lzma and .tar (uncompressed) archives.</li>
<li>Background checking for updates.</li>
<li>Automatic <a href='sharing.html'>secure sharing</a> of downloads.</li>
<li>Bug reporting.</li>
<li><a href='distribution-integration.html'>Native package manager integration</a> for Debian and RPM systems.</li>
<li>Implementation bindings (&lt;environment&gt; directly inside &lt;implementation&gt;).</li>
</ul>
<h4>2008 (version 0.32 to 0.37)</h4>
<ul>
<li><a href='http://roscidus.com/0mirror/'>Mirrors for feeds</a>.</li>
<li>Manage applications added to the menu (GNOME and KDE).</li>
<li>Multi-arch support.</li>
</ul>
<h4>2009 (versions 0.38 to 0.43)</h4>
<ul>
<li>Support for Fink (Mac OS X).</li>
<li>Easier compile-from-source ("Automatic" mode).</li>
<li>Key information server.</li>
<li>&lt;needs-terminal&gt; supported.</li>
<li>Downloading feeds over HTTPS.</li>
</ul>
<h4>2010 (versions 0.44 to 0.51)</h4>
<ul>
<li>Download progress bars in console mode.</li>
<li>Canonical CPU type names.</li>
<li>Gentoo, Slackware and FreeBSD Ports integration.</li>
<li>Apple dmg-format archives can be used on Mac OS X.</li>
<li>Specify distribution name in &lt;package-implementation&gt;.</li>
<li>Support for multiple hash algorithms for a single implementation.</li>
<li>Added 'local-path' attribute.</li>
<li><a href='solver.html'>SAT solver</a> handles complex version requirements.</li>
<li>Select implementations based on user's locale.</li>
<li>Support for PackageKit (prompt the user to install distribution packages where necessary).</li>
<li>Initial Windows support.</li>
<li>The &lt;command&gt; element allows passing extra arguments.</li>
<li>The &lt;runner&gt; element allows specifying the interpreter.</li>
</ul>
<h4>2011 (versions 0.52 to 1.5)</h4>
<ul>
<li>The "0install" command.</li>
<li>The value attribute for &lt;environment&gt;.</li>
<li>Recursive use of &lt;runner&gt;.</li>
<li><a href='http://thread.gmane.org/gmane.comp.file-systems.zero-install.devel/3738'>Better defaults for approving new keys</a>.</li>
<li><a href='http://thread.gmane.org/gmane.comp.file-systems.zero-install.devel/3584/focus=3821'>A Mac OS X binary package</a>.</li>
<li><a href='http://thread.gmane.org/gmane.comp.file-systems.zero-install.devel/3915'>Improved Python support</a>.</li>
<li><a href='http://article.gmane.org/gmane.comp.file-systems.zero-install.devel/4186'>0install 1.0 final!</a></li>
<li>&lt;environment separator=...&gt; attribute.</li>
<li><a href='http://thread.gmane.org/gmane.comp.file-systems.zero-install.devel/4252'>Optional dependencies</a> (but didn't work reliably until 1.7).</li>
<li>&lt;executable-in-var> and &lt;executable-in-path> bindings.</li>
<li>Use threads instead of sub-processes for downloads (more efficient).</li>
<li>Update to network-manager 0.9 API.</li>
<li>MacPorts distribution support.</li>
</ul>
<h4>2012 (versions 1.6 to 1.14)</h4>
<ul>
<li>Arch distribution support.</li>
<li>Explicit "file:" prefix for interface URIs.</li>
<li>Optional dependencies work (introduced in 1.2 but buggy).</li>
<li>Cygwin distribution support.</li>
<li>&lt;replaced-by&gt; element.</li>
<li>&lt;command&gt; inside &lt;package-implementation&gt;.</li>
<li>"Explain this decision" feature.</li>
<li>"POSIX" architecture (everything except Windows).</li>
<li>Limits on the number of concurrent connections to a site.</li>
<li>Support for <a href='user-guide-apps.html'>apps</a>.</li>
<li>Better Windows support from Python (so tools like 0compile work out of the box).</li>
<li><a href='http://thread.gmane.org/gmane.comp.file-systems.zero-install.devel/6097'>Support for programs such as cmake that can't cope with "=" in pathnames</a>.</li>
<li>Support for Python 3 and GTK 3 (in addition to Python 2 and GTK 2).</li>
<li>The &lt;restricts&gt; element.</li>
<li>The recipe &lt;rename&gt; step type.</li>
<li><a href='http://thread.gmane.org/gmane.comp.file-systems.zero-install.devel/6103'>Mirrors for archives</a>.</li>
<li>Support for headless servers (<a href='http://thread.gmane.org/gmane.comp.file-systems.zero-install.devel/6297'>0install-core</a> package).</li>
<li><a href='injector-trouble.html'>Improved diagnostics</a> when a solve fails.</li>
<li>The 'if-0install-version' attribute.</li>
<li>The --version EXPR and --version-for URI EXPR command-line options.</li>
<li>Disjoint version ranges (e.g. "2.6..!3 | 3.2.2..").</li>
</ul>
<h4>2013 (versions 1.15 to 2.5)</h4>
<ul>
<li>Shell tab-completion.</li>
<li>"0install show" command.</li>
<li>&lt;requires distribution='...'&gt;.</li>
<li>&lt;for-each&gt; for argument expansion.</li>
<li><a href='0install-2.0.html'>0install 2.0 released!</a></li>
<li>"0install search" command (searches the default mirror).</li>
<li>&lt;remove&gt; recipe step.</li>
<li>&lt;binding&gt; for custom bindings.</li>
<li>.xz compressed archives.</li>
<li>Relative archive paths in local feeds.</li>
<li><a href='http://roscidus.com/blog/blog/2013/06/09/choosing-a-python-replacement-for-0install/'>Rewrite in OCaml</a> (fully compatible but 10x faster).</li>
</ul>
<h4>2014 (versions 2.6 to 2.8)</h4>
<ul>
<li><a href='http://roscidus.com/blog/blog/2014/06/06/python-to-ocaml-retrospective/'>OCaml port completed</a>.</li>
<li><a href='json-api.html'>JSON API</a> (<b>0install slave</b>)</li>
<li>Separate <b>0install</b> and <b>0install-core</b> packages in Debian, to allow installing on headless servers without pulling in any GUI dependencies.</li>
<li>Support for &lt;requires source='true'/&gt; dependences.</li>
<li>Getting credentials from <b>.netrc</b>.</li>
</ul>
<h3>Current and future plans</h3>
<p>
This is a bunch of ideas. <a href='get-involved.html'>Volunteers welcome!</a>
</p>
<dl class='roadmap'>
<dt>Cross-compilation</dt>
<dd>The solver is now flexible enough to select components for multiple architectures at once. For example, it should be able to select source code and headers for a target platform, but choose versions of the build tools for the build platform.</dd>
<dt><a href='http://thread.gmane.org/gmane.comp.file-systems.zero-install.devel/5045'>Support for multiple ABIs</a> (for C++ on Windows)</dt>
<dt><a href='http://thread.gmane.org/gmane.comp.file-systems.zero-install.devel/6276'>Alternatives for dependencies</a></dt>
<dt><a href='user-guide-apps.html'>App support</a> for XDG launchers</dt>
<dt>HTTP connection pooling, pipelining and DNS caching</dt>
<dd>Rate limiting is already supported, but further performance improvements are still possible.</dd>
<dt>More flexible &lt;recipe&gt;s</dt>
<dd>e.g. applying patch files, unpacking nested archives</dd>
<dt><a href='http://thread.gmane.org/gmane.comp.file-systems.zero-install.devel/3733'>An app-store style interface</a></dt>
<dd>
To help people get started quickly with 0install, it would be good to have a simple,
familiar "app-store" user interface. Of course, without restricting people to just those applications.
</dd>
<dt><a href='http://thread.gmane.org/gmane.comp.file-systems.zero-install.devel/3847'>Feed search</a></dt>
<dd>
Add a free-text search engine for names and descriptions
of locally cached feeds, to enable quick off-line searching.
</dd>
<dt>Custom bug-report address</dt>
<dd>A feed should be able to specify where bug reports are to be sent. Currently, they all go to the 0install project itself.</dd>
<dt>Support for services</dt>
<dd>e.g. a 0service command that integrates with systemd. Juju support is currently under development.</dd>
<dt><a href='http://thread.gmane.org/gmane.comp.file-systems.zero-install.devel/1285/focus=1285'>Sandboxing</a></dt>
<dd>
Provide better integration with sandboxing systems such as Rainbow, <a href='http://plash.beasts.org/'>Plash</a> or LXC. Sandboxed software must still
be able to run other programs through Zero Install, adding them to the cache as needed in a secure fashion. <a href='ebox.html'>EBox</a> shows how this integration can work.
</dd>
<dt>Better desktop integration</dt>
<dd>e.g. a better Firefox plugin, XFCE support.</dd>
<dt><a href='http://thread.gmane.org/gmane.comp.file-systems.zero-install.devel/3693/focus=3718'>wxWidgets GUI for Mac and Windows</a></dt>
<dd>
Having a GUI that uses wxWidgets would make 0install much easier to use on Mac OS X and Windows, and would fit in better with the native look-and-feel.
</dd>
<dt>Automatic cache cleaning</dt>
<dd>
0install can keep all versions of all libraries on disk at once. This is useful, but there should be a way
to clean out ones that aren't needed any more to free up disk space. Individual versions can be removed easily
enough via the cache explorer, but it should be more automatic, a bit like "apt-get autoclean" or deborphan.
In particular, we need a way to remove a version which was shared between multiple users safely (i.e. only remove it once no user
requires it).
</dd>
<dt>Managing instances (configurations/profiles) of programs</dt>
<dd>0install currently only manages code, not configuration. It is assumed that programs look in ~/.config and similar places for this.
0install should have support for multiple instances (configurations / profiles) for any program. This will be needed for sandboxing anyway.
</dd>
<dt>Lazy dependencies</dt>
<dd>
Support dependencies that are only downloaded when needed. For example, ROX-Filer's options box has a button to launch the
MIME-Editor application. ROX-Filer should be able to depend on MIME-Editor in its feed, without requiring MIME-Editor to be
downloaded before ROX-Filer can be started.
</dd>
<dt><a href='http://thread.gmane.org/gmane.comp.file-systems.zero-install.devel/1072/focus=1073'>Plug-ins</a></dt>
<dd>
It should be possible to add additional interfaces to a program's dependencies list. For example, you could add
the interface for a French dictionary to a word processor to let you spell-check French documents.
This would usually require some support from the application itself. A plug-in is a more general type of
optional dependency; one which isn't listed in the main feed file at all.
</dd>
<dt>More meta-data</dt>
<dd>Mailing list address, release notes, etc.</dd>
<dt>Peer-to-peer downloads</dt>
<dd>The tricky bit about P2P is normally the free-text searching, but we already know the secure hash
of the manifest we want, and when we get it we have the hash of every file we need, so this should be easy!
The idea is that if someone on your local network has already downloaded a program, you can get it from them
automatically. See <a href='0share.html'>0share</a> for current experimental version.
</dd>
<dt><a href='http://thread.gmane.org/gmane.comp.file-systems.zero-install.devel/1214/focus=1214'>Binary patches</a></dt>
<dd>
We have the secure hash of the currently-cached versions, so we can check that they're unmodified. In that case,
we could just download a delta to the next version rather than getting everything again. 0publish should create
these deltas automatically. Rsync may also be an option for some sites.
</dd>
</dl>
<h4>Other possible features</h4>
<dl class='roadmap'>
<dt>Kiosk mode</dt>
<dd>The system administrator can restrict what software users can install using Zero Install (white-list interface
URIs or trusted public keys).</dd>
<dt>Third-party sign-off</dt>
<dd>A distribution can sign an upstream release ("Certified for use with SUSE 10.2", etc). Users can set a policy
to run only approved versions by default. Or, a third-party could provide additional input to the hints box
(we already provide the "Unreliable hints database", but a commercial organisation could offer
a real service).
</dd>
</dl>
</html>
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.