Explaining Spec2 and why Bloc is on the roadmap

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Explaining Spec2 and why Bloc is on the roadmap

ducasse
Dear Pharoers

We would like to explain what is Spec 2.0 and how Bloc is on the Pharo roadmap.

Spec is a way to support a way to express and reuse application interaction logic.
Spec was first developed by Benjamin van Ryseghem and others while supervised
by Stéphane Ducasse.
Over the years we cleaned Spec, but we never took the time to really revisit it, and Spec
was never stressed outside the scope of Pharo tools (even if there is some people who
used it in their projects, this was not the general case). There was a need to deeply rethink
the way we express and reuse interaction application logic.

Spec 2.0 revisits fundamentally Spec. The consortium wants to acknowledge the strong financial
support of Schmidt in this new development. Here is a list of points we are working on to support companies
to build modern applications with Pharo.

        - adding support for many widgets and at the same time improving existing widgets such as fasttable
        - adds much better layouts (we will deprecate the interpreter design)
        - introducing a new way to architecture an application:
        Spec20 introduces the notion of application to better handle resources and window flow
        - revisiting the internal logic of Spec (to remove useless parts and enhance the ones that works)
        - adding many tests

In addition we want that Spec 2.0 is not tight anymore with Morphic.
Why? Because we want to make sure that:
        - companies can deploy desktop applications
        - we can reuse all the tools logic of Pharo with new widgets sets such as Brick (widgets on top of Bloc)
        without having to rewrite everything.

This is why Spec2.0 can optionally render using Gtk3.0. It also means that in the future we can have native widgets.

Now that Bloc/Brick is finally reaching a point where it can be tried and eventually adopted, we want to
make sure the transition to it will not force us to throw away the tools we developed last ten years.
We think that Bloc needs some effort to clean and structure it and Spec2.0 gives the time to let Bloc and Brick
mature. Also, we want to make sure that in the future we will be able to adopt other backends in case we
decide it (Remember new now is old tomorrow and while Bloc/Brick is new and modern,  it will not remain
new and modern forever).

Brick needs to be ready for Pharo consumption, and to make it possible we need to move the image to converge.
With Spec 2.0, in future versions we will just need to define a new backend to get all our tools working.

The Pharo Board



Reply | Threaded
Open this post in threaded view
|

Re: Explaining Spec2 and why Bloc is on the roadmap

Pharo Smalltalk Developers mailing list
Hi Stef,

Thanks for this email. Spec 2 really looks great.
It is also great to foresee an integration of Bloc/Brick in Pharo.

Cheers,
Alexandre

> On May 2, 2019, at 5:27 AM, ducasse <[hidden email]> wrote:
>
> Dear Pharoers
>
> We would like to explain what is Spec 2.0 and how Bloc is on the Pharo roadmap.
>
> Spec is a way to support a way to express and reuse application interaction logic.
> Spec was first developed by Benjamin van Ryseghem and others while supervised
> by Stéphane Ducasse.
> Over the years we cleaned Spec, but we never took the time to really revisit it, and Spec
> was never stressed outside the scope of Pharo tools (even if there is some people who
> used it in their projects, this was not the general case). There was a need to deeply rethink
> the way we express and reuse interaction application logic.
>
> Spec 2.0 revisits fundamentally Spec. The consortium wants to acknowledge the strong financial
> support of Schmidt in this new development. Here is a list of points we are working on to support companies
> to build modern applications with Pharo.
>
> - adding support for many widgets and at the same time improving existing widgets such as fasttable
> - adds much better layouts (we will deprecate the interpreter design)
> - introducing a new way to architecture an application:
> Spec20 introduces the notion of application to better handle resources and window flow
> - revisiting the internal logic of Spec (to remove useless parts and enhance the ones that works)
> - adding many tests
>
> In addition we want that Spec 2.0 is not tight anymore with Morphic.
> Why? Because we want to make sure that:
> - companies can deploy desktop applications
> - we can reuse all the tools logic of Pharo with new widgets sets such as Brick (widgets on top of Bloc)
> without having to rewrite everything.
>
> This is why Spec2.0 can optionally render using Gtk3.0. It also means that in the future we can have native widgets.
>
> Now that Bloc/Brick is finally reaching a point where it can be tried and eventually adopted, we want to
> make sure the transition to it will not force us to throw away the tools we developed last ten years.
> We think that Bloc needs some effort to clean and structure it and Spec2.0 gives the time to let Bloc and Brick
> mature. Also, we want to make sure that in the future we will be able to adopt other backends in case we
> decide it (Remember new now is old tomorrow and while Bloc/Brick is new and modern,  it will not remain
> new and modern forever).
>
> Brick needs to be ready for Pharo consumption, and to make it possible we need to move the image to converge.
> With Spec 2.0, in future versions we will just need to define a new backend to get all our tools working.
>
> The Pharo Board
>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: Explaining Spec2 and why Bloc is on the roadmap

Ben Coman
In reply to this post by ducasse
Thanks for the background info Steph.

On Thu, 2 May 2019 at 17:28, ducasse <[hidden email]> wrote:
> Spec 2.0 revisits fundamentally Spec.
>         - adds much better layouts (we will deprecate the interpreter design)

A very long time ago that I was debugging a Spec app was that
debugging INTO the framework from application code
would take 30 odd steps before it got to evaluate the block passed by
the application code.
Sorry thats a bit vague, but I'm hoping deprecating the interpreter
will improve such experience.

As a general comment also, architectures using stored blocks for
configuration rather than
passing in an "object with defined methods" seems a lot "less live".
Changing the code inside the block doesn't change the behaviour of
existing elements.

But maybe the "methods" way has its own issues.

cheers -ben

Reply | Threaded
Open this post in threaded view
|

Re: [Pharo-users] Explaining Spec2 and why Bloc is on the roadmap

Stéphane Ducasse
In reply to this post by ducasse
Hi Eric

I do not really know and let esteban answer. 
In GTK3 the themes are based on CSS. Now for Morphic we still do it the old way. 
Now in P8 we started to clean the themes but if you want to help you are welcomed because
our plates are quite full.

Stef

On 2 May 2019, at 20:38, Eric Gade <[hidden email]> wrote:

Stef,

Exciting news all around. Is this s good opportunity to revisit theming? I made a good attempt to wrap my head around themes about a year ago or so, but it's quite complex. If now's not (understandably) the time, how will themes work with this new multiple-backend approach?

On Thu, May 2, 2019 at 11:45 AM Alexandre Bergel via Pharo-users <[hidden email]> wrote:
Hi Stef,

Thanks for this email. Spec 2 really looks great.
It is also great to foresee an integration of Bloc/Brick in Pharo.

Cheers,
Alexandre

> On May 2, 2019, at 5:27 AM, ducasse <[hidden email]> wrote:
>
> Dear Pharoers
>
> We would like to explain what is Spec 2.0 and how Bloc is on the Pharo roadmap.
>
> Spec is a way to support a way to express and reuse application interaction logic.
> Spec was first developed by Benjamin van Ryseghem and others while supervised
> by Stéphane Ducasse.
> Over the years we cleaned Spec, but we never took the time to really revisit it, and Spec
> was never stressed outside the scope of Pharo tools (even if there is some people who
> used it in their projects, this was not the general case). There was a need to deeply rethink
> the way we express and reuse interaction application logic.
>
> Spec 2.0 revisits fundamentally Spec. The consortium wants to acknowledge the strong financial
> support of Schmidt in this new development. Here is a list of points we are working on to support companies
> to build modern applications with Pharo.
>
>       - adding support for many widgets and at the same time improving existing widgets such as fasttable
>       - adds much better layouts (we will deprecate the interpreter design)
>       - introducing a new way to architecture an application:
>       Spec20 introduces the notion of application to better handle resources and window flow
>       - revisiting the internal logic of Spec (to remove useless parts and enhance the ones that works)
>       - adding many tests
>
> In addition we want that Spec 2.0 is not tight anymore with Morphic.
> Why? Because we want to make sure that:
>       - companies can deploy desktop applications
>       - we can reuse all the tools logic of Pharo with new widgets sets such as Brick (widgets on top of Bloc)
>       without having to rewrite everything.
>
> This is why Spec2.0 can optionally render using Gtk3.0. It also means that in the future we can have native widgets.
>
> Now that Bloc/Brick is finally reaching a point where it can be tried and eventually adopted, we want to
> make sure the transition to it will not force us to throw away the tools we developed last ten years.
> We think that Bloc needs some effort to clean and structure it and Spec2.0 gives the time to let Bloc and Brick
> mature. Also, we want to make sure that in the future we will be able to adopt other backends in case we
> decide it (Remember new now is old tomorrow and while Bloc/Brick is new and modern,  it will not remain
> new and modern forever).
>
> Brick needs to be ready for Pharo consumption, and to make it possible we need to move the image to converge.
> With Spec 2.0, in future versions we will just need to define a new backend to get all our tools working.
>
> The Pharo Board
>
>
>




--
Eric

--------------------------------------------
Stéphane Ducasse
03 59 35 87 52
Assistant: Julie Jonas 
FAX 03 59 57 78 50
TEL 03 59 35 86 16
S. Ducasse - Inria
40, avenue Halley, 
Parc Scientifique de la Haute Borne, Bât.A, Park Plaza
Villeneuve d'Ascq 59650
France

Reply | Threaded
Open this post in threaded view
|

Re: Explaining Spec2 and why Bloc is on the roadmap

Tudor Girba-2
In reply to this post by ducasse
Hi,

Thanks for the mail.

I’d like to add a few remarks from the perspective of the team that currently develops Bloc/Brick.

We are quite happy to see that Bloc/Brick starts to be considered a target platform. Bloc was started by Alain Plantec and Stéphane Ducasse. Glenn Cavarle was an important contributor at some point, too. At feenk, we got involved about 3+ years ago and since then we invested significantly in it and we are planning to continue to do so. In this process, the code was rewritten several times.

We are developing Bloc/Brick in the context of Glamorous Toolkit (GT). The latest code (including reproducible releases) is here:
https://github.com/feenkcom/Bloc
https://github.com/feenkcom/Brick

While we could say that GT is only one user, the requirements that come from GT are broader than that of a typical application. For example, this led us to build an editor with rather unique abilities. Also, Bloc has the property of being able to accommodate both visualizations and typical widgets within the same scene and this allows us to compose new kinds of interfaces.

GT is still in alpha and things will still evolve in the coming months, and Bloc/Brick will change as well. However, we can consider Bloc quite stable and we find that we can operate significant changes without affecting users. For example, recently, we added a complete new support for native windows (we replaced SDL2 with Glutin) and made it work on all platforms without impact the users:
https://twitter.com/feenkcom/status/1124544911716515840

Brick already has a list of widgets that are usable. If you want to see it in practice, just open a Glamorous Toolkit image. Brick will go through more changes in the following period mostly due to the introduction on theming support and user-specific preferences.

Nevertheless, we would be happy to see the code exercised from a different perspective than the one we have. So, if people want to play with it, we would be happy to support and provide feedback.

Cheers,
Doru



> On May 2, 2019, at 11:27 AM, ducasse <[hidden email]> wrote:
>
> Dear Pharoers
>
> We would like to explain what is Spec 2.0 and how Bloc is on the Pharo roadmap.
>
> Spec is a way to support a way to express and reuse application interaction logic.
> Spec was first developed by Benjamin van Ryseghem and others while supervised
> by Stéphane Ducasse.
> Over the years we cleaned Spec, but we never took the time to really revisit it, and Spec
> was never stressed outside the scope of Pharo tools (even if there is some people who
> used it in their projects, this was not the general case). There was a need to deeply rethink
> the way we express and reuse interaction application logic.
>
> Spec 2.0 revisits fundamentally Spec. The consortium wants to acknowledge the strong financial
> support of Schmidt in this new development. Here is a list of points we are working on to support companies
> to build modern applications with Pharo.
>
> - adding support for many widgets and at the same time improving existing widgets such as fasttable
> - adds much better layouts (we will deprecate the interpreter design)
> - introducing a new way to architecture an application:
> Spec20 introduces the notion of application to better handle resources and window flow
> - revisiting the internal logic of Spec (to remove useless parts and enhance the ones that works)
> - adding many tests
>
> In addition we want that Spec 2.0 is not tight anymore with Morphic.
> Why? Because we want to make sure that:
> - companies can deploy desktop applications
> - we can reuse all the tools logic of Pharo with new widgets sets such as Brick (widgets on top of Bloc)
> without having to rewrite everything.
>
> This is why Spec2.0 can optionally render using Gtk3.0. It also means that in the future we can have native widgets.
>
> Now that Bloc/Brick is finally reaching a point where it can be tried and eventually adopted, we want to
> make sure the transition to it will not force us to throw away the tools we developed last ten years.
> We think that Bloc needs some effort to clean and structure it and Spec2.0 gives the time to let Bloc and Brick
> mature. Also, we want to make sure that in the future we will be able to adopt other backends in case we
> decide it (Remember new now is old tomorrow and while Bloc/Brick is new and modern,  it will not remain
> new and modern forever).
>
> Brick needs to be ready for Pharo consumption, and to make it possible we need to move the image to converge.
> With Spec 2.0, in future versions we will just need to define a new backend to get all our tools working.
>
> The Pharo Board
>
>
>

--
www.feenk.com

"To utilize feedback, you first have to acquire it."