[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