[Cuis] Cuis-Features
Juan Vuletich
juan at jvuletich.org
Fri Jul 5 12:26:15 CDT 2013
Hi Ken,
On 7/5/2013 1:15 PM, Ken Dickey wrote:
> On Fri, 05 Jul 2013 10:35:16 -0300
> Juan Vuletich<juan at jvuletich.org> wrote:
>
>> This is just great. I want to integrate it into Cuis, and make packages
>> know about this.
> That would be super.
>
>> Something that is not clear to me, is if a package might implement more
>> than one feature. I'd think yes, but then FeatureSpec 'provides' needs
>> to be a collection. In addition, we have several version.revision number
>> in a package, one for each feature it provides. This also means that we
>> might need a version.revision for the package too. But I don't want to
>> make it more complicated than needed. Thoughts?
> I thought about packages providing multiple features. One of the hard lessons I learned from eXtreme Programming is "You ain't gonna' need it."
>
> Building general facilities with options for foreseeable contingencies is a habit which we get into as designers and is hard to break.
Yes. The "late bind everything" applied to requirements. I agree. In the
long term, a simple design is always easier to evolve into whatever is
later needed (for sure not what we had imagined before...).
> Cuis is all about being as simple (but powerful) as we can be, yes?
>
> I really think a single package name and a single feature name, hopefully the same name, should work.
>
> It is always easy to make things more complex when a compelling need arises.
Agreed. Thanks.
>> BTW, the requirements should be specified as featureName + version,
>> without including revision number. Do you agree?
> No, but perhaps we are "agreeing loudly". It I think about Cuis 4.1 with "41" as the version of Cuis-Base, there were a lot of changes between revisions. Some of my code would not have worked before a specific revision.
Cuis doesn't follow Semantic Versioning. I like the idea, but Cuis still
changes too much for that. Maybe some time we get there... Right now,
specifying a Cuis-Base version is either too limiting (if done strictly)
or too risky (if done ambiguously). I think we can't specify dependence
on Cuis-Base versions yet.
But I think we can agree on using "semantic versioning" like
version.revision numbers for packages and Features. Then we'd only
indicate dependence on version number (not revision).
> Many packages are/will-be simple and requiring revision 0 is fine forever, but some will be complex enough that revision matters. [IMHO]
Mhhh. Not sure. To me, asking for SomeFeature-1.0 is not the same as
asking for SomeFeature-1.*, as the former is a specific release while
the latter matches a whole series.
> The constructors could certainly have short forms with the obvious default(s). I would expect the following to be the same invocation:
>
> (Feature named: #Sound) require.
> (Feature named: #Sound version: 1) require.
> (Feature named: #Sound version: 1 revision: 0) require.
No, to me, default is nil or *, i.e. "anyone will do", while 1 or 0 are
specific.
> BTW, I am very much looking forward to loading packages by
> (Feature named: #Ropes) require.
> rather than:
> | slash |
> slash := FileDirectory slash.
> CodePackageFile installPackageStream:
> (FileStream concreteStream readOnlyFileNamed:
> '..', slash, 'Cuis-Ropes', slash, 'Ropes.pck.st'
> )
>
> Cheers,
> -KenD
:)
Cheers,
Juan Vuletich
More information about the Cuis
mailing list