Re: Cheese Architecture Redesign



Hello Daniel:

First of all, C is a great programming language. However, C is a very low-level interface to the computer. It was never designed for object inheritance nor for dynamic library loading at runtime through reflection mechanisms. GObject is no more and no less than a "trick" to make C more object oriented, but it does not make it so, hence all the inheritance complexities still remain. Moreover, it is completely fair to say that object-oriented languages and reflection go hand in hand and that C libraries are not designed to support such reflection system. This makes Add-In development a lot harder since one must define one's own system instead of using anything readily and broadly available (such as Mono.Addins).

Now, .NET and C libraries are not point-to-point compatible, meaning that one cannot include a header and use it. One must create wrappers around the C libraries or write a more specialized library in C that does the most useful work and then that code is called by .NET. These are architectural decisions .NET developers are used to making (and this is not at all just like writing in C).

Also, I do not understand why people neglect a whole technology, in this case being Mono, because there are legalities that have appeared over time. .NET is an ECMA standard that anyone anywhere anytime is free to implement. The Novell-Microsoft issue does not concern Mono, but rather Microsoft patents being "violated" by Linux. I ought to point out that if we all just stick to C because everybody knows it, then technology doesn't move any forward. Why develop more powerful systems like Java and Mono if people already know C and nobody is willing to even look at another system that may make application development easier, simpler, faster and less error-prone?

I agree that we can disagree on loads of things. My only point here is: I've tried to help you by implementing the ideas in the FAQ, but if I do that in the current state of the program, an year from now, you'll have to re-write it again because the present design is not thought for such features to be added.

Cheers,

Hernan.

P.S.: I'm not willing to bring your project down and I also understand how much you might hate having other people telling you that they do not like the way your code has been written. I would hate if other people did that to me. Nonetheless, at the end of the day, it's constructive criticism that allows for a brighter future.

On Sun, Jun 29, 2008 at 11:37 AM, daniel g. siegel <dgsiegel gmail com> wrote:
dear hernan,

cheese is now about a year old and we already had a rewrite of the
webcam class. you are right, that cheese got really complex in some
places (e.g. cheese-window or cheese-webcam) and in those places its
also quite hard to find bugs. youre also right that its not that easy to
have a good implementation written in c.

however, i dont think switching to another programming language would
fill the gap, also because of the following points:
     * gnome is almost entirely written in c. for sure, this isnt just
       because its c, but also because we have awesome libraries, which
       are also written in c. therefore you also get the newest
       functions and apis.
     * rewriting cheese in another language would be as removing cheese
       from gnome and then resubmitting it for 2.26, that doesnt sound
       really good
     * everybody has his favorite language, like python, mono, c,.. but
       at the end i think you get the most patches and people willing
       to contribute if you use a language, which most people can
       understand and are willing to use.
     * (optional) mono, novell, microsoft. a lot of people do not like
       this relationship
     * specific to mono: mono is object oriented, but i can say, that
       we get almost the same with gobject, which i like really more
       than the object oriented things in mono/java
     * compatibility: i dont know how mono and gstreamer and those
       other libraries work together.

you see, there are a lot of points where we could discuss and probably
never find a common agreement.

so, as patrys already told you: you are entirely free to build your own
cheese with mono, but i want to propose something else:

we added many features to cheese without looking at code mainteneance
and therefore we are, where we right now are. i dont like some places of
the cheese code, and i really would like to rewrite it from scratch, to
have a clean design, which is extensible and gives us the possibility to
add features easily. it would be awesome to help us to accomplish this
goal and i think we all can be happy afterwards. what do you think?

daniel

by the way: jaap is developing a cheese clone in vala, you can find that
in the cheese svn under branches, but in my opinion a lot of the
arguments above apply here. a lot, because vala is just a frontend to c
and gobject.

On So, 2008-06-22 at 14:52 -0400, Hernan Gatta wrote:
> Hello,
>
> Cheese has been evolving quite some recently and I've been looking at
> the ideas that you would like to see implemented in the upcoming
> releases in order to make Cheese even better. However, I have indeed
> looked at the code and I am afraid to say that as with almost any
> program coded in C, Cheese will exponentially grow in complexity as
> features are added. I've tried to add some of the features and the
> code-base is pretty complex to work with in terms of dynamically
> managing the Gstreamer pipeline, for instance. I would like to propose a
> new design based on Mono (.NET) that would allow a very simplistic (and
> even cross-platform) core filled with easy-to-write extensions based on
> the Mono.Addins framework (look at
> http://www.mono-project.com/Mono.Addins). Applications like this one
> exist already and are seeing a growth in usage like Tomboy Notes and
> Banshee as well as the MonoDevelop IDE. I'd like to point out that the
> user interface need not change, just the underlying code; although I
> would like to see some sort of OpenGL-based GUI should the user's system
> support it in order to bring more "bling" to the program (using things
> like Clutter as a back-end - http://clutter-project.org/). I've started
> some work on this myself already and I will continue to work on it. I
> would like to hear your input on this idea and see what can be done
> about it.
>
> Thanks,
>
> Hernan.
--
this mail was sent using 100% recycled electrons
================================================
daniel g. siegel <dgsiegel gmail com>
http://home.cs.tum.edu/~siegel
gnupg key id: 0x6EEC9E62
fingerprint: DE5B 1F64 9034 1FB6 E120 DE10 268D AFD5 6EEC 9E62
encrypted email preferred



--
Hernán A. Gatta

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]