Edit Rename Upload Download Back to Top

OOPSLA 2003 Trip report Tuesday

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

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.

Eric Winger supply: "Starts with 1839, Louis Degaurre (french guy) invented degaurratypes. Very expensive. Sold little. 1888 Eastman invents a cheaper camera. Inexpensive. He has slides on the right showing the question permission? "Does the photographer have the right to capture the image of the subject?" The courts said yes. That decision helped fuel the market for his camera. What if the courts decided the other way. We could invent a system to regulate these laws to regulate. The Deguerre Machine Control Act (much laughter) ."

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.

--The song is not by the Dixie Chicks. The Dixie Chicks reference was the grief they took when they said something anti-war. Dixie Chicks were the examples of why the writers of "Endless Love" would not allow permission to use--

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. 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. Was passed

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. Mm not quite correct here, see MIT Music

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!

Every "class" (code vector) has an entry for every symbol defined in the system. 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!

Used 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.
"Jecel Assumpcao Jr" add "in my Neo Smalltalk talk, the reason why the cache makes the object table almost as fast as direct pointers is because it is "virtually addressed" as in the Mushroom so that the object table is only used on cache misses instead of on every single memory access"

Have speed of direct pointers even with 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 object table and 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 FPGA for more specialized use.

See "project blog" for pictures, screen shots and more details.

{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 OOPSLA 2003 Trip report Squeak BOF


Edit Rename Upload Download Back to Top