[Cuis] Cuis-Features
Ken Dickey
Ken.Dickey at whidbey.com
Fri Jul 5 11:15:35 CDT 2013
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. 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.
> 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.
Many packages are/will-be simple and requiring revision 0 is fine forever, but some will be complex enough that revision matters. [IMHO]
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.
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
--
Ken [dot] Dickey [at] whidbey [dot] com
More information about the Cuis
mailing list