[Pharo-dev] Questions about Athens

Igor Stasenko siguctua at gmail.com
Thu Oct 31 18:16:51 EDT 2013


On 31 October 2013 22:39, kilon alios <kilon.alios at gmail.com> wrote:

> thanks Igor for the very thorough answer. I took a look at AthensViewScene
> , I see initializeForNewSession , Smalltalk session and the other state
> methods, it starts to make sense now.
>
> I will get the tutorial and together with Roassal I should be able to make
> a lot more progress.
>
> Feel free to ask any question you need to be answered.


> About OpenGL , no I did not give up too easily. I have been told that
> OpenGL is complex for a good reason but now I know more about it I just
> know its the typical C/C++ library, badly designed to the bone. Its a huge
> pile of mess and the very fact that my macos drivers of my gpu does ( a
> typical behavior for macos gpu drivers) not report detailed errors it makes
> it a No Go area for me. Documentation is also a in a very bad state ,
> definitely does not make life easier. My idea was to follow your advise
> implement OpenVg and then use that as a backend for Athens. But alas at
> this point I hear OpenGL and just run :D
>
> The main problem however was that even if I could use OpenGL I would have
> to learn also a lot of math to do the OpenVG implementation, So yeah not my
> cup of tea. I did not expect it to work, I just wanted to learn Nativeboost
> and NBOpenGL was a good chance to do that. So I realize that the whole deal
> just was way over my level of skill as a coder. I wanted something a lot
> simpler.
>
>
I cannot say, of course, how it would be for you, but there is ShivaVG[1]
open-source
opengl implementation of OpenVG, more or less feature-complete,
so all what is needed is to port this code from C to smalltalk.
Or if not for porting, but using as a source of insights how to implement
it.
I think it is fairly doable.


[1] https://github.com/ileben/ShivaVG

I cant justify wasting months to draw a single curve in the shake of GPU
> acceleration.
>
> Fortunately with Athens I am already able to draw curves, lines, boxes and
> circles, For me thats a very good start. I dont need 3d graphics at this
> point, but I may at the distant future. When that time comes then I will
> consider moving back to NBOpenGL, but not before that. Again thank you all
>  for your help I will keep you posted on my progress.
>
>
I want to have Athens at one day harnessing GPU power.
I want such things for myself. :) But right now i have other things to do..
(and i want many other things aside of this ;)



>
> On Thu, Oct 31, 2013 at 9:53 PM, Igor Stasenko <siguctua at gmail.com> wrote:
>
>>
>>
>>
>> On 31 October 2013 20:01, kilon alios <kilon.alios at gmail.com> wrote:
>>
>>> Thank you Alexander and Stephane , I did not know that Roassal use
>>> Athens. This certainly will be helpful for me.
>>>
>>> Stephane, about NBOpenGL , my problem was opengl itself not NBOpenGL , I
>>> learned a lot of things true and yeah I did not know Roassal is using
>>> NBOpenGL but even if I did as you said opengl is not what I really needed.
>>> At the time I did not realize the effort to do vector graphics with opengl
>>> and the whole difficulty of learning the API, now I know I need something
>>> way more high level for my needs.
>>>
>>> About Athens tutorial, I dont know such thing, the only thing I know is
>>> AthensDemoMorph and the Athens-Examples Package and a video presentation
>>> that Igor posted way back in vimeo. So no I dont know of such tutorial.
>>>
>>>
>> MCSmalltalkhubRepository
>>     owner: 'Pharo'
>>     project: 'Athens'
>>     user: ''
>>     password: ''
>>
>> Load Athens-Tutorial package
>> Run:
>> AthensTutorial open
>>
>>  Wow the guy took 62 K euros and left ? Sorry to hear that :( cant
>>> believe how people do such things .
>>>
>>> no, he didn't. It was a budget allocated for him if he would stay and
>> work with us.
>>
>>
>>>
>>> On Thu, Oct 31, 2013 at 7:49 PM, Stéphane Ducasse <
>>> stephane.ducasse at inria.fr> wrote:
>>>
>>>> Hi
>>>>
>>>> I created a new subject
>>>>
>>>> About the problem to recreate it all it takes is a demo
>>>> := AthensDemoMorph new openInWorld . It opens the morph with the Athens
>>>> grey box, I save the image , close pharo, open pharo which reloads the
>>>> image automagically and BOOM Red Box of Doom :) My other tries also are
>>>> based on AthensDemoMorph since I cant find documentation to do things
>>>> differently.
>>>>
>>>> So lets get to the questions
>>>>
>>>> 1) You say you have morphs using Athens that don't have this problem,
>>>> care to explain further ?
>>>>
>>>>
>>>> Did you see the tutorial?
>>>>
>>>> 2) How do I recreate automatically those surfaces ?
>>>>
>>>> 3) Do I need to instruct the image on load to reinitialize those
>>>> objects ?
>>>>
>>>> 4) If yes How I do that ?
>>>>
>>>> You say its a major problem but yet its not an Athens bug.  I know this
>>>> is has to do with how image saves live objects and that NB calls are not
>>>> part of the image hence creating the problem.
>>>>
>>>> 5) Are there ways to avoid the problem ?
>>>>
>>>> 6) Also why there is a Red Box of Doom in the first place ?
>>>>
>>>>
>>>>
>>>> 7) Why the debugger is not triggered as it should be ?
>>>>
>>>>
>>>> It is now you should bring the halos and click on debug draw something
>>>> error
>>>>
>>>>
>>>> 8) Is that critical a failure of Morphic ?
>>>>
>>>> 9) Why Athens even though is based largely on Cairo , and taking into
>>>> consideration the intention to extend to other graphical interfaces, not
>>>> following the Cairo design more closely so we can use the Cairo tutorials ?
>>>>
>>>>
>>>> Because Athens is not Cairo. Athens is an API so that we can have
>>>> multiple graphical back-ends in the future.
>>>>
>>>>
>>>>  10) Is the Cairo design so prohibiting / limiting for Athens ? Does
>>>> Cairo do things so differently than other vector based libraries ?
>>>>
>>>>
>>>> Cairo does not have an OO design from what I know.
>>>>
>>>>
>>>> 11) How important is Athens to Pharo community , meaning further bug
>>>> fixes, improvements , tutorials etc ? I hear there is an intention to
>>>> gradual move Morphic to it. Is this true ?
>>>>
>>>>
>>>> Athens is the new canvas and we will rewrite everything to use it. Now
>>>> Athens will have a default version that is just the default balloon.
>>>> Now the guy that should have helped us (fernando) left in hurry and we
>>>> lost the money 62 K Euros of his salary.
>>>> Igor has been working more than a year in total on Athens, textEditor
>>>> and others so we will not give up now.
>>>>
>>>>
>>>> I really like Athens, I am asking all these questions because I need to
>>>> make a fast decision whether I will continue to use Pharo or not for my
>>>> project. Learning OpenGL and using NBOpenGL produced zero results for me.
>>>>
>>>>
>>>> Did you check Roassal 3d because they forgot to publish the
>>>> enhancements they did to NBOpenGL
>>>>
>>>>  I was not even able to create a single triangle.
>>>>
>>>>
>>>> You should look at Roassal 3d because this is working.
>>>>
>>>>  My gpu driver because of Macos gave me close to zero errors, and Red
>>>> Box of Doom made it impossible to debug opengl problems. In short close to
>>>> zero error reporting made it a no go for me.
>>>>
>>>> So I fall back at much simpler solutions because I want to create my
>>>> own GUI API. I see several solutions for this
>>>>
>>>> 1) Pharo Athens
>>>> 2) Amber SVG / WebGL based Vector libs like Pixi /  Athens / HTML5 + CSS
>>>> 3) Python + PyQT + QT
>>>>
>>>> I rather stay with Pharo. But I already wasted months of doing nothing
>>>> and going nowhere with NBOpenGL , I am tried of moving in circles.
>>>>
>>>>
>>>> I'm sure you learned probably a lot.
>>>> Now for a GUI API may be openGL is not the best to start. What I can
>>>> tell you is that with Athens we will be able to have the first
>>>> mix between 3D and 2D vector graphics.
>>>>
>>>> I am not frustrated cause I knew when I tried that OpenGL was very hard
>>>> ( I was warned by several opengl people ) so failure was always an option ,
>>>> but I can no longer justify wasting my time getting nowhere.
>>>>
>>>> I dont need much from a graphic lib all I need is
>>>>
>>>> a) Stability . If it crashes regularly its no good
>>>>
>>>> b) Speed, if moving graphic elements around slows down (anything above
>>>> 20%)  dual cores , its no good
>>>>
>>>> c) Basic Feature set  like , lines, curves , circles and ellipses ,
>>>> display of raster graphics, simple animations , import export of graphic
>>>> formats, png , jpg and svg is enough.
>>>>
>>>>  Looks like Athens satisfies b and c , I am not so sure about a.
>>>>
>>>>
>>>> It is stable.
>>>>
>>>> I am trying to understand Athens code from reading it, once again I am
>>>> a big failure at understanding code.
>>>>
>>>>
>>>> The tutorial is the way to go. Why this is not enough.
>>>>
>>>> So is there any hope for someone like me , that he is not a very good
>>>> coder, he is new to Pharo and he has a simple mind to use Athens to make a
>>>> basic GUI API ?
>>>>
>>>>
>>>> Yes just focus on Athens.
>>>> For example extend the
>>>>
>>>>
>>>>
>>>> On Thu, Oct 31, 2013 at 6:07 PM, Igor Stasenko <siguctua at gmail.com>wrote:
>>>>
>>>>>
>>>>> On 31 October 2013 16:40, kilon alios <kilon.alios at gmail.com> wrote:
>>>>>
>>>>>> save the image while the morph is displayed, reload the image and in
>>>>>> its place there is the big red box with the yellow X , reporting an error
>>>>>> with Athens. I have reproduced the error on Windows too with the Athens
>>>>>> examples. I assumed my explanation was clear , I hope its clear now.
>>>>>>
>>>>>>
>>>>> no. not clear. which morph? what class, how you using it etc.
>>>>> I have morphs which using Athens for drawing and i can save and load
>>>>> image back and i don't have red squares of death.
>>>>>
>>>>>
>>>>>> This means that its impossible to save an image with a morph using
>>>>>> Athens displaying and have it reload back when the image is reloaded.
>>>>>>
>>>>>> The athens-surface, especially cairo surface is valid only within a
>>>>> single session.
>>>>> if you boot new image, you must recreate (or stop using) surface you
>>>>> used in previous session.
>>>>> Otherwise you will have red box of doom.
>>>>>
>>>>> And while i agree that this is pretty major problem (in terms of
>>>>> making your morph to be session-aware
>>>>> and in terms of managing external resources) i am far from calling it
>>>>> a bug of Athens of any kind per se.
>>>>>
>>>>>
>>>>>
>>>>>>  On Thu, Oct 31, 2013 at 5:05 PM, Stéphane Ducasse <
>>>>>> stephane.ducasse at inria.fr> wrote:
>>>>>>
>>>>>>>
>>>>>>> On Oct 31, 2013, at 9:55 AM, kilon alios <kilon.alios at gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>> yes I am aware of the examples already, I am learning from them.
>>>>>>> Please note I have found a bug with Athens, which looks to me pretty major.
>>>>>>> If I save a morph using Athens
>>>>>>>
>>>>>>>
>>>>>>> what do you mean save a morph
>>>>>>>
>>>>>>> and reload the image,
>>>>>>>
>>>>>>>
>>>>>>> what do you mean?
>>>>>>>
>>>>>>>
>>>>>>> I see the red box of doom. For example trying your example from
>>>>>>> stackoverflow. Are you aware of this bug ?
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Oct 31, 2013 at 2:43 AM, Igor Stasenko <siguctua at gmail.com>wrote:
>>>>>>>
>>>>>>>> ah, yes , there's also examples in
>>>>>>>> Athens-Examples package.
>>>>>>>>
>>>>>>>>
>>>>>>>> On 31 October 2013 01:30, Igor Stasenko <siguctua at gmail.com> wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 30 October 2013 23:02, kilon alios <kilon.alios at gmail.com>wrote:
>>>>>>>>>
>>>>>>>>>> well I just asked if there is any kind of Documentation about
>>>>>>>>>> Athens . Or should I just read the code and ask questions ?
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>> the main source of documentation right now is class comments
>>>>>>>>> and tutorial.
>>>>>>>>> I've spent quite of a time commenting the central classes of
>>>>>>>>> athens,
>>>>>>>>> hope that's helpful.
>>>>>>>>> Of course this does not replacement for a well written docu, and
>>>>>>>>> that needs to be done.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Wed, Oct 30, 2013 at 11:51 PM, Igor Stasenko <
>>>>>>>>>> siguctua at gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> i hope you satisfied with my answer.
>>>>>>>>>>> you welcome to ask more, if you not :)
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On 30 October 2013 22:32, dimitris chloupis <
>>>>>>>>>>> thekilon at yahoo.co.uk> wrote:
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> http://stackoverflow.com/questions/19694197/how-to-create-lines-with-athens
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Best regards,
>>>>>>>>>>> Igor Stasenko.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Best regards,
>>>>>>>>> Igor Stasenko.
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Best regards,
>>>>>>>> Igor Stasenko.
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Best regards,
>>>>> Igor Stasenko.
>>>>>
>>>>
>>>>
>>>>
>>>
>>
>>
>> --
>> Best regards,
>> Igor Stasenko.
>>
>
>


-- 
Best regards,
Igor Stasenko.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/attachments/20131031/e49a7176/attachment-0002.html>


More information about the Pharo-dev mailing list