[Swift-devel] Planning next set of Swift features and releases
Ben Clifford
benc at hawaga.org.uk
Wed Apr 22 04:55:19 CDT 2009
I would argue fairly strongly against doing anything particularly
revolutionary before a 1.0 release - the time for developing significant
1.0 new features, if 1.0 is to be in August, is pretty much over (if you
regard the development period for that being the past 3 years); experience
has shown that it takes many many months for there to be enough
developer/user iterations to get stuff working well.
Pay attention especially to the special significance of calling a release
1.0 - nothing in there should be a "development feature" that has only
recently been made, and perhaps little development time should be spent
after the son-of-0.9 release on working on new stuff vs fixing existing
stuff.
> Ian challenged me to narrow it to 10 features; I came close but have not yet
> given it the thought it needs, looked through bugzilla, etc. Then I backslid,
> but to pick 10, we need to consider more.
I think picking 10 things when those things can vary wildly in scope, is
not a good thing to do.
The below commentary is wrt what can be done for an august 1.0 release,
not whether they are worth doing in general in the longer term.
> Clean up mapper model.
definitely not. far too much scope for breakage, and definitely breaking
of everyones understanding of how mappers work now.
> Structure assignment and related issues
>
> - remove limitations on this
> - maybe some similar language limits to address
needs more description. but there are a relatively small things that can
be implemented that lok more like bugs in implementation /
not-implemented-yet that are ok to do. anything that is significantly
changing existing semantics should not happen.
> Good run time error messages with source code line numbers
>
> - summary of errors at end of output is ineffective
> - review of messages in log that should go to output
> - review of message content in log
yes.
> Coaster polishing and testing/robustness
>
> - address scheduler anomalies
> - 3 modes of provisioning
>
> Condor-G support
its there in 0.9rc2 but needs more testing and debugging.
> tc.data and PATH extensions
neither of the two subbullets talk about PATH
> - rename tc.data (e.g.: applist.txt)?
no. changing one name to another doesn't help people, and breaks both
existing users and documentation.
> - clean up its format, make simpler to add apps.
yes. this is a usability-killer.
>
> app() syntax review
>
> - trailing ";" confusing
> - quoting review and improvements if needed
> - multi-line
If someone can come up with a compelling new format for app syntax then it
should be straightforward to implement it. But coming up with that format
is the hard thing. I don't think that lopping off a semicolon makes it
particularly less or more intuitive compared to the rest of the app
syntax.
> Auto app install
singel-executable staging is< i think, easily achieveable. anything more
complex than that is not achievable for a 1.0 release. That does not
preclude ongoing ADEM (or related to ADEM) development as a separate
component (much as Falkon is or the log-processing stuff was)
> Make sites & tc config easy/instant for osg, tg, local clusters
that is too wishywashy a goal.
for osg, I am pleased with the present site generation stuff. my main
concern is that it does not generate tc.data entries for /bin/sh, which is
how self-deployed apps are made at the moment. But this might be addressed
either in the single-app-deployment or tc.data points above.
> - productive ADEM
this should be orthogonal to Swift releases.
> namespace::name:version for function/app identifiers
no. the implementation of this runs too deep throughout the code, and
there is no real consensus at the moment on how these should behave.
> Global variables
yes. I think pretty easy and non-disruptive
> Swift command
>
> - multi-site selection
By that I take it to mean a commandline parameter to specifically restrict
the set of sites to run on. in which case, yes, should be easy.
> - run management (maybe a separate command)
This needs breaking up into specific features, many of which the answer
will be yes to.
> Scaling
>
> - Efficient handling of 1M and more jobs per wf
> - what else needed here?
At least some of this is karajan threading work, which pretty much means
hategan has to do it. I don't pretend to understand how easy or hard it
is, but I would be very wary about introducing major changes to the
threading system there.
> Library / #include feature
By library here I take it youmean including swift code, not linking to
other non-swift libraries. in which case, yes, I think a simple include
mechanism can go in - you already have prototypes that show the semantics.
> Provenance
>
> - make it end-user useful and ready
> - easy to get perf numbers
> - easy to associate swift parameters with files and runs
yes.
(the rest of this paragraph is a rant) I am fairly happy with the ongoing
development of this at the moment for PC3. However, there has been a
consistent lack of feedback for the provenance work. I attribute no blame
on any person for this, but it is the case that no on aside from Luiz has
spent a significant amount of time working with the provenance code over
the 16 months that it has been in the SVN. People throw in plenty of
feature requests, some of which already exist, and then make no use of
them. If other people in the group do not test out features in the
provenance code properly (i.e. more than spending one hour every month)
then people cannot complain when the features do not work how they want.
The same applies to the log processing graphs - people need to come up
with concrete technical criticisms rather than vague "please make it
better"
> More logging / status reporting enhancement
> - enhance format and info content of log tools report
see the above rant.
>
> Review of iteration and related flow of control issues
> - why iterate seems hard to use
> - for, do, while?
> - functional equivalents
Major changes in the language should not happen before 1.0. So no.
Ongoing review of the semantics and syntax is a good thing to do, distinct
from 1.0. However, I think you need to have a better understanding of what
the semantics are now before starting to suggest changes.
> Built-in and/or intrinsic functions
> - remove @
yes. pretty easy, I think.
> - additional string functions, perhaps other related builtins
> - (time, date, sizeof, ...)
I don't think we should go about adding large numbers of builtins without
clear use for them. So i think each proposed builtin shoudl be proposed on
its individual merits. so there is no yes/no answer for this poitn.
> - Built-in function extensibility
what does that mean?
> - general external function mechanism - shell out? lib path?
no for 1.0 - mechanisms already exist for this, although they are
syntactically ugly.
As this list is primarily about 1.0 features, I do not comment on your
Long-term section which appeared here, other than to say they are all
definitely post 1.0
--
More information about the Swift-devel
mailing list