>
> When (in Bloc) I go to World menu>>help>>Help browser>>Bloc>>Grid Layout,
> I find the following license:


It is important to mention that Grid is more general than Table layout. It
allows developers to create complex UI with less nested elements compared
to the case when Table layout would be used instead. Reducing amount of
nested/composed elements leads to performance boost (we have less elements
in the tree) and reduces overall complexity - no need to use "hack"
elements that have no intent and not part of real UI.

Since Grid requires more complex (compared to table) computations we should
take care about performance. General complexity of algorithm to compute
distribution of cell sizes is O(n^2) - too much. Google already invested
time (money) in this problem and developed a special case algorithm with
linear complexity. It is used in Grid layout in bloc which means that we
have a derivative work and need to ship original licence.

Here is google's documentation:


> Bellman-Ford variant - modified to reduce typical running time from O(N^2)
> to O(N)
> GridLayout converts its requirements into a system of linear constraints
> of the
> form:
> x[i] - x[j] < a[k]
>


> Where the x[i] are variables and the a[k] are constants.
> For example, if the variables were instead labeled x, y, z we might have:
> x - y < 17
> y - z < 23
> z - x < 42
>


> This is a special case of the Linear Programming problem that is, in turn,
> equivalent to the single-source shortest paths problem on a digraph, for
> which the O(n^2) Bellman-Ford algorithm the most commonly used general
> solution.


Apache 2.0 is compatible/can be used with MIT - as far as I can tell
according to answers on Internet. Maybe a layer can answer more correctly.

Cheers,
Alex

On Tue, Jun 21, 2016 at 3:06 PM, Aliaksei Syrel <[email protected]>
wrote:
>
> Hello Clement
>
> restoreAfter: is not only for transformation. It also restores clipping -
that is why we need restoreAfter. (uses push and pop state). Having that
clipping region is an arbitrary path there is no way to avoid pop and push
state - which costs a lot in Cairo. It is slow because Cairo and Athens are
statefull - which is bad for rendering a composition of arbitrary elements.
>
> Right now there is a huge work going on new Sparta - it will be almost
stateless and will support a wide variety of backends (Cairo, Skia,
CoreGraphics and so on).
> Current Sparta-Cairo is an experiment which goal was to support clipping
by arbitrary path. We learned that it is slow because of statefullness.
>
> In order to fill a square with color we have to perform the following ffi
native calls:
> - set color
> - set shape
> - fill
>
> Even in the most simple case we need 3 calls. When it gets more
complicated there are even more calls. Preparing drawing context with
multiple calls to perform an operation is a consequence of statefullness.
>
> Modern browsers use stateless canvases to render content. Idea is simple:
one call per drawing operation. Example above would look like:
> - fillPath(aPath, aPattern, drawOptions).
> That is it.
> Second benefit is that we don't need to care about shared state between
drawing operations, no more push/pop state and as result huge performance
boost.
>
> Cheers
> Alex
>
> On Jun 21, 2016 1:34 PM, "Clément Bera" <[email protected]> wrote:
>>
>> Hi,
>>
>> Thanks Doru it now works for me ! Very exciting indeed.
>>
>> I have a few questions:
>>
>> 1. In Pharo the World menu is accessed through left-click and
right-click provides the world contents. In Bloc, right-click displays the
world menu and left-click does nothing. Is it expected / some design choice
or just convenience for debugging ? At first glance I thought Bloc didn't
work because I was left-clicking like in Pharo.
>>
>> 2. Can we change the fonts in Bloc ?
>>
>> 3. When (in Bloc) I go to World menu>>help>>Help browser>>Bloc>>Grid
Layout, I find the following license:
>>
>> Copyright (C) 2011 The Android Open Source Project
>>
>> Licensed under the Apache License, Version 2.0 (the "License");
>> you may not use this file except in compliance with the License.
>> You may obtain a copy of the License at
>>
>>       http://www.apache.org/licenses/LICENSE-2.0
>>
>> Unless required by applicable law or agreed to in writing, software
>> distributed under the License is distributed on an "AS IS" BASIS,
>> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>> See the License for the specific language governing permissions and
>> limitations under the License.
>>
>> Does it mean Bloc is not under MIT ? Or is it completely unrelated ?
>>
>> 4. What is Cairo-Sparta ? What is the difference with Athens ?
>>
>> 5. It seems that the normal Pharo image in idle spends between 4 and 5%
of execution time in the Morphic process, while in Bloc it seems that
between 17 and 23% of execution time is in the main bloc loop
(BlBoostedMainLoopManager). Isn't that a lot ?
>> - It's interesting to see that 28% of execution time spent in Bloc is in
BlSpartaCanvas>>#restoreAfter:. In the 2D video games I wrote (both using
Cairo and Javascript canvas) I avoided using #restoreAfter: and instead in
method such as BlSpartaCanvas >>#transform:during: I used a reverse
transformation to restore the state. I am wondering if that's possible in
large graphic framework like Bloc, that would save a quarter of the time.
Maybe it's possible only in simple 2D video games.
>> - Aside from restoreAfter, there is no obvious ways on how to save
time...
>>
>> Well keep up the good work.
>>
>>
>>
>> On Tue, Jun 21, 2016 at 11:36 AM, Tudor Girba <[email protected]>
wrote:
>>>
>>> Hi,
>>>
>>> Thanks for looking at it.
>>>
>>> You have to first switch to the Bloc space:
>>>
>>> World Menu / Bloc / Switch to Bloc
>>> (I think there is a problem right now with OS-Window)
>>>
>>> Then, from Nautilus, you can pick an example and Inspect Return-Values
to get the object.
>>>
>>> Cheers,
>>> Doru
>>>
>>>
>>>
>>> On Jun 21, 2016, at 10:42 AM, Clément Bera <[email protected]>
wrote:
>>>
>>> Hi Doru,
>>>
>>> Ok I understand I have issues keeping comments updated in my projects
too :-). Do your best.
>>>
>>> I tried to run the examples from Bloc-Core-Examples but they didn't
work. I downloaded the latest Pharo-Spur32 VM from files.pharo.org and
retried and it still didn't work.
>>>
>>> How can I have the examples running ?
>>>
>>> Here is the errors I have for the first two examples of
BlExampleElementWithBorderAndFill.
>>>
>>> <Screen Shot 2016-06-21 at 10.40.39 AM.png>
>>>
>>> Here are the examples:
>>>
>>> <Screen Shot 2016-06-21 at 10.37.49 AM.png>
>>>
>>>
>>> Best,
>>>
>>> Clement
>>>
>>> On Tue, Jun 21, 2016 at 10:09 AM, Tudor Girba <[email protected]>
wrote:
>>> Hi Clement,
>>>
>>> Thanks for looking at it.
>>>
>>> Indeed, there aren’t many comments. A large part of the engine got
rewritten twice over the last months, and many of the previous comments
were no longer up to date.
>>>
>>> And no, the policy is not to not write comments :), but right now the
priority is on building examples. which you will find in the
Bloc-Core-Examples classes and their subclasses.
>>>
>>> Cheers,
>>> Doru
>>>
>>>
>>>
>>> > On Jun 21, 2016, at 9:39 AM, Clément Bera <[email protected]>
wrote:
>>> >
>>> > Hi Doru,
>>> >
>>> > I downloaded the image, opened Nautilus, clicked on the package named
'Bloc-Core' and all the classes I can see have no class comments (See
screenshot below). Is there a 'No class comment' policy in Bloc ? Or maybe
the top classes shown are just non representative of the class comments of
the overall framework.
>>> >
>>> > <Screen Shot 2016-06-21 at 9.33.31 AM.png>
>>> >
>>> > On Tue, Jun 21, 2016 at 7:42 AM, Tudor Girba <[email protected]>
wrote:
>>> > Hi,
>>> >
>>> > Here is a brief update on the status of Bloc.
>>> >
>>> > Several of us came together to form a team and work to see Bloc in
Pharo 6 at least as a preview. The team communication happens via Slack in
a dedicated team, and the goal is to have regular progress/feedback
communication on this mailing list.
>>> >
>>> > Just because we have a dedicated team does not mean that your
feedback is important. In fact, over the last months, Bloc was redesigned
again to include the feedback we got here. So, now we have:
>>> > - Element is responsible for drawing (no more shape)
>>> > - Interaction area and clipping area are now distinct
>>> >
>>> > You can find the current build on top of Pharo 6 here:
>>> >
https://ci.inria.fr/moose/job/bloc/PHARO=alpha,VERSION=development,VM=vmLatest/
>>> >
>>> > The current team focus goes like this:
>>> > - Alain is looking at events,
>>> > - Glenn is playing with creating new elements in Bloc and refactoring
the way we can manage ,
>>> > - Alex (Syrel) and Esteban are working on the backend to make
rendering faster,
>>> > - Doru is pretending to do something useful.
>>> >
>>> > Cheers,
>>> > Doru
>>> >
>>> >
>>> > --
>>> > www.tudorgirba.com
>>> > www.feenk.com
>>> >
>>> > "What we can governs what we wish."
>>> >
>>> >
>>> >
>>> >
>>> >
>>> >
>>>
>>> --
>>> www.tudorgirba.com
>>> www.feenk.com
>>>
>>> "Presenting is storytelling."
>>>
>>>
>>>
>>>
>>> --
>>> www.tudorgirba.com
>>> www.feenk.com
>>>
>>> "Problem solving should be focused on describing
>>> the problem in a way that makes the solution obvious."
>>>
>>>
>>>
>>>
>>>
>>

Reply via email to