question about O2 vs OB

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

question about O2 vs OB

Fernando olivero
Hi, was wondering why we need O2 and OB as two different frameworks?, and why O2 is not an extension to OB, are they structurally different in design and implementation?

I was wondering about this since i read the last emails about O2 and OB decoupling.

Because now if we reintegrate O2, the system will have much more complexity.

Thanks,

Fernando
_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: [Pharo-project] question about O2 vs OB

Lukas Renggli
O2 is a fork of OB.

The duplication of the complete code-base is necessary, because O2
makes incompatible changes to the OmniBrowser framework. The way O2 is
implemented makes it impossible to run both together on the same core
model without conflicts.

Lukas

--
Lukas Renggli
http://www.lukas-renggli.ch

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: [Pharo-project] question about O2 vs OB

Fernando olivero
Ok, thanks for the answer Lukas.

 Then i would ask the O2 developers, why is the fork needed? Just curious, because if 02 copies a lot from OB, to add more functionality why that extra features cant be part of OB?

My point is that i don't understand if OB is no extensible enough for building O2, or just because it was easier to fork.

Many thanks,
Fernando

 
On Jan 20, 2010, at 2:14 PM, Lukas Renggli wrote:

> O2 is a fork of OB.
>
> The duplication of the complete code-base is necessary, because O2
> makes incompatible changes to the OmniBrowser framework. The way O2 is
> implemented makes it impossible to run both together on the same core
> model without conflicts.
>
> Lukas
>
> --
> Lukas Renggli
> http://www.lukas-renggli.ch
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: [Pharo-project] question about O2 vs OB

Lukas Renggli
>  Then i would ask the O2 developers, why is the fork needed? Just curious, because if 02 copies a lot from OB, to add more functionality why that extra features cant be part of OB?

I don't know, but I guess one of the reasons is that there is not a
single test case for any of the new functionality. In comparison the
OB code-base is extremely well tested, it has a very high
code-coverage and even the morphic GUI code has tests.

Another problem is that the O2 code does not use the meta-model
everywhere, some parts are just hardcoded. Also its code is not
properly packaged, so the very generic framework to build browsers
suddenly includes behavior that just make sense for some specific
Smalltalk code browsers.

Furthermore OB is designed to be platform independent (like Seaside).
The same code is for example used in GemStone and Squeak. O2 is full
of platform dependent code.

It's a pity because OB could be really much more powerful.

Lukas

--
Lukas Renggli
http://www.lukas-renggli.ch

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: [Pharo-project] question about O2 vs OB

David Röthlisberger-2
In reply to this post by Fernando olivero
Hi Fernando,

>  Then i would ask the O2 developers, why is the fork needed? Just curious, because if 02 copies a lot from OB, to add more functionality why that extra features cant be part of OB?

We didn't fork O2 from OB for the longest time. Instead what is in O2 now was just a
package called OB-Enhancements that could be loaded in OB to get the package browser and
some other extensions to OB now being part of O2.
But while this situation had the benefit of reusing the entire OB framework, which I
really liked to re-use, the disadvantages were that this framework really restricted the
possible extensions to the browser. So I had to change and adapt the framework itself. Now
there were people that did not like these extensions, might it be because they did break
their external tools based on the OB framework, might it be that these extensions also
changed some behavior of the traditional OB-based code browser, or might it be that the
changes were not well enough tested and thus it happened that there were bugs in the OB
browser itself here and there. Also it was not possible to make these changes to the OB
code and still keep the same behavior in all browsers as it used to be before.
Furthermore, it got difficult for people fixing bugs in their forks of OB and merging them
back to the now changed OB framework.
Eventually, there was also a lack of lead concerning integration and maintenance of OB
itself. Nobody felt responsible to take this lead. Colin was the original developer of OB,
but he couldn't spend too much time on it anymore. I just wanted to extend OB to do some
enhancements to it, but saw that this is not possible without extending its core. As I
felt like you and did not want to fork, I extended the core itself in Colin's repository.
But this turned out to not be compatible with the wishes of the community, so we forked O2
away.

That's the reason of having OB and O2. While both now work together in the same image
without inferring each other, this indeed increases the number of classes in the image
quite a lot as they duplicate a whole bunch of code. So I strongly suggest to either use
OB or O2, even though you can have both. But I do not see a reason why people want to
switch between the two dynamically in the same image.

Cheers,
David

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project