Re: [Pharo-users] Standalone HTML Model

2017-09-17 Thread Sean P. DeNigris
NorbertHartl wrote
> There could be a lot of synergies here because web frameworks, pillar,
> PharoJS are all working close to something like that.

I first thought along these lines when using Amber. I was writing Bootstrap
support and saw that it was already available for Seaside and thought, darn
it feels like unnecessary fragmentation here because these are all common,
well-defined concepts!



-
Cheers,
Sean
--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html



Re: [Pharo-users] PlotMorph on Pharo 6.1

2017-09-17 Thread Mark Bestley
Thanks that last fix works for me

stephan  wrote:

> On 16-09-17 09:29, Stephane Ducasse wrote:
> > I'm on 10.12.6. too
> > I downloaded Pharo 32 using the link.
> > And I loaded from Catalog and I cannot get the problem.
> > May be there is a problem with a setting in the compiler.
> > I will talk to the guys monday.
> 
> Meta6, 7 and PlotMorph repos
> 
> Name: ConfigurationOfPlotMorph-StephanEggermont.6
> Author: StephanEggermont
> Time: 16 September 2017, 3:39:18.049684 pm
> UUID: 246e825f-b015-0d00-a8c8-7793003b8086
> Ancestors: ConfigurationOfPlotMorph-StephanEggermont.5
> 
> No longer assign to block parameters in Pharo 6 and 7
> 
> Name: PlotMorph-StephanEggermont.9
> Author: StephanEggermont
> Time: 16 September 2017, 3:26:48.762733 pm
> UUID: e138d932-b015-0d00-a8c9-885a003b8086
> Ancestors: PlotMorph-StephanEggermont.8
> 
> No longer assign to block parameters



-- 
Mark




Re: [Pharo-users] Continued Fractions

2017-09-17 Thread p...@highoctane.be
Ah, I see there is something in the Numerical Methods book. :rolleyes:

Phil

On Sun, Sep 17, 2017 at 8:30 PM, p...@highoctane.be 
wrote:

> Do we have anything related to continued fractions in Pharo?
>
> https://en.wikipedia.org/wiki/Continued_fraction
>
> I need that to match rectanges to aspect ratios etc.
>
> TIA
> Phil
>


[Pharo-users] Continued Fractions

2017-09-17 Thread p...@highoctane.be
Do we have anything related to continued fractions in Pharo?

https://en.wikipedia.org/wiki/Continued_fraction

I need that to match rectanges to aspect ratios etc.

TIA
Phil


Re: [Pharo-users] execute a code block at a given time in pharo ?

2017-09-17 Thread Ben Coman
On Sun, Sep 17, 2017 at 3:59 PM, Daniel BLANC  wrote:
> Thanks Stef, this app is just a quick hack

Quick hacks are still often interesting reading and useful starting
points for others.
I've often thought of doing something like this for my kids but never
got around to it.

> but I already can stop the wifi from my phone

I'm interested to know what you use for that also.

cheers -ben



Re: [Pharo-users] UFFI problem / doubt

2017-09-17 Thread Ben Coman
On Mon, Sep 18, 2017 at 12:01 AM, alvaro piorno
 wrote:
> Pierce: I already see the repo, i kwnow now the difference and is not the
> problem i have now. I made the suggestion for book draft i found, because
> theres is no example on it. Thanks for answer.
>
> Stephan : Yes, as Esteban said i´m using that, I´m extending (or trying)
> Esteban´s project. And i´m having the problem that esteban metioned. Thanks
> for answer.
>
> Ben: I have in C the same example as in Pharo using the physics of Chipmunk,
> and in C is working fine, there is a problem in the call to the function
> from Pharo in 64 bits. Thanks for answer.

Replicating the same example in C was not my point.
You'd said you'd already done that ;)

I meant compile your own shared C library containing...
cpBody* myBodyNew(cpFloat m, cpFloat i))
{
printf( "\n", m, i );
cpBodyNew(cpFloat m, cpFloat i);
}

and from Smalltalk use...
self ffiCall: #(cpBody* myBodyNew(cpFloat m, cpFloat i))

also changing your existing C example to also use  myBodyNew()
to confirm it works as expected.

cheers -ben

>
>
> 2017-09-17 12:11 GMT-03:00 Ben Coman :
>>
>>
>> On Fri, Sep 15, 2017 at 9:42 PM, alvaro piorno 
>> wrote:
>>>
>>> Hi everybody, i´m using UnifiedFFI with Chipmunk2D library .
>>> I want to get a pointer to a C Structure (cpBody) and set a position to
>>> it.
>>> I have a subClass of FFIOpaqueObject to handle pointer.
>>>
>>> This is the "new " ffiCall :
>>> self ffiCall: #(cpBody* cpBodyNew(cpFloat m, cpFloat i))
>>>
>>> And this is a "seter" ffiCall:
>>>
>>> self ffiCall: #( void cpBodySetPosition( self, cpVect vector ) ).
>>>
>>> I`m not getting any "error" but the position is not updating.
>>> I tried the same using Chipmunk directly and it works, so there is a
>>> problem with what i have in Pharo.
>>
>>
>> A general approach might be to write your own C wrapper around Chipmunk
>> library functions which
>> just does a debug printout of parameters before calling the wrapped
>> function.
>> Use these for both from Pharo and your "direct" trial, and see how they
>> compare.
>>
>> cheers -ben
>>
>



Re: [Pharo-users] Standalone HTML Model

2017-09-17 Thread Stephane Ducasse
Ok I will try to digest it :)
I do not remember how this is done in Pillar but this is a visitor and
it could call a streaming generator.

Stef


On Sun, Sep 17, 2017 at 2:10 PM, Norbert Hartl  wrote:
>
>
>> Am 17.09.2017 um 13:34 schrieb Stephane Ducasse :
>>
>> Norbert can you explain the difference between "a HTML model that can
>> be used for streaming, too, instead just the streaming."
>> because indeed in Pillar we have another HTML exporter and I would
>> like to reuse :)
>
> The difference is having a streaming API like seaside that uses brushes to 
> write a HTML tag with its attributes and uses blocks to nest tags.This 
> way at the end of the code you don't have a document model but a serialized 
> form of the DOM that depends on the canvas you use.
> The standalone HTML model would be a DOM on which you can work afterwards. 
> You can navigate, decorate etc. before serializing this the a html string. 
> For the PharoJS this would ease the development in the pharo image. For 
> pillar it would be a theoretical improvement to convert a pillar DOM to a 
> HTML DOM and this to a HTML string representation. But as long as the 
> benefits aren't clear the intermediate step for pillar likes a bit too much.
> But I have the strong feeling it would be good if there would be more 
> directions you can go. We have a good XML parser that produces a XML DOM. We 
> have pillar with its own DOM that can be converted to HTML. I don't know what 
> SOUP is producing. And we have web frameworks where people have different 
> ways producing for the web. I see potential in supporting multiple ways of 
> reading and writing HTML and making this experience much more powerful.
>
> Norbert
>>> On Sun, Sep 17, 2017 at 1:29 PM, Norbert Hartl  wrote:
>>>
>>>
> Am 17.09.2017 um 12:12 schrieb Pierce Ng :
>
> On Mon, Sep 11, 2017 at 06:25:55PM +0200, Stephane Ducasse wrote:
> Hi Pierce Ng
> How different is the API from Seaside?
> Because I would like to use it.
> I like to think modularly :)

 Hi Stef,

 I modeled it after Seaside's API. However, it was really just a start and 
 needs
 much more work. I created this when investigating writing web apps in Cuis,
 hence the perceived need for a standalone library. Eventually I ran out of 
 time
 and decided to stick to full Seaside loaded into Pharo.

>>> So you've built something like seaside canvas? I like to emphasize that 
>>> seaside is not really a standalone HTML model but (as the name says) a 
>>> canvas which streams markup.
>>> What we should explore is the possibility of having a HTML model that can 
>>> be used for streaming, too, instead just the streaming. There could be a 
>>> lot of synergies here because web frameworks, pillar, PharoJS are all 
>>> working close to something like that.
>>>
>>> my 2 cents,
>>>
>>> Norbert
>



Re: [Pharo-users] Pharo 7 license question

2017-09-17 Thread Ben Coman
On Sun, Sep 17, 2017 at 7:00 PM, stephan  wrote:
>
> On 17-09-17 06:59, Jimmie Houchin wrote:
>>
>> And the GPL not be viral in my app provided I only use the GPL library and 
>> am not modifying it in my app.
>>
>> Do I understand this wrong?
>
>
> Yes. With GPL everything is now GPL. With LGPL, as long as you only link to 
> it,
> the viral aspect is limited to the library. In Pharo, that means you can use 
> UFFI
> to connect to LGPL libraries, and you can probably create plugins. Loading
> smalltalk libraries that are LGPL is not exactly the same as linking, there is
> no clear boundary between compile-time and run-time, as everything is in the 
> image.
> That makes the LGPL difficult to interpret in the smalltalk case, and 
> potentially viral.

+1.


On Sun, Sep 17, 2017 at 6:09 PM, Hilaire  wrote:
> Regarding porting GPL software, I guess you mean rewriting with Smalltalk,
> you should be free to license it as you want, for example as MIT.
> AFAIK there is no evil restriction as "seen the code" under the GPL.

It is not as clean as that.  Many consider "seen the code" to
implicate "derived code".  Whether a court of law agrees with this or
not is not what you should consider.   The best advice I received from
a lawyer is that winning in court (sometimes after years of effort) is
still a loss, so you should position yourself so that no one even
thinks they can take you court.


> For library, alternative is LGPL and I read this interesting note:
> One should note that subclassing a Java (or other OO) class licensed under 
> the LGPL is regarded as a use of an interface of a library comparable to a 
> function call of a library. It is not regarded as a modification of the 
> original class. Therefore the subclass does not fall under the requirements 
> of the LGPL.

The definitive reference of Java + LGPL is
https://www.gnu.org/licenses/lgpl-java.en.html
which says: "The typical arrangement for Java is that each library an
application uses is distributed as a separate JAR (Java Archive) file.
Applications use Java's “import” functionality to access classes from
these libraries ... The LGPL permits this distribution ...
Applications need only follow the requirements in section 6 of the
LGPL"

but a Smalltalk Image runs foul of section 6 requiring... "A suitable
[shared library] mechanism ... that (1) uses at run time a copy of the
library already present on the user's computer system, rather than
copying library functions into the executable"  where an Image is
considered to be the "executable".

So incorporating LGPL Smalltalk code into an Image causes all code in
the Image to be infected with the LGPL.


> So using a LGPL library, even extending it, does not force the user to be in 
> the GPL family license.

Using LGPL C libraries is fine and doesn't infect your Smalltalk code.
Using LGPL Smalltalk libraries does infect all Smalltalk code in your
Image. The concern is contributing a bug fixed in Pharo code from an
infected image technically infects the  whole of Pharo - although you
are free to update a clean image with the same bug fix and contribute
from there - but thats an awkward process.


> The only restriction is the receiver should be capable to update
> the LGPL package independently of the application using the package.
> Anyway, I don't think you should worried about porting GPL/LGPL libraries as 
> long
> as your are rewriting it. You can license it under MIT. Then LGPL is also 
> possible.

The term "port" clearly implies "derived" so you cannot arbitrarily
re-license just by changing implementation languages. Otherwise for
example a GPL library could be relicensed by one team porting from C
to Python, then a second independent team ports from Python back to C
subverting the original copyright.


===
Hmmm... actually refreshing myself with the newer license texts just now
I notice GPL 3 has added some interesting definitions the GPL 2 lacks...

>  The “Corresponding Source” for a work ... does not include the work's System 
> Libraries
>
> The “System Libraries” of an executable work include anything, other than the 
> work as a whole, that
>  (a) is included in the normal form of packaging a Major Component,
> but which is not part of that Major Component, and
>  (b) serves only to enable use of the work with that Major Component, or to 
> implement a
> Standard Interface for which an implementation is available to the public 
> in source code form.
>
>   A “Major Component”, in this context, means a major essential component
>   (kernel, window system, and so on) of the specific operating system (if any)
>   on which the executable work runs, or a compiler used to produce the work,
>   or an object code interpreter used to run it.
>
> A “Standard Interface” means an interface that
> ... is widely used among developers working in that language.

which seems to open the door to a strong argument** that Pharo is such
a Major Component protected from even a full GPL3

Re: [Pharo-users] New chapter for coming book: Messages

2017-09-17 Thread Stephane Ducasse
For the Visitor chapter it is in preparation... (first I should finish
the lecture schedule and after do another pass on the first book ) it
will be an extension of the Expression chapter

On Sat, Sep 16, 2017 at 1:53 PM, H. Hirzel  wrote:
> Stephane
>
> Thank you for the reminder in the chapter that classes are cheap!
> If I have a class hierarchy with 300 classes  (for example builder
> classes) but they all implement just one method (#build) then that is
> not complex at all.
>
> Another thing:
>
> I assume you will have a chapter on visitors as well. Do you have an
> outline / draft for that?
>
> --Hannes
>
> On 9/11/17, Stephane Ducasse  wrote:
>> tx for the feedback!
>>
>>
>> On Mon, Sep 11, 2017 at 1:18 PM, H. Hirzel  wrote:
>>> Hello Stephane
>>>
>>> I like the emphasis of the chapter that implementing same selector
>>> several times at the proper place in a couple of classes is more
>>> important than to rely on inheritance.
>>>
>>> In particular the conclusion
>>>
>>> 
>>> What is important to realise is that classes are cheap. It is better
>>> to write 5 little classes than a huge one. Some (even smart) people
>>> got confused by measuring complexity of a system using number of
>>> classes. Having many classes representing good abstractions with a
>>> single responsibility is much much better than having a single class
>>> exhibiting multiple responsibilities.
>>> 
>>>
>>> Suggestion: put it into a 'Note' box.
>>>
>>>
>>>
>>>
>>>
>>> And replace
>>>
>>> 'got confused'
>>>
>>> with:
>>>
>>>'get confused'
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> Replace:
>>>
>>> Now the choices can be made over multiple tenth of classes.
>>>
>>> 'multiple tenth' is an uncommon expression
>>>
>>> Suggestion:
>>>  Now the choices can be made over dozens of classes.
>>>
>>>
>>>
>>>
>>>
>>>
>>> However
>>> 'Sending a message is making a choice!'
>>> takes the view point of the mechanism which does the late binding.
>>>
>>> If I write
>>>
>>>  aNode emitHTML: aStream
>>>
>>> I do not make the choice. There are different types of nodes and they
>>> all do the same in the sense that they produce HTML code.
>>>
>>> In any case to drive the point home more examples are needed.
>>>
>>> The Boolean example is the minimal example and as such is interesting.
>>> But it is a borderline case which just illustrates that Smalltalk goes
>>> a long way to implement the object and message pattern consistently.
>>>
>>> The Pillar example is fine but too terse.
>>> For people who already understand the issue just a reference is fine.
>>> But for people new to the concept of replacing a case statement with a
>>> class hierarchy it is too short.
>>>
>>> Elaborate!
>>>
>>>
>>> E.g. have a diagram for a subset of the hierarchy
>>>
>>> PRObject #(''properties'')
>>> PRDocumentItem #(''counter'')
>>> PRDocumentGroup #(''children'')
>>> PRDocument #()
>>> PRHeader #(''level'')
>>> PRList #()
>>> PROrderedList #()
>>> PRUnorderedList #()
>>> PRParagraph #()
>>> PRReference #(''reference''
>>> ''parameters'')
>>> PRFigure #()
>>> PRSlide #(''title'' ''label'')
>>> PRText #(''text'')'
>>>
>>> And show all the emitHTML: messages.
>>>
>>>
>>> And go for a third example, e.g. from Morphic or Bloc
>>>
>>>
>>> position:
>>> extent:
>>> color:
>>> owner:
>>> submorphs:
>>> drawOn: aCanvas
>>>
>>>
>>> Meaning of last sentence is not clear.
>>>
>>> 
>>> Remember that when we execute a method (and also write it), one key
>>> information we get is that the receiver from this class or one of its
>>> subclasses as we will later.
>>> 
>>>
>>>
>>> Regards
>>>
>>> Hannes
>>>
>>> On 9/11/17, Ricardo Pacheco  wrote:
 Looks Great, congratulations!! I just read it and has a couple of
 mistakes
 in the first figures. The return value of the false (2.3, 2.4).

 Regards
 Ricardo

 El sept. 11, 2017 12:12 AM, "Stephane Ducasse" 
 escribió:

 Hi

 after this crazy esug I took a long bus and I wrote one missing
 chapter for the forhtcoming bus.
 I plan to have a first full version for 1 of October :)

 I reorganised and massively clean the book contents.

 Comments are welcome in any form.

 Stef

 https://github.com/SquareBracketAssociates/LearningOOPWithPharo

>>>
>>
>>
>



Re: [Pharo-users] execute a code block at a given time in pharo ?

2017-09-17 Thread Stephane Ducasse
once you are done please share it.
You see I'm good in deep little details but I often lack other knowledge :)

On Sun, Sep 17, 2017 at 9:59 AM, Daniel BLANC  wrote:
> Thanks Stef, this app is just a quick hack but I already can stop the wifi
> from my phone and I feel like I have new negociations superpowers...
>
> Thanks Hernán ! That's a perfect fit :)
>
> On Thu, Sep 14, 2017 at 9:24 PM Hernán Morales Durand
>  wrote:
>>
>> http://www.smalltalkhub.com/#!/~TorstenBergmann/Scheduler
>>
>> Cheers,
>>
>> Hernán
>>
>> 2017-09-13 17:36 GMT-03:00 Daniel BLANC :
>> > Hi All,
>> >
>> > I'm a very beginner with smalltalk. I am building a small seaside app
>> > for
>> > controlling wifi access of my teenagers kids. In this app I need to
>> > start or
>> > stop the wifi acces at a given time.
>> > For the moment I'm doing it with an infinite loop in a process, with
>> > this
>> > code:
>> >
>> > WifiController >> startScheduler
>> > ^ SchedulerProcess
>> > ifNil: [ SchedulerProcess := [ [ true ]
>> > whileTrue: [ self schedulerApplyAutoStartStopRules.
>> > 56 seconds wait ] ] forkNamed: 'DanWifiManagerScheduler' ]
>> >
>> >
>> >  I'm wondering if there is a way to do this without this infinite loop ?
>> > May
>> > be there is a class in the standard pharo image that can execute a code
>> > block at a given time ?
>> >
>> > Thanks,
>> > Daniel
>>
>



Re: [Pharo-users] UFFI problem / doubt

2017-09-17 Thread Stephane Ducasse
Esteban and you remember you promise me to work on the documentation :)

On Sun, Sep 17, 2017 at 1:35 PM, Esteban Lorenzano  wrote:
> yes, he is using that.
> but he is porting it yo UFFI (it was NB) and to 64bits and to Chipmunk 7.0 
> (it was 6.1)
>
> So… in one of those places, is failing :(
>
> Esteban
>
>> On 17 Sep 2017, at 13:32, Stephane Ducasse  wrote:
>>
>> Look at http://smalltalkhub.com/#!/~estebanlm/Storm
>>
>> A small game engine.
>>
>> For being able to use this you will need:
>>
>> NB capable VM.
>> Athens.
>> Chipmunk library. You can download it at Chipmunk
>>
>> On Sun, Sep 17, 2017 at 1:31 PM, Stephane Ducasse
>>  wrote:
>>> Jean-Baptiste Arnaud extended the Chipmunk binding that esteban did a
>>> while ago and Damien Pollet did a tutorial
>>> at ESUG Annecy to show how to use FFI (nativeboost) to call chipmunk
>>> so it should be around.
>>>
>>> Stef
>>>
>>> On Sat, Sep 16, 2017 at 2:09 PM, alvaro piorno
>>>  wrote:
 Hi Stephan,
 Thanks for your answer, i found the booklet, but it was a draft, so it was
 incomplete. An example of FFIOpaqueObject would be healpful, i think.
 Esteban already talked to me, and is helping me with this.
 What do you mean with "Chipmunk existing bindings" ?.

 2017-09-16 4:42 GMT-03:00 Stephane Ducasse :
>
> Hi alvaro
>
> Thanks for the question. If you have any suggestion for the booklet on
> UFFI let us know.
> I will let esteban anwser because I do not know.
> BTW did you check the chipmunk existing bindings?
>
> Stef
>
> On Fri, Sep 15, 2017 at 3:42 PM, alvaro piorno
>  wrote:
>> Hi everybody, i´m using UnifiedFFI with Chipmunk2D library .
>> I want to get a pointer to a C Structure (cpBody) and set a position to
>> it.
>> I have a subClass of FFIOpaqueObject to handle pointer.
>>
>> This is the "new " ffiCall :
>>self ffiCall: #(cpBody* cpBodyNew(cpFloat m, cpFloat i))
>>
>> And this is a "seter" ffiCall:
>>
>>self ffiCall: #( void cpBodySetPosition( self, cpVect vector ) ).
>>
>> I`m not getting any "error" but the position is not updating.
>> I tried the same using Chipmunk directly and it works, so there is a
>> problem
>> with what i have in Pharo.
>> Any suggestion?
>> Thanks in advance.
>>
>> Alvaro Piorno
>

>>
>
>



[Pharo-users] Color text formatting in Transcript

2017-09-17 Thread Yuriy Babah
Hello!
Is there a simple way to apply color formatting to text in Transcript,
accessible for amateur?
Thank!


Re: [Pharo-users] UFFI problem / doubt

2017-09-17 Thread alvaro piorno
Pierce: I already see the repo, i kwnow now the difference and is not the
problem i have now. I made the suggestion for book draft i found, because
theres is no example on it. Thanks for answer.

Stephan : Yes, as Esteban said i´m using that, I´m extending (or trying)
Esteban´s project. And i´m having the problem that esteban metioned. Thanks
for answer.

Ben: I have in C the same example as in Pharo using the physics of
CHipmunk, and in C is working fine, there is a problem in the call to the
function from Pharo in 64 bits. Thanks for answer.


2017-09-17 12:11 GMT-03:00 Ben Coman :

>
> On Fri, Sep 15, 2017 at 9:42 PM, alvaro piorno 
> wrote:
>
>> Hi everybody, i´m using UnifiedFFI with Chipmunk2D library .
>> I want to get a pointer to a C Structure (cpBody) and set a position to
>> it.
>> I have a subClass of FFIOpaqueObject to handle pointer.
>>
>> This is the "new " ffiCall :
>> self ffiCall: #(cpBody* cpBodyNew(cpFloat m, cpFloat i))
>>
>> And this is a "seter" ffiCall:
>>
>> self ffiCall: #( void cpBodySetPosition( self, cpVect vector ) ).
>>
>> I`m not getting any "error" but the position is not updating.
>> I tried the same using Chipmunk directly and it works, so there is a
>> problem with what i have in Pharo.
>>
>
> A general approach might be to write your own C wrapper around Chipmunk
> library functions which
> just does a debug printout of parameters before calling the wrapped
> function.
> Use these for both from Pharo and your "direct" trial, and see how they
> compare.
>
> cheers -ben
>
>


Re: [Pharo-users] UFFI problem / doubt

2017-09-17 Thread Ben Coman
On Fri, Sep 15, 2017 at 9:42 PM, alvaro piorno 
wrote:

> Hi everybody, i´m using UnifiedFFI with Chipmunk2D library .
> I want to get a pointer to a C Structure (cpBody) and set a position to it.
> I have a subClass of FFIOpaqueObject to handle pointer.
>
> This is the "new " ffiCall :
> self ffiCall: #(cpBody* cpBodyNew(cpFloat m, cpFloat i))
>
> And this is a "seter" ffiCall:
>
> self ffiCall: #( void cpBodySetPosition( self, cpVect vector ) ).
>
> I`m not getting any "error" but the position is not updating.
> I tried the same using Chipmunk directly and it works, so there is a
> problem with what i have in Pharo.
>

A general approach might be to write your own C wrapper around Chipmunk
library functions which
just does a debug printout of parameters before calling the wrapped
function.
Use these for both from Pharo and your "direct" trial, and see how they
compare.

cheers -ben


Re: [Pharo-users] execute a code block at a given time in pharo ?

2017-09-17 Thread Sean P. DeNigris
Daniel BLANC wrote
> I feel like I have new negociations superpowers...

The magic of Smalltalk ha ha :)



-
Cheers,
Sean
--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html



[Pharo-users] Smalltalk gets a reference in fastcompany Kay interview

2017-09-17 Thread Tim Mackinnon
Interesting (although I found slightly rambling) interview with Alan Kay about 
personal computing. But Smalltalk does get a link.

https://medium.com/fast-company/the-father-of-mobile-computing-is-not-impressed-9ab25dfff0c

Tim

Sent from my iPhone

Re: [Pharo-users] Pharo 7 license question

2017-09-17 Thread Dimitris Chloupis
Mr lawyer here
I will give you general direction because in the end it depends in the
national law of the country of the person being sued.

The general idea is that GPL is a license to be avoided if you want real
freedom for your users. That means their ability to open or close code.

A license is in essense a contract that you accept when you click a button,
a link or other means that show clear consent. If the license is not
accepted through the means provided by law then it cannot apply. Also a
license is bound by law and national laws have special legislation of what
contracts can have as terms. Anything that may cause bodily harm for
example or negate the liability for such action are terms in the a contract
that are immediately become invalid and hence they dont apply without
necessarily make the whole contract invalid. Basically means that a license
by itself is powerless and can function only under the permissions of law.

A GPL license is thus a contract, but a GPL license as we all know it,
generally is used as a template. None forces anyone from making a GPL
license that allows the the user to close the code. FSF could sue for the
use of the name on the ground of misleading the user, but the license would
be still valid.

Matter complicate also on the matter of GPL "infection". One licences his
code under MIT but uses GPL licensed libraries, keeping his code open does
not violate GPL but if another user take the code and add his own code to
it and close it , including the GPL license he does violate the GPL license
but does he violate the law ?

My legal opinion on this is that he does not unless there was clear consent
by him on the matter of GPL license, which would require for him to know
that those libraries are used by the MIT code he is using and those
libraries are GPL. Taking into account how messy code bases can  be, good
luck with that.

Again this depends on case and national law , hence why we say always , go
speak with a lawyer of your juridiction , preferably someone who
specialises in contract law. NOT Copyright law. A license has little to do
with ownership , which is what copyright is, its merely a contract trying
to bind you to use the code only in specific ways. Violation of a license
is not a violation of copyright. Again under the exclusion of national
laws, national laws have each their own weirdnesses.

Also another advice, it does not matter if the license is called MIT, GPL,
BSD , BOOGIE , or BIGPINKELEPHANT , the bottom line is that licenses are
contracts and as such as soon as you accept them they are biding to the
extend the law allows them to be binding , as I mentioned earlier

Thus

When we venture into the commercial world and profit is involved, people
who will want a piece of that profit may emerge and use the license against
you. Thus do not accept any license even if it is certified MIT before
giving the text to a lawyer to read it and find any traps , hidden doors or
anything that can put you in a compromising position.

There are even cases when both parties have good intentions yet they
entangle in a legal battle because the license is too vague, confusing or
it does not specify a special case that may apply.

Contracts can be extremely complex entities, even though I am not a
copyright lawyer , I do general practice and martitime law, that Greek Law
and European Law by the way, I know how hairy things can get , especially
with big contracts. I also have a single experience with Copyright of the
code , between an individual and the company and it was very very messy for
both parties. Unfortunately judges still do not understand computers and I
can tell you that also apples to other European countries and the USA
because I have a master degreen on commercial and e-commerce from a UK
uinversity with a disertation "Legal protections against malicious
software". I examined UK, Eurpean and International law for this
dissertation and what I have seen has severely disappointed me how law
professionals, not just judges are so clueless when it comes to technology
and yet are expected to provide fair protection and judgements.

Summary : If you plan to make profit, go talk with your lawyer. If you
intend to make a company a lawyer and an accountant is a MUST HAVE and wil
save you tons of money than they will cost you. Also never wait for the
last second to seek legal advise , in law everything is under a time limit,
you dont want to be late. Trust me ;)


On Sun, Sep 17, 2017 at 8:01 AM Jimmie Houchin  wrote:

> I understand that Pharo people will in general want to stay away from
> the GPL. I just didn't know if it would potentially be more equivalent
> to how other languages work.
>
> In Python to my understanding I could do something like
>
> #into my MIT licensed app
> import GPL_library
> import MIT_library
>
> And the GPL not be viral in my app provided I only use the GPL library
> and am not modifying it in my app.
>
> Do I understand this wrong?
>
> I ha

Re: [Pharo-users] Standalone HTML Model

2017-09-17 Thread Norbert Hartl


> Am 17.09.2017 um 13:34 schrieb Stephane Ducasse :
> 
> Norbert can you explain the difference between "a HTML model that can
> be used for streaming, too, instead just the streaming."
> because indeed in Pillar we have another HTML exporter and I would
> like to reuse :)

The difference is having a streaming API like seaside that uses brushes to 
write a HTML tag with its attributes and uses blocks to nest tags.This way 
at the end of the code you don't have a document model but a serialized form of 
the DOM that depends on the canvas you use.
The standalone HTML model would be a DOM on which you can work afterwards. You 
can navigate, decorate etc. before serializing this the a html string. For the 
PharoJS this would ease the development in the pharo image. For pillar it would 
be a theoretical improvement to convert a pillar DOM to a HTML DOM and this to 
a HTML string representation. But as long as the benefits aren't clear the 
intermediate step for pillar likes a bit too much. 
But I have the strong feeling it would be good if there would be more 
directions you can go. We have a good XML parser that produces a XML DOM. We 
have pillar with its own DOM that can be converted to HTML. I don't know what 
SOUP is producing. And we have web frameworks where people have different ways 
producing for the web. I see potential in supporting multiple ways of reading 
and writing HTML and making this experience much more powerful.

Norbert
>> On Sun, Sep 17, 2017 at 1:29 PM, Norbert Hartl  wrote:
>> 
>> 
 Am 17.09.2017 um 12:12 schrieb Pierce Ng :
 
 On Mon, Sep 11, 2017 at 06:25:55PM +0200, Stephane Ducasse wrote:
 Hi Pierce Ng
 How different is the API from Seaside?
 Because I would like to use it.
 I like to think modularly :)
>>> 
>>> Hi Stef,
>>> 
>>> I modeled it after Seaside's API. However, it was really just a start and 
>>> needs
>>> much more work. I created this when investigating writing web apps in Cuis,
>>> hence the perceived need for a standalone library. Eventually I ran out of 
>>> time
>>> and decided to stick to full Seaside loaded into Pharo.
>>> 
>> So you've built something like seaside canvas? I like to emphasize that 
>> seaside is not really a standalone HTML model but (as the name says) a 
>> canvas which streams markup.
>> What we should explore is the possibility of having a HTML model that can be 
>> used for streaming, too, instead just the streaming. There could be a lot of 
>> synergies here because web frameworks, pillar, PharoJS are all working close 
>> to something like that.
>> 
>> my 2 cents,
>> 
>> Norbert



Re: [Pharo-users] UFFI problem / doubt

2017-09-17 Thread Esteban Lorenzano
yes, he is using that.
but he is porting it yo UFFI (it was NB) and to 64bits and to Chipmunk 7.0 (it 
was 6.1)

So… in one of those places, is failing :( 

Esteban

> On 17 Sep 2017, at 13:32, Stephane Ducasse  wrote:
> 
> Look at http://smalltalkhub.com/#!/~estebanlm/Storm
> 
> A small game engine.
> 
> For being able to use this you will need:
> 
> NB capable VM.
> Athens.
> Chipmunk library. You can download it at Chipmunk
> 
> On Sun, Sep 17, 2017 at 1:31 PM, Stephane Ducasse
>  wrote:
>> Jean-Baptiste Arnaud extended the Chipmunk binding that esteban did a
>> while ago and Damien Pollet did a tutorial
>> at ESUG Annecy to show how to use FFI (nativeboost) to call chipmunk
>> so it should be around.
>> 
>> Stef
>> 
>> On Sat, Sep 16, 2017 at 2:09 PM, alvaro piorno
>>  wrote:
>>> Hi Stephan,
>>> Thanks for your answer, i found the booklet, but it was a draft, so it was
>>> incomplete. An example of FFIOpaqueObject would be healpful, i think.
>>> Esteban already talked to me, and is helping me with this.
>>> What do you mean with "Chipmunk existing bindings" ?.
>>> 
>>> 2017-09-16 4:42 GMT-03:00 Stephane Ducasse :
 
 Hi alvaro
 
 Thanks for the question. If you have any suggestion for the booklet on
 UFFI let us know.
 I will let esteban anwser because I do not know.
 BTW did you check the chipmunk existing bindings?
 
 Stef
 
 On Fri, Sep 15, 2017 at 3:42 PM, alvaro piorno
  wrote:
> Hi everybody, i´m using UnifiedFFI with Chipmunk2D library .
> I want to get a pointer to a C Structure (cpBody) and set a position to
> it.
> I have a subClass of FFIOpaqueObject to handle pointer.
> 
> This is the "new " ffiCall :
>self ffiCall: #(cpBody* cpBodyNew(cpFloat m, cpFloat i))
> 
> And this is a "seter" ffiCall:
> 
>self ffiCall: #( void cpBodySetPosition( self, cpVect vector ) ).
> 
> I`m not getting any "error" but the position is not updating.
> I tried the same using Chipmunk directly and it works, so there is a
> problem
> with what i have in Pharo.
> Any suggestion?
> Thanks in advance.
> 
> Alvaro Piorno
 
>>> 
> 




Re: [Pharo-users] Standalone HTML Model

2017-09-17 Thread Stephane Ducasse
Norbert can you explain the difference between "a HTML model that can
be used for streaming, too, instead just the streaming."
because indeed in Pillar we have another HTML exporter and I would
like to reuse :)

On Sun, Sep 17, 2017 at 1:29 PM, Norbert Hartl  wrote:
>
>
>> Am 17.09.2017 um 12:12 schrieb Pierce Ng :
>>
>>> On Mon, Sep 11, 2017 at 06:25:55PM +0200, Stephane Ducasse wrote:
>>> Hi Pierce Ng
>>> How different is the API from Seaside?
>>> Because I would like to use it.
>>> I like to think modularly :)
>>
>> Hi Stef,
>>
>> I modeled it after Seaside's API. However, it was really just a start and 
>> needs
>> much more work. I created this when investigating writing web apps in Cuis,
>> hence the perceived need for a standalone library. Eventually I ran out of 
>> time
>> and decided to stick to full Seaside loaded into Pharo.
>>
> So you've built something like seaside canvas? I like to emphasize that 
> seaside is not really a standalone HTML model but (as the name says) a canvas 
> which streams markup.
> What we should explore is the possibility of having a HTML model that can be 
> used for streaming, too, instead just the streaming. There could be a lot of 
> synergies here because web frameworks, pillar, PharoJS are all working close 
> to something like that.
>
> my 2 cents,
>
> Norbert



Re: [Pharo-users] UFFI problem / doubt

2017-09-17 Thread Stephane Ducasse
Look at http://smalltalkhub.com/#!/~estebanlm/Storm

A small game engine.

For being able to use this you will need:

NB capable VM.
Athens.
Chipmunk library. You can download it at Chipmunk

On Sun, Sep 17, 2017 at 1:31 PM, Stephane Ducasse
 wrote:
> Jean-Baptiste Arnaud extended the Chipmunk binding that esteban did a
> while ago and Damien Pollet did a tutorial
> at ESUG Annecy to show how to use FFI (nativeboost) to call chipmunk
> so it should be around.
>
> Stef
>
> On Sat, Sep 16, 2017 at 2:09 PM, alvaro piorno
>  wrote:
>> Hi Stephan,
>> Thanks for your answer, i found the booklet, but it was a draft, so it was
>> incomplete. An example of FFIOpaqueObject would be healpful, i think.
>> Esteban already talked to me, and is helping me with this.
>> What do you mean with "Chipmunk existing bindings" ?.
>>
>> 2017-09-16 4:42 GMT-03:00 Stephane Ducasse :
>>>
>>> Hi alvaro
>>>
>>> Thanks for the question. If you have any suggestion for the booklet on
>>> UFFI let us know.
>>> I will let esteban anwser because I do not know.
>>> BTW did you check the chipmunk existing bindings?
>>>
>>> Stef
>>>
>>> On Fri, Sep 15, 2017 at 3:42 PM, alvaro piorno
>>>  wrote:
>>> > Hi everybody, i´m using UnifiedFFI with Chipmunk2D library .
>>> > I want to get a pointer to a C Structure (cpBody) and set a position to
>>> > it.
>>> > I have a subClass of FFIOpaqueObject to handle pointer.
>>> >
>>> > This is the "new " ffiCall :
>>> > self ffiCall: #(cpBody* cpBodyNew(cpFloat m, cpFloat i))
>>> >
>>> > And this is a "seter" ffiCall:
>>> >
>>> > self ffiCall: #( void cpBodySetPosition( self, cpVect vector ) ).
>>> >
>>> > I`m not getting any "error" but the position is not updating.
>>> > I tried the same using Chipmunk directly and it works, so there is a
>>> > problem
>>> > with what i have in Pharo.
>>> > Any suggestion?
>>> > Thanks in advance.
>>> >
>>> > Alvaro Piorno
>>>
>>



Re: [Pharo-users] UFFI problem / doubt

2017-09-17 Thread Stephane Ducasse
Jean-Baptiste Arnaud extended the Chipmunk binding that esteban did a
while ago and Damien Pollet did a tutorial
at ESUG Annecy to show how to use FFI (nativeboost) to call chipmunk
so it should be around.

Stef

On Sat, Sep 16, 2017 at 2:09 PM, alvaro piorno
 wrote:
> Hi Stephan,
> Thanks for your answer, i found the booklet, but it was a draft, so it was
> incomplete. An example of FFIOpaqueObject would be healpful, i think.
> Esteban already talked to me, and is helping me with this.
> What do you mean with "Chipmunk existing bindings" ?.
>
> 2017-09-16 4:42 GMT-03:00 Stephane Ducasse :
>>
>> Hi alvaro
>>
>> Thanks for the question. If you have any suggestion for the booklet on
>> UFFI let us know.
>> I will let esteban anwser because I do not know.
>> BTW did you check the chipmunk existing bindings?
>>
>> Stef
>>
>> On Fri, Sep 15, 2017 at 3:42 PM, alvaro piorno
>>  wrote:
>> > Hi everybody, i´m using UnifiedFFI with Chipmunk2D library .
>> > I want to get a pointer to a C Structure (cpBody) and set a position to
>> > it.
>> > I have a subClass of FFIOpaqueObject to handle pointer.
>> >
>> > This is the "new " ffiCall :
>> > self ffiCall: #(cpBody* cpBodyNew(cpFloat m, cpFloat i))
>> >
>> > And this is a "seter" ffiCall:
>> >
>> > self ffiCall: #( void cpBodySetPosition( self, cpVect vector ) ).
>> >
>> > I`m not getting any "error" but the position is not updating.
>> > I tried the same using Chipmunk directly and it works, so there is a
>> > problem
>> > with what i have in Pharo.
>> > Any suggestion?
>> > Thanks in advance.
>> >
>> > Alvaro Piorno
>>
>



Re: [Pharo-users] Standalone HTML Model

2017-09-17 Thread Norbert Hartl


> Am 17.09.2017 um 12:12 schrieb Pierce Ng :
> 
>> On Mon, Sep 11, 2017 at 06:25:55PM +0200, Stephane Ducasse wrote:
>> Hi Pierce Ng
>> How different is the API from Seaside?
>> Because I would like to use it.
>> I like to think modularly :)
> 
> Hi Stef,
> 
> I modeled it after Seaside's API. However, it was really just a start and 
> needs
> much more work. I created this when investigating writing web apps in Cuis,
> hence the perceived need for a standalone library. Eventually I ran out of 
> time
> and decided to stick to full Seaside loaded into Pharo.
> 
So you've built something like seaside canvas? I like to emphasize that seaside 
is not really a standalone HTML model but (as the name says) a canvas which 
streams markup. 
What we should explore is the possibility of having a HTML model that can be 
used for streaming, too, instead just the streaming. There could be a lot of 
synergies here because web frameworks, pillar, PharoJS are all working close to 
something like that.

my 2 cents,

Norbert


Re: [Pharo-users] Pharo 7 license question

2017-09-17 Thread stephan

On 17-09-17 06:59, Jimmie Houchin wrote:
And the GPL not be viral in my app provided I only use the GPL library 
and am not modifying it in my app.


Do I understand this wrong?


Yes. With GPL everything is now GPL. With LGPL, as long as you only link 
to it, the viral aspect is limited to the library. In Pharo, that means 
you can use UFFI to connect to LGPL libraries, and you can probably 
create plugins. Loading smalltalk libraries that are LGPL is not exactly 
the same as linking, there is no clear boundary between compile-time and 
run-time, as everything is in the image. That makes the LGPL difficult 
to interpret in the smalltalk case, and potentially viral.


Stephan




Re: [Pharo-users] Pharo 7 license question

2017-09-17 Thread stephan

On 17-09-17 12:09, Hilaire wrote:

For library, alternative is LGPL and I read this interesting note:

One should note that subclassing a Java (or other OO) class licensed
under the LGPL is regarded as a use of an interface of a library
comparable to a function call of a library. It is not regarded as a
modification of the original class. Therefore the subclass does not
fall under the requirements of the LGPL.

So using a LGPL library, even extending it, does not force the user to 
be in the GPL family license.


Loading an LGPL library in a smalltalk image is not linking, in the 
strict interpretation. So no. FSF is aware of this problem


Stephan




Re: [Pharo-users] UFFI problem / doubt

2017-09-17 Thread Pierce Ng
On Sat, Sep 16, 2017 at 09:09:23AM -0300, alvaro piorno wrote:
> incomplete. An example of FFIOpaqueObject would be healpful, i think.

Hi Alvaro,

I mentioned libffidemo on Discord. Reading the blog post and the library's unit
tests will hopefully make clearer how to use FFIOpaqueObject.

  http://www.samadhiweb.com/blog/2016.03.17.demoffi.html
  https://github.com/PierceNg/libffidemo

Pierce




Re: [Pharo-users] Pharo 7 license question

2017-09-17 Thread Pierce Ng
On Sun, Sep 17, 2017 at 02:47:16AM +0200, stephan wrote:
> On 16-09-17 18:51, Peter Uhnák wrote:
> >  This is the reason why LGPL exists. LGPL is not contagious.
> 
> It is not clear that that would be the case with smalltalk.
> We tend to reuse by subclassing, and linking is not so
> well-defined. There is no license that has the same effect as
> LGPL has for c programs for smalltalk.

The Common Lisp people have LLGPL:

  http://www.cliki.net/LLGPL
  http://opensource.franz.com/preamble.html

Pierce




Re: [Pharo-users] Standalone HTML Model

2017-09-17 Thread Pierce Ng
On Mon, Sep 11, 2017 at 10:14:54AM -0300, Esteban A. Maringolo wrote:
> I don't know how modular it is, but maybe loading only the 'Seaside-Canvas'
> package you can use the WAHtmlCanvas to create the HTML content.

I also experimented with loading enough of Seaside in bits and pieces to get
the canvas thing working. Was not successful back then.

Pierce



Re: [Pharo-users] Standalone HTML Model

2017-09-17 Thread Pierce Ng
On Mon, Sep 11, 2017 at 06:25:55PM +0200, Stephane Ducasse wrote:
> Hi Pierce Ng
> How different is the API from Seaside?
> Because I would like to use it.
> I like to think modularly :)

Hi Stef,

I modeled it after Seaside's API. However, it was really just a start and needs
much more work. I created this when investigating writing web apps in Cuis,
hence the perceived need for a standalone library. Eventually I ran out of time
and decided to stick to full Seaside loaded into Pharo.

Pierce




Re: [Pharo-users] Pharo 7 license question

2017-09-17 Thread Hilaire

Hi Jimmie,

Dr. Geo is distributed under the GPL and shipped with Pharo.

As Pharo is MIT, you can redistribute your whole software under the 
license you want, proprietary or free software ones as GPL.


Regarding porting GPL software, I guess you mean rewriting with 
Smalltalk, you should be free to license it as you want, for example as 
MIT. AFAIK there is no evil restriction as "seen the code" under the GPL.


For library, alternative is LGPL and I read this interesting note:

   One should note that subclassing a Java (or other OO) class licensed
   under the LGPL is regarded as a use of an interface of a library
   comparable to a function call of a library. It is not regarded as a
   modification of the original class. Therefore the subclass does not
   fall under the requirements of the LGPL.

So using a LGPL library, even extending it, does not force the user to 
be in the GPL family license.


The only restriction is the receiver should be capable to update the 
LGPL package independently of the application using the package.


Anyway, I don't think you should worried about porting GPL/LGPL 
libraries as long as your are rewriting it. You can license it under 
MIT. Then LGPL is also possible.



--
Dr. Geo
http://drgeo.eu



Re: [Pharo-users] (no subject)

2017-09-17 Thread stephan

On 17-09-17 05:21, Sean P. DeNigris wrote:

Was this issue [1] fixed:

I think I found it. It seems to be a bug in the way Launcher/Pharo unzips
the downloaded VM.
The symlink libgit2.dylib becomes unlinked and appears as just a regular
file. If I delete the
Pharo.app and unzip 70.zip (which btw maybe should have been deleted
during cleanup after
the dl) to ./vms/70, the error disappears!


[1] From
http://forum.world.st/Launcher-Error-w-Pharo-7-tt4959777.html#a4960417


That sounds like the problem I encountered

Stephan




Re: [Pharo-users] (no subject)

2017-09-17 Thread stephan

On 14-09-17 22:52, Christophe Demarey wrote:

For Pharo 7 images, no sources file are dowloaded since they come with the 
image.


They are not installed

Stephan




Re: [Pharo-users] execute a code block at a given time in pharo ?

2017-09-17 Thread Daniel BLANC
Thanks Stef, this app is just a quick hack but I already can stop the wifi
from my phone and I feel like I have new negociations superpowers...

Thanks Hernán ! That's a perfect fit :)

On Thu, Sep 14, 2017 at 9:24 PM Hernán Morales Durand <
hernan.mora...@gmail.com> wrote:

> http://www.smalltalkhub.com/#!/~TorstenBergmann/Scheduler
>
> Cheers,
>
> Hernán
>
> 2017-09-13 17:36 GMT-03:00 Daniel BLANC :
> > Hi All,
> >
> > I'm a very beginner with smalltalk. I am building a small seaside app for
> > controlling wifi access of my teenagers kids. In this app I need to
> start or
> > stop the wifi acces at a given time.
> > For the moment I'm doing it with an infinite loop in a process, with this
> > code:
> >
> > WifiController >> startScheduler
> > ^ SchedulerProcess
> > ifNil: [ SchedulerProcess := [ [ true ]
> > whileTrue: [ self schedulerApplyAutoStartStopRules.
> > 56 seconds wait ] ] forkNamed: 'DanWifiManagerScheduler' ]
> >
> >
> >  I'm wondering if there is a way to do this without this infinite loop ?
> May
> > be there is a class in the standard pharo image that can execute a code
> > block at a given time ?
> >
> > Thanks,
> > Daniel
>
>