Oct 30th 2003.

(OOPSLA 2003) Tuesday

Past OOPSLA trip reports can be found at Trip Reports I've Written in the past
Back to Monday

Note on Nov 5th 2003 this paged was moved to a Wiki so you can edit it there. Please read it over there, this copy is here for historical reasons. http://wiki.cs.uiuc.edu/CampSmalltalk/OOPSLA+2003+Trip+report+Tuesday.

Tuesday Morning:

Larry Lessig

Photography.

{Missed the first few minutes: someone else can fill in?} I think issue was taking pictures of others does that require permission, or is it free? In some cultures it was even view as stealing your soul and resulted in the death of the photographer.

Turns out they decided it was free, so growth of photography was exponential.

1800
Copyright publish transform
commercial regulated free
non-commercial free free

If work was not-registered then it was free, 95% not registered it was free. This was the first 100 years, then law moved to derived works, like taking a story to a play. Then it changed to "copy" and became general. The law was regulating who could copy, that was people with printing presses. Ah but "copy" machines started to grow.

"Life with Lawyers"

1909 copy transform
commercial (c) (c)
non-commercial free free

More machines that copy, more regulations, so non-commercial copy feeling grow then 'free' becomes smaller. Suddenly in 2000 we have ALL things in the boxes are (c)

How insane is this?
A "book" unregulated -> {unread, give, sell, sleeping on a book!)

Still there are regulated things, like publishing a book. Around that there is a thin shell of things regulated, but fair use and free. Like quoting a part of a book in a review. This is fair use for criticism

Internet:

Every act is a 'copy'. it's subject to copyright, all uses are regulated, now to argue for the thin sliver of fair use.

Copyright is not necessarily bad. it does extraordinary good in it's proper place.

A Question comes to mind:
More benefit than burden?
Does life with a lawyer make sense?
For certain work it make sense
Commercial -> copy make sense
Commercial -> derived/transform make sense
non-commercial -> transform
Say a fan fiction club for Star Trek. Why would you need permission from a lawyer first?
Non-commercial -> copy
Some make sense.

So what/when

"Rip, Mix, Burn" culture an Apple ad, remember that? Ran until Disney told them to stop.

Tools to express better culture around the world.

Christian Marclay
Telephones (1995)
500 clips of usage from phones from movies
Brilliant
Problem didn't call the 500 studios for permission
So you can't see it except in "illegal" theaters, because they don't have permission to use *all* of the clips.

Movie

Lipsyncing Bush & Blair.
Set to music, mocking the Iraq war. It's a political message. Ah, but to release it they needed permission from "Dixie Chicks" for the sound track. Which certainly wouldn't be given.

Another clip
"Rush"
Vocal set to music.

Oh poor Rush. But it's an expression about some folk's feeling about Rush produced with tools commonly available. But the "regime" says you are a pirate. Does that make sense? Now the obvious response is to say let's see how to change the law to fit this technology.

Bu it's a terrorist war where we attack teenagers.

Mmm but yet those slimy copy shops should be hanged because they are illegal and we know that.
But mp3.com sued for $120M to bankrupt, bought by lawyers, then they sued the lawyers that represented mp3.com. It's like the Mafia.

NegativeLand, produces collogues.

"Fan Fiction"
Putting up web site for movie characters, then you face the lawyers from the studios to shutdown.

RIAA versus 12 year old

A war, not an adjustment to new technology
A land-grab, a extraordinary set of powerful individuals grabbing everything.
<consequences>
As compared to photographs, instead of exponential growth we get a flat curve in this domain.

July 2003
CPTech to work property information organization (WIPO)

Open collaborative process to produce public goods.

Like how science works

They listed the IEFT and internet protocols
Open source (F/OSS)
WWW
The Human Genome Project
The SNP consortium
Open Academic and Scientific journals
GPS

Mmm should be the place where world issues about intellectual property.

In my speech to them, you need to balance it. WSIS said not to talk to it.

Now Microsoft got the USA patent office to veto the talk at WSIS.

WSIS says
"Open source software runs counter to promoting property rights"

????
What FSF is built on copyright!!!!

???
WIPO's goal to extend copyright?

""""
"disclaim or waive such rights"


In DC
"IP extremists"
Terrorist war against people who talk about IP in public domain

So what can we do? Well as a "naive lawyer" maybe I could go to the supreme court and say look at the constitution versus what is built. Extending the length of term 11 times, certainly to preserve the Mickey mouse trademark. Ah, they'll do the right thing.

"Imagine changing law"

Ah, when was the last time the supreme court has done the right thing in face of all the money in the world!!!! So they said there is no problem here, congress has done it before {extending the length}, and can do it again...

What????

Ok lets look at what to do.
So need to change within the law.
Let me introduce the:

Creative Commons (cc) Note the two 'c' in the circle.

Tools to remove the lawyers and to mark content free.
To say "some" rights reserved.
So try to spread (cc) into
noncommercial copy/transformation
commercial transformation

Video of an Ad
The reference to skip the intermediaries.

Laws say you own it all
But how to publish to others?
Content creation what to do?
Issue is now you need to ask permission
Or venture forward unsure, or do nothing.
Lawyers now have a job.

Creative Commons license
Lawyer friendly, people friendly, computer friendly.
Allows you to retain copyright, allows other access.
"Some rights reserved, or no rights reserved"

So you don't need to ask permission, because others have granted the permission via (cc)

---
Our past had the world free in it.

Free culture depends on property that people own.

Battle in culture space, like competitive versus feudal space.

Yet it presented by DC as property versus pirates

The thinking is false. Need to convince the people setting policy that this thinking is false, otherwise we will lose. Lawyers are redefining the free culture. We are losing this.

Here today I can talk to a body that understands the issues, this issue needs to be transform by you
into activity in DC. Like Kodak in the 1800 we must win.

They control the debate but must change that view so they are ashamed about what they do.
End of talk.

Questions
So what happens if you give this talk to the America Bar Association

Well it was stunning, it was like talking about communist activity. So I was there to accept an award and the chair introduced me with a 10 minute talk about how this law firm was against me, but we did need to hear the message. Lawyers are now not-allowed to talk. Law firm? It's us or Lessig.

Duty to the truth
Duty to clients?

ALS spokesman for themselves or for the clients?


Question?
Don't we have money on our side?
Answer:
Public is going to loose rights granted to them like for VCR when VCR go away, because VCR aren't being bought anymore.

RIAA is extraordinary large. They are brilliant. They have the movie stars on our sides, we have justd ordinary people. So Bob Dillion (sp?) shows ups to testify. Then everyone on the hill is there, certainly not for us.

Question:
In your promotion of creative commons copyright you say to get rid of the middle man.

Answer: You don't want to get rid of all the lawyers.

Well we do want to get rid of or mange the P2P. But not by suing 12 year olds. Perhaps like payment on products to cover this, need a intermediary to do this.

Question?
Professor we produce open source software, then licenses are issue. Which should we use.
How should we mix them. Sigh seems I need to hire a lawyer to solve this issue

Well it's like the California Gov. race.
{Laughter}

75%+ is released under the GPL.
FSF could make it easier because people are uncertain.
But because how GPL is enforced I think the fear should be tiny...
Cases they have pursued are black and white cases of blatant stealing.

Current is being revised as GPL version 3 to resolve issues with Linking.

This isn't a commercial versus non-commercial debate. Stallen (sp?) doesn't mean this
Look at Red Hat and IBM who do Linux addons etc. ]I'd vote for the GPL

Question
So how could we make them look silly, like the RIAA against the 12 year olds.

Answer:
MMm
Only when giants talk. Like Intel against the Hollings (sp?) bill.

Problem is DC has a short memory.

FCC is going to past the broadcast flag law. You need to respect the "can reuse"
Now the problem is that devices need to be approved by a committee to be tamper proof so you can play movies and you can't use open source software for this because that is deemed to be unsafe! So that all gets handed over to Hollywood.

So now GNU Radio now becomes illegal because it broadcasts digital radio.

So here today none of you are aware of this, but it's going to be passed today or tomorrow.

Question:
About paying tax on CD/tape that goes to the content creators.

{Your author notes: This is what is done in Canada, yet the Canadian government has no idea how to or who to redistribute the money to, even thou $100 of millions has been collected under the law. Currently they feel the cost of building the distribution software/process could exceed a billion}

MIT
Students setup a Napster network using analog! signals on the cables within the university. This is LEGAL! because the university has paid to enable playback of music on campus that is delivered via Analog. Remember they need to playback music for teaching etc so they pay a license fee for freedom of use.

The law doesn't make sense. If they had distributed as digital this would be illegal, but since it's analog it's covered by a license.

Question:
What is likelihood on restrictions on web site linking.

Answer:
It's quite likely, that linking will be copyright controlled.
Dutch court has upheld that.
Let me give a case example
Usenet archive provider sued by p0rno company about having their content on your site because of spider activity. Archiver said fine let's see what we need to delete, no p0rno company wanted statutory damages. They were right in the core of the issue and fit just fine into the law. The archive company did not have permission to host the content that was posted to usenet.

So they settled for $400K, in reality the p0rno company is using this as a money generator.

Question: what is the difference between a URL and linking?

If you put a hyperlink then technology is making a "copy" of that site. If you put up a description of how to link to that site then it's ok. So that is why news sites now put URL in their news items but no hyperlinking.

"2600" site provided DcSS links sued under DMCA
Look! A news magazine providing information about illegal activity, then successfully sued for talking about that information.

Question:
Would these be laws be around if people hadn't stolen software and music in the 80's and 90's

Software did the copy protection war 15 years ago. Copy protection destroyed the market. That logic was withdrawn. Then they pursued the warz sites. That worked. Also remember the "Norms" Bill Gate's letter to the gaming industry about not giving away software because that destroys the market.

Now we have the content creation market
World won't die if artist doesn't create tomorrow, yet they imply they will stop creating content if it's stolen.


Question
So I donate to the FSF and read slashdot and get outraged about SCO/MSFT and I don't have cable, etc etc. Talk to friends etc. BUT what else can we DO?

Answer
So how many people are like this fellow? Raise a hand. Well mmm what there are 15 people here. This is more than most groups. So it's a political discussion

Alas it's a tiny proportion of people who do as much as you do. Really really need more people to take action.

We are promoting a bill to say after 50 years you need to send in a buck to the copyright office to extend the copyright, 98% wouldn't send in a $, 2% would send in a $ and we'd know who owns the thing so people can ask for licensing {A major issue today}

Then we tried to find someone on the bill to back it, nope

Then got 40K signatures online, then well we have some support on the hill because signatures count. Now bill is making rounds. This seems a reasonable thing to get past, we'll see.

Now we can get 40K signatures online, we can do the same for other bills.

If we don't get involved now your children will be burden with the loss of rights that you people have enjoyed today.

------------------------------------

F-Script (Smalltalk dialect to provide script support to Obj-C on OS-X)

Cocoa
Obj-c is lightweight object-oriented extension of C
Lots of frameworks.
Smalltalk keyword syntax
Dynamically typed
Classes and meta-classes
etc.

{Explanation of the meta-class model}

F-Script
Unlike Smalltalk Cocoa is not itself an interactive environment. Instead it is based on C's compile-link-run model.
F-Script is an open-source interactive and scripting layer for Cocoa
F-Script uses Smalltalk's syntax and concepts but instead of using the common Smalltalk object model it uses the Cocoa version. Extends Smalltalk with a new higher level model for object-oriented programming. Oh and added array programming

Demo
F-Script launch gives you a command line
3+4
-> 7
2 foo
> an instance of Number does not understand foo
myBlock := [:a :b | a + b]
myBlock value: 2 value: 5
>7

So just like Smalltalk
2 class
>Number
2 superclass
>NSNumber {The abstract Obj-C superclass for numbers)

(NSBezierPath bezierPathWithOvalInRect: (400<>300 extent 200<>200)) stroke
draws a circle
myImage :=NSImage alloc initWithContentsOfFile: '/./././'
myImage inspect
>Gives a window to browse the image.

Examples to create a window using the framework
Then set the title, add controls.

myBlock inspect

opens an inspector on the block, then we can edit it.
Has code completion to flesh out method name
Currency converter
Note the conversion converter block is then passed to the button so that it gets executed on the button press.

This all typed into the command window. But really you want to have a browser. We're not a system to build big code programs with, rather to create little UI scripts.

But we have a simple browser
Ah, but we can click on results, say on [1+1] a block gives 2 which is a Number which response to Number methods and on we go

People really liked THIS!!!!
Also can have dialog to prompt for method values

Questions:
David Ungar
Asked about trying with a string...

Question
Loading Obj-c code into F-Script
You can load the class into F-Script. Or you can load F-Script into your code.
All the class are the OS-X ones and F-Script classes.
An example of creating an NSAlert via clicking in the browser and instantiating objects.

Has the ability to special click on control and get reference in browser to object. Then of course manipulate.

Example of saving a block to disk, then load and run it.
Frameworks support distributed objects so we can run two f-script instances
myblock ven: 'myBlock'
creates an NSConnection object to manipulate the connect
In the other instance we do
distantBlock := 'myBlock' connect

distantBlock is a proxy
for [:a :b | a+b]
distantBlock value: 2 value: 3
>5

{stuff I missed}

Now how to do F-script anywhere
Shows list of application, pick say text editor.
{Well a problem arises, it seems to be an issue with os-x 10.3 he loaded over the weekend}


F-ScriptPalette
To create the GUI, like the Cocoa GUI builder
Can embed an F-Script framework.
Provides scripting to the user.

Ah but off to Cocoa interface builder and we can introduce F-Script too

Question
Did you create your own Smalltalk classes?
No you program in Obj-C or Ruby or other things that can create frameworks

Building an application
Can I take a script and make it an app
Yes

Question about security in terminal
Yes you can run an F-Script from the terminal.

Next Demo

NeoSmalltalk

Pong game created as proof of concept.

Passes around the machine
four boards
main feature is a programmable chip
Language is NeoSmalltalk, built from hardware up, bottom up
Chip is FPGA, download a digital circuit. Build a micro-processor that does NeoSmalltalk bytecodes, some SDRAM 8MB. Some flash memory 512K 1/4 is used to store FPGA program.

Another small chip to copy code from RAM to FPGA then shuts off. This contains the bug that prevents the full demo because it's failing to work correctly today. Normally I download from
PC and that is a different pathway.
Originally was a terminal for truck drivers, had a LCD display and GPS input.
Cost point is $30 for the box, screen etc is more of course.
Market is Brazil, large population with low $. Want to include them, but price must be low.
Now they have public internet access areas which provide free services.
Idea is to make machine cheap enough for people to buy or schools to buy.
I'll note this prototype doesn't have network access, full machine would.

Idea was to match hardware with software versus taking a regular processor.
Can I get a better result by designing the hardware/software together.
Smalltalk is famous for exploratory software.
This makes it easier to build the bytecodes

50K gates in FPGA to implement a 32bit processor.
15K gates in an earlier version which did a 16bit processor
NeoSmalltalk could run on both. But for the $4 extra charge we decided to migrate to 50K solution.
The difference between the two designs:
Paper was based on 16bit design, small changes for 32bit design
16 bits, 1 bit for smallInteger or not. 32K objects
Not much at all, lots of laughter from the senior VM folks
4K for symbols
Really small. What could we do?

A class then had Bytecodes|Source as one object referral to methods then indexed into this information.

depending on Smallinteger flag we say it's either a message send or it's 3 5 bits of MISC code (See forth).

For message send you could send to the object on the top of the stack, or to the special SELF register.

Notes that object pointer, first bits are code vector location, other bits are method offset.
For programming that means you need to change all objects to point to right code vector when programming.This happens only during coding and remember machine is small.
Message send takes one clock cycle!

Seems a lot of memory to use, but Interesting enough 8MB is the smallest amount of ram I can buy today.

Lot's of laughter.
Ungar points out the fact about all the papers on selector colorization and vector table compaction write over the years for OOPSLA and how this is remarkable, all that work and now you can't a buy memory simm under 8MB!

Wanted to use an ARM but you don't have the same feeling. An ARM message send would be
a subroutine that would take many cycles. Instead of one clock cycle.

Interesting feature is the cache memory
You address as object->offset that maps to DRAM
Object table
object number -> 4 words
first 2 words give a pointer to rest of the object
next 2 words are the object so if it fits in 2 words then it's just in the object table.
{Discussion of cache miss issues, didn't catch}
Have speed of direct pointers because of object table. Indirection only happens rarely.
This lookup only happens when we have a cache miss.
for the 16bit 2K of cache.
unified instruction/data cache, so lots of pressure.
really was key design feature that led to own instruction set.

This computer would expose people to Smalltalk as their first language
Get them before they get exposed to Java or C++
Some will just use, some will program, some will want to understand hardware!
All will be on internet so someone could re-program the FGPA.

Self/R reflective Self, but I changed the name because it's Smalltalk.

So for the 5 bits
4 bits select a hardware object, 1 bit
16 hardware objects.

so like you say
ALU (arithmetic unit) add: 3 with: 4

So compile translates into 5 bits instructions

For the 32bit processor instructions are bytecodes
many of the earlier design decisions don't scale
Like the object table, not limited to 4K
31 bits, 1 bit for Object/SmallInteger
12 bits for selector/task, next for objects.
objects can be in same task, or different tasks.
4K tasks, each look like 16bit solution
in each task we have 4K object table. 4K stack.

So to add we do
_ + _
Don't have binary messages or keyword messages. Compatible with Smalltalk or Self
can mix and match.
if _ then _
yes that is valid too.

Most important part is the system binds with the hardware. The compiler is 1/2 page of code, say 30 lines of code.

Question
Development environment runs on platform?
Yes about a week away. Now I type in hex

Allen Wifs-Brock
Your task concept is very interesting.... Very novel computation model. Most intriguing part of space.
Yes in the new machine we'll have X processors and the tasks executed on each processor.
This is large project, started in 99.

Discussion about hardware
How that there is capacity left over and can make new hardware objects and reprogram the GPA for more specialized use.

{Lots of interesting talk after}

Smalltalk Talks Technical
Applying traits to Smalltalk
Andrew P Black
Nathanael Scharli, Stephane Ducasse

Traits
Using Traits to refactor
The Smalltalk Classes

The Smalltalk Collection Classes
Varieties of Collections, arrays, ordered collection etc.
The differences are in several dimensions, like Order, mutability, duplications, comparison, etc

{missed some of the notes on the slides}

Class methods take precedent over traits
Conflicts must be resolved explicitly, like ColoredCircle uses TCircle & TColor hash. Could
make class method hash which overrides both.
Override with glue method
Aliases provide access to the conflicting methods
Avoid the conflict, exclude one conflicting methods from the composition, say want to use TCircle>>hash
Use: TCircle + TColor(-#hash) "See the minus #hash to exclude"

Flattening Properties (Two views on code)
Structured View -> Flat view
these views are equivalent
Using Traits to Refactor the Collection Classes

Creating traits for the identified collection properties
Combine these traits to build the required collection classes
Iterative and "bottom up"
Refinement steps:
making the traits more fine-grained
Juggling with...

An example via Andrew Black
Bring up the Traits browser
create a Trait
go back to the collection example class
drag and drop into the newly created Trait
Browser shows that I need more methods, using color in the browser
Now at some point I can decide when the suggested methods aren't something I need

Lets create a new class
say in the class definition that it uses the two traits in question.
Oops forgot isEmpty (TEnum + TErrors + TEmptiness)

Ok there is the Trait, since it's abstract we are only missing the do:
Resulting class hierarchy consists of 3 parts.
What did we gain?
Consistent hierarchies, each one is sound
No abuse of inheritance
No methods are implemented "too high"
No missing methods
Less code!
about 10% less code, about 20% fewer methods.
Improved reusability, makes it easy to create new classes.
Say PluggableBag
Traits can be reused outside the collection.
Path gets Enumeration as an example.

Why Traits
Main reason: Flattening properties, although we have 22 traits we can still view and change these classes in the traditional way versus for mixing and multi-inheritance.

Mixins would mean 22 classes in a linear line.
Inheritance would mean 22 classes in a tree structure

Related work
Self (construct called traits), Eiffel (multiple inheritance), Anamorphic Smalltalk (sp?) (mixins)...

Conclusion
Flattening and sum operation worked great
Migration to traits is easy
no change in method/level syntax, Ordinary Smalltalk programmer can work with hierarchy
Find grained trait structures have no disadvantage
Refactoring with traits was fun, tools are important.

Questions
David Ungar
What can't I figure out about this simple idea? Are you overselling yourself?
I could do this in Self. Like unordered multiple inheritance. Is this another inheritance?

Andrew Black
No it's not another form of inheritance. We do something different than mixins, where you apply to a class and get a different class.

Question
Use of traits in overall software engineering process, looking at Java same problem.
So if you are starting from scratch when would you introduce traits?

Answer
You could use top-down or refactoring, both processes are usable.
No cost in trait, it's like using a protocol name. You could use, if not put back into a protocol.

Question
Traits how about for static languages?

Ah, next research project.
Polymorphic inference, lots of issues.

Rebecca?
Seems like a nice idea, how do you view those competing ways like aspect programming
So have you thought about traits and aspect programming?

Traits use basic composition to build up things.
Aspect oriented programming allows you change or refactor things at a later date.

Rebecca?
I think there is some overlap. I'll suggest another research project.

{You had to be there to realize the people asking questions are the fathers of computer science theory and were impressed with what they saw}

F-Script

Goal manipulating objects at a higher level, doing more with less code, simpler code.
Solution: integrating array programming into object-oriented programming

High Level OOP
most problems deal with arrays of objects
Most o-o languages deal with one object at a time
In relational algebra we do arrays
Goal to find way to do this in O-O

Given an airplane, a pilot, a flight. And lots of them
Print the names of all pilots who can fly a 747 to Paris.
Lots of Java code
Little bit of F-Script

{Another example I didn't catch}

Array Programming
Array languages, APL, Fortran 90, MatLab and others
Operations apply to the entire array X+Y -> Z
Set of special operations provides powerful means for data manipulation: reduction, transposition, join etc.


APL
add two arrays of numbers X+Y, same in F-Script

Java
well lots more work

Message Patterns
A new concept for the manipulation of objects
A message pattern allows for the specification and sending of complex groups of messages
message patterns extend traditional message sending
no performance loss

Message Patterns
Pilot name
Flight DepartureDate
Flight DepartureDate > NSDate now

More Patterns
Message Patterns allow for advanced iteration patterns
The explicit notation involves indicating iterations in the message expression itself
When the @ symbol is placed after the receiver and/or just before the arg, it means that a loop iterating on the elements of such a designated array is executed to send messages.

Array programming operations
compression, scan, transpose, reduction, extended indexing, sort, inner/outer products, join, set

Compression
Pilot at: {true,....} -> smaller array

Pilot at: Pilot salary > 3000
Pilot at: Pilot salary > 3000 & (Pilot age = 40)

Indexing by an Array of numbers
Pilot at: {0,2,5,7)

X := { 500, 2, -9, 1,3)
X sort
X is indexes that is sorted is returned, not the vector sorted, that needs

X at: X sorted

Pilot at: Pilot salary sort

OOPAL versus Traditional
Smalltalk
Pilot collect: [:aPilot | aPilot name]
F-Script
Pilot name

Getting names of pilots who's age is > 30
P name at: P age > 30

Conclusion
Array programming world is rich.

Questions
Performance?
Challenges, and options for performance
Same as standard array programming optimization, but at a higher level so you can do vector processing in the hardware.

Question
Query language versus the array programming?

Answer
OOPAL model generalizes it to objects.


{some talking, I was distracted}

David Ungar
I like this stuff. Mmm a new language feature, I missed this stuff from APL
In the spirit of Smalltalk do you want Array to be special?
{& some more}

Issue is you don't need to program your objects in a specific way to do the array stuff.

Guy Steele
"APL into Lisp"

Arrays are special because they have these special methods.
So what about making a Trait to support this

Yes you could work on this, another paper we are looking at doing.

David Ungar
Let's ask a nicer question.
Could you build a system with just traits not classes.
Instance variables don't go into traits.
Could lift that restriction but then you don't need inheritance.
Goal was that people think of single inheritance, so we moved to traits as a simple extension.

Question about JigSaw
Referral back to paper.
Traits came from a practical background, now we will look at more interesting things.

Question
Inheritance is too overloaded, structure, methods, etc... Perhaps we need different boundaries.

David U again
A story
Security by bit vectors in the new OS.
Now security was a problem more complexity would cause holes.
But they couldn't do anything else.
Do we need to make things more complicated, versus like traits making it more easier?

{Lots of discussion}

Onward to the Squeak BOF