Re: The future of binary embedding

2012-03-01 Thread Bobby Holley

 Does anyone have an idea about how much work it would take to maintain
 python-xpcom?


Lots.

I don't know much about pyxpcom, but I imagine it being pretty analogous to
XPConnect (our JS-XPCOM bridge). XPConnect is probably the most notorious
module in Gecko - it's complicated, scary, and easy to get wrong. We
already sink a ton of engineering resources into it, and wouldn't if it
weren't so fundamental to our entire architecture.

More importantly, for a number of reasons the DOM is becoming more
intimately tied to JS: we're removing the abstraction layer that
sorta-kinda makes the DOM language-agnostic (it's too slow), and we're
writing new custom DOM bindings.

So if it isn't true already, pyxpcom won't be able to script the DOM
anymore, which makes it significantly less useful. Reversing this course
(and maintaining a separate set of python DOM bindings) is pretty much out
of the question: it incurs a performance penalty for the Web that we don't
want to pay, and it would take months and months of engineering by Boris,
Kyle, Peter, Blake, Ben, Johnny, Olli, and myself to make happen.

In a nutshell, script bindings aren't easy - this stuff is some of the most
complicated and delicate code in Gecko. So the issue isn't that Benjamin is
too lazy or proud to keep the relevant embedding APIs. The issue is that
there is a very small group of people in the world who have the knowledge
to build and maintain something like this, and they have other priorities.

bholley
___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2012-02-29 Thread lkcl luke
https://bugzilla.mozilla.org/show_bug.cgi?id=731121

where is the information required to fix this problem?

also, why was pyxpcom excluded from the update my god this was _months_ ago!
https://bugzilla.mozilla.org/show_bug.cgi?id=675221

why was pyxpcom not included in that update, when the information was
fresh in everyone's minds??

oh i know - because pyxpcom has been relegated to third party status.

ok.

how is this going to get fixed? (a so that this stops happening b
these specific coding errors so i can get some working code)


On Tue, Feb 28, 2012 at 6:05 AM, lkcl luke luke.leigh...@gmail.com wrote:
 the policy of relegating pyxpcom to third party status within the
 mozilla codebase has resulted in these kinds of things, below.

 you will recognise this as the consequences of a decision some time in
 the past few weeks (which i wasn't party to, because i am an
 outsider having no funds or time to pay 24x7 attention to each and
 every decision made by the people who _are_ funded by the mozilla
 foundation)

 basically that decision looks like it involved deliberate splitting of
 the header files into public api and not public api.

 so, this header file nsIProxyObjectManager.h is treated as internal api...

 ... but somebody forgot that pyxpcom needs it... because they have
 relegated pyxpcom to third party status.

 they forgot that pyxpcom *needs* to be built as an internal
 component, yet the mozilla foundation has completely failed to provide
 a system for building such components, yet at the same time has
 basically dumped the responsibility onto other people.

 if however pyxpcom was actually part of mozilla-central, then not only
 would this problem simply not be present but also it would be a damn
 sight easier to find issues.

 temporarily i am forced to manually seek out, copy and make available
 this nsIProxyObjectManager.h file each and every damn time i do a
 rebuild and reinstall of a particular version of the xulrunner
 runtime.

 that's incredibly tiresome and it's part of the *additional* burden
 that the mozilla foundation's decisions are placing onto external
 developers.

 ... developers that are *not* funded by the mozilla foundation, it's
 worth once again pointing out.

 right now i cannot agree more that the OLPC team made the right
 decision to remove all mozilla-foundation-funded technology from their
 machines.

 l.

 c++ -o _xpcom.o -c -I../../../dist/system_wrappers -include
 ../../../../config/gcc_hidden.h -DOSTYPE=\Linux2.6\ -DOSARCH=Linux
 -DMOZ_NO_MOZALLOC -I/usr/include/python2.7
 -I../../../../xpcom/src/module -I. -I../../../dist/include
 -I../../../dist/include/nsprpub
 -I/usr/local/lib/xulrunner-devel-13.0a1/include
 -I/usr/local/lib/xulrunner-devel-13.0a1/include/nsprpub
 -I/usr/include/nspr          -fPIC   -fno-rtti -fno-exceptions -Wall
 -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy
 -Wno-non-virtual-dtor -Wcast-align -Wno-invalid-offsetof
 -Wno-long-long -pedantic -DXULRUNNER_13_0A1 -std=gnu++0x -fshort-wchar
 -fno-strict-aliasing -pipe -std=gnu++0x  -DNDEBUG -DTRIMMED -Os
 -freorder-blocks -fno-reorder-functions    -DMOZILLA_CLIENT -include
 /usr/local/lib/xulrunner-devel-13.0a1/include/mozilla-config.h
 -Wp,-MD,.deps/_xpcom.pp ../../../../xpcom/src/module/_xpcom.cpp
 ../../../../xpcom/src/module/_xpcom.cpp:68:35: fatal error:
 nsIProxyObjectManager.h: No such file or directory
 compilation terminated.
___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2012-02-29 Thread Kyle Huey
On Wed, Feb 29, 2012 at 4:30 PM, lkcl luke luke.leigh...@gmail.com wrote:

 https://bugzilla.mozilla.org/show_bug.cgi?id=731121 oh i know - because
 pyxpcom has been relegated to third party status.


Yes, exactly.

how is this going to get fixed? (a so that this stops happening b
 these specific coding errors so i can get some working code)


It's not going to get fixed unless someone steps up to fix it.  And as has
been stated several times, the core Mozilla community has no interest in
doing so.

- Kyle
___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2012-02-29 Thread lkcl luke
On Thu, Mar 1, 2012 at 2:29 AM, Justin Lebar justin.le...@gmail.com wrote:
 i'm going to keep on, and on, and on, and on, and on, and on at this
 until i get answers, and pyxpcom works.

 Luke, I think it is unlikely that you will accomplish your goals if
 you make trolling your primary strategy.

 i don't know what trolling is, and you are probably mistaking
trolling for pathological bug-fixing and 100% focus on getting a goal
completed irrespective of trying to make friends.

 but you are dragging the conversation off topic.  i am still waiting
for ben to acknowledge the points made regarding his misunderstanding
of the situation regarding the continuous changes to XPCOM interfaces,
which are absolutely irrelevant to dynamic programming languages.

 and, if that was the primary justification for destroying pyxpcom
then it is a mistake.



 You've tried to argue that it's in our best interests to maintain the
 python-xpcom bindings.  Those in this thread have heard your argument,

 no they haven't.  i'm not done yet.

 there's more to this.

 so far i've explained to chris that javascript as a compiler target
of a dynamic programming language results in an order of magniture
performance hit; to ben that he's mistaken about the binary
compatibility issue and so on.


 and they disagree.

how can you disagree with an incomplete perspective?  i don't understand.


  You think that's our loss, and maybe you're right!

 maybe?  there shouldn't be *any* maybe.  you're supposed to be
world leaders at the forefront of technology.  there should _be_ no
maybes.


 But just because you think we're wrong doesn't give you the right to
 waste everyone's time.  You are not entitled to anyone's attention
 here or in bugzilla.

 you are assuming that this is ego-driven.  where is the money that i
am being paid to do this work on behalf of others?  where is it?  can
you please tell me where the personal motivation is, please?

 have you seen any?

 mm?

 you've already badly let down the OLPC community.  that means that
it's now my responsibility to the pyjamas community to get this done,
and i'm PISSED that it's going to cost _me_ money and time when i've
been earning UNDER POVERTY LEVEL INCOME FOR FOUR FUCKING YEARS.

 do you not fucking get it?  we got EVICTED last year - myself, my
partner and my 2-year-old daughter, because i stick to free software
principles and have to turn down lucrative contracts where people in
the United States violate the Treaty of Rome's clauses on intellectual
property ownership.

 you guys have absolutely no idea.  i was _homeless_ for two years,
from about 2007 to 2009 for god's sake.  and i _still_ kept to free
software principles and still kept working on free software.


 Maintaining xpcom bindings for Python is work!  You're probably right
 that it would be more work for you than it would be for a core xpcom
 contributor.  But it's work either way,

 yes, it is.  so go on.  ban me.  come on.  go stick your fingers in
your ears.  make the decision to revoke my bugzilla account (like the
webkit team did, after their deliberate bullying).  see how far that
gets you.

 the damage to the free software community of mark rowe's bullying was
- is - _immense_.

 you want to do the same thing?  go ahead.  because if you don't start
taking responsibility for this instead of going nur, nur it's not our
core focus, i _will_ absolutely pathologically drive you to that.


 and I think you are unlikely
 to convince someone to do work by threatening to be a troll.

 i don't actually know what a troll is.

 however i _will_ be absolutely pathological, persistent and get this done.

 it would be very very good if you found someone _else_ to do the work.

 anyway.

 you've made me extremely angry, but let's forget that that happened, shall we?

 now, back to the subject at hand.

 here's where we are: i'm waiting for ben to acknowledge that the
points made about the dynamic programming language bindings to XPCOM
interfaces make no odds regarding this binary compatibility
argument.

 he very kindly raised the point, which gives us an insight into why
the mistake was made.

 now.

 ben.

 without prejudice.

 it's okay to admit that you made a mistake.

 nobody is going to think anything less of you if you say ah, i made
an error of judgement because i didn't know how pyxpcom+hulahop works

 do you acknowledge that for dynamic programming languages which use
lazy binding, binary compatibility with XPCOM interfaces is
irrelevant?

 i'm keenly aware that all decisions have been made to destroy pyxpcom
based on the mistaken assumption that binary compatibility is
important to dynamic programming languages.

 a simple yes would suffice, then we can move on to the next stage, ok?

l.
___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2012-02-28 Thread Asa Dotzler

On 2/27/2012 1:14 PM, lkcl luke wrote:

btw, ben, about speed of using XPCOM through pyxpcom+hulahop...


Luke, it seems like you've ignored a very important reply to your 
ongoing attempts at educating Mozillians about the value of your 
project. I urge you to re-read what Benjamin said in a previous reply:



I don't think that python-hulahop is strategically important to our core
goals of innovation on the internet. So I don't think that in terms of
the Mozilla mission our core community should make maintenance and
development of that code a priority. I'd be happy to provide a place for
you or somebody else to build a community around python-hulahop, though.


- A
___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2012-02-27 Thread Benjamin Smedberg

On 2/25/2012 7:05 AM, luke.leigh...@gmail.com wrote:

the first question is this: how the heck is it possible that i could create, in 
under 3 weeks, an entire port of pyjamas-desktop to use the MSHTML IE engine, 
*without* requiring access to the proprietary MSHTML Trident Engine?
The browser engine provided by Microsoft has a stable COM API. It also 
does not require the embedder to handle any kind of persistent data 
access: history/cache/cookie stores are handled via a single operating 
system store which is shared across processes.

the key question is this: what is it about the microsoft technology that makes 
this possible?  this is not a rhetorical question.  this is not a sarcastic 
question.  i genuinely require that you actually think, ben, and find out the 
answer (hint: you already implement one.  or used to.  until it was pulled).

No, we didn't.

The ActiveX control provided an emulation layer which satisifed some of 
the behaviors (allowing gecko to run in a process hidden behind at least 
the basic set of Microsoft interfaces). But because we don't have any 
form of cross-process profile sharing, the embedder either had to 
configure and run their own profile directory (and think about the 
consequences of only being able to use that datastore from one process 
at a time) or run without any data store, which is not a well-tested 
gecko configuration and will cause many websites to fail because cookies 
and the cache do not behave correctly.


In addition, the primary way to access DOM nodes through the MS API is 
via IDispatch, and the bridge between IDispach and COM typeinfo was 
never complete and didn't match the Microsoft implementation in key 
ways. The closest cross-platform equivalent we have to IDispatch is the 
NPRuntime, which is pretty well tested but isn't efficient and has 
inherent cycle issues.


and if microsoft can do it, why can't the mozilla foundation?
We *could* do it. But it would require significant engineering effort to 
implement shared profile data, solve the IDispatch-or-equivalent problem 
(especially if we needed it to be safe for object cycles via the cycle 
collector), and then provide real QA and release resources for the 
project. Since we are not prepared to do any of that at this time, it's 
better to be perfectly clear about the situation then string embedders 
along thinking that they have a better solution than they actually have.


--BDS
___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2012-02-27 Thread lkcl luke
allo ben, thanks for taking this up.

On Mon, Feb 27, 2012 at 1:53 PM, Benjamin Smedberg
benja...@smedbergs.us wrote:
 On 2/25/2012 3:53 AM, luke.leigh...@gmail.com wrote:


 We never solved it fully, and each embedder has had to
       spend lots of time tweaking things.

  perhaps it might be worthwhile for the mozilla foundation to find - and
 fund - the people who _do_ understand these things, rather than totally
 abandon existing efforts and leave entire communities completely without
 support:

  http://lists.sugarlabs.org/archive/sugar-devel/2011-June/031865.html

 There is no free lunch. As I noted, finding and funding embedding support
 must necessarily come at the expense of something we could be doing instead.
 Overall I'm not saying that we don't want Mozilla to be embeddable, but that
 there are more important things to work on, both strategically and
 technically. This is not a permanent calculus, and it can change again in
 the future.

 Part of this decision is merely making clear that there hasn't been a
 community maintaining this code effectively. If you'd like to build that
 community, I encourage you to do so!

 well...  there's the problem.

 there's a community *depending* on this stuff *working*, but they are
all python programmers.  they shouldn't _have_ to learn c or c++ -
massive amounts of it.

 and, because this code doesn't actually need development - just
maintenance - there's no community to actually build!

 there's a critical CRITICAL difference between middleware and the
code that *uses* that middleware.  the maintenance and development
cycles are _completely_ different.

 * code that uses middleware requires continuous upkeep, development
etc. in order to stay relevant.  it's also orders of magnitude larger
than the middleware it uses

 * middleware does NOT require constant development.  it works or it
doesn't.  if it doesn't work, it was designed WRONG in the first
place.  middleware DOES however require maintenance to keep up-to-date
with its dependencies (mozilla-core in this case).

 ... how can a community be built around something that requires only
a tiny amount of occasional maintenance?

 ... it can't, can it?  once every year to two years, a couple of
hard-core developers get together, bash out a few updates on the
dependencies, and then go away again?  that's *not* a community, is
it, ben.

 you see what i'm getting at?

 just because xpcom (and hulahop) appear not to have an active
community does *not* mean that they are shit or unmaintained or
should be relegated to third party status or removed entirely from
the mozilla codebase.

 that's the mistake that's been made.


  no it's not.  if you have things like XPCOM which is a dynamic object
 model interface, you don't *need* binary compatibility - you just need to
 make sure that XPCOM works.

  XPCOM, which was based on (inspired by) microsoft's COM, is just as
 misunderstood, it seems, as COM is.

  the benefits of Common Object Model technology are just... i cannot
 emphasise enough how powerful they are.  this is something that the Free
 Software Community as a whole simply does NOT get, to its detriment.
  microsoft dominated computing for nearly two decades thanks to COM/DCOM.
  apple dominates its sector through Objective-C, at the heart of which is,
 yes, you guessed it: a type of Dynamic Object Model system.

 objective-c and COM are fundamentally different in how they achieve
 backwards compatibility. XPCOM working correctly will prevent you from
 crashing, but it only achieves the goal of being *compatible* if you don't
 change the interfaces.

 ah in static programming languages, yes.  in dynamic programming
languages such as python where you use the trick of lazy / dynamic
binding (based on the name) - absolutely NOT.  the changing of the
interfaces is COMPLETELY irrelevant.

 We have tried this, and it's clear that our current
 interfaces are not suited to freezing.

 ben - python doesn't *care* about the interface GUIDs, and as long as
the interfaces are designed by adding extra default arguments (rather
than changing the number or order of the arguments), python doesn't
even care if you _add_ to the interfaces.

 even if you change the type of one of the arguments from say a
nsHTMLImage to a nsHTMLElement python *still* doesn't care!

 this is really really frustrating for me to have to be explaining
this stuff because you should _know_ how it works.

 but there's more.  do you remember this bugreport?
   https://bugzilla.mozilla.org/show_bug.cgi?id=502234

 do you remember that i said that adding that optional_arg concept
was a really bad idea [instead of doing proper IDispatch (coclass)
stuff where you can merge / look up multiple COM interfaces]?

 the reason for that is clear when you look at microsoft's COM IDL
files for MSHTML.  you don't need to look at _microsoft's_ COM IDL
file(s), you can look on the Wine web site, here:

 http://source.winehq.org/source/include/mshtml.idl

 

Re: The future of binary embedding

2012-02-27 Thread lkcl luke
On Sat, Feb 25, 2012 at 4:59 PM, L. David Baron dba...@dbaron.org wrote:

 Has PyXPCOM been hooked up to the cycle collector yet, or do uses of
 APIs that depend on cycle collection just leak memory?

 david, hi, this had me thinking again.   pyxpcom was designed, eek...
a decade ago?  but i'm not sure it's entirely relevant.  the logic
goes as follows:

 * python objects (in c) have their own obj-ref count concept
 * XPCOM objects also have their own obj-ref count concept (AddRef)
which is exactly the same as COM, which inspired XPCOM.
 * when a python object corresponding to an XPCOM object is created,
python takes care of adding *one* and *only* one XPCOM object into the
c data structure, and calls AddRef *once* and *only* once.
 * also at the same time, the python object has its PyObject_Ref
increased (by one, obviously).
 * when you need that exact same XPCOM object, if mark hammond didn't
program a way to look up the python object which was *already* created
to look after it, i'll fall off my bloody chair.
 * so, assuming that mark is the competent programmer that he is, when
you look up an XPCOM object for which a python object already exists,
you DO NOT increase the refcount (AddRef) on the XPCOM object, you
increase the refcount on the *PYTHON* object.
 * when the python object's refcount goes to zero, *python's*
garbage-collection takes care of destroying the python object, and in
the destructor function (in the c-based pyxpcom module), that code
also performs an XPCOM Release call.

 so with this in mind, i do not see how the cycle collector has any
relevance, because pyxpcom is merely a direct reflector of the XPCOM
objects.  but i believe that todd would welcome some input - to todd,
who is the de-facto maintainer of pyxpcom - because he, as the
de-facto maintainer, would be the person with the most experience in
actually sorting it out.

 esp. if it's a global function that, if not called, results in XPCOM
objects not getting properly garbage-collected after the Release or
something - i don't know, because i don't know what this cycle
collector is, or what it does.

 just fyi i went through some... interesting times with webkit's
memory management.  they don't have anything like XPCOM: it's entirely
c++ classes.  a massive suite of virtual base classes that derive from
a class named DOMObject.  mostly :)

 at the ultimate lowest level they had to implement the usual type
id system which lets you externally identify an object even when it's
type-cast back down to the absolute lowest object in the hierarchy
(gobject has something similar, except they do it entirely in c!).
XPCOM and COM both have something similar, except they drop a GUID
into the type field.

 this type id allows you to *BACK*-typecast a c++ object up to its
correct (real) class!

 on top of this, they have c++ refcounting (virtual base class, again).

 as the concept of XPCOM / COM was entirely missing, they have a
templated infrastructure which allows you to map
object-of-the-bound-type to
object-of-the-webkit-type-when-typecast-down-to-the-base-class-type.

 then you have to _manually_ provide a massive suite of upcast
functions which check the type-id and call the next upcast function
in the chain, after doing a switch statement to get there!

 all this to handle the one-for-one representation between (say)
python objects and webkit's c++ objects, or gobjects and webkit's c++
objects.

 but even here, you can _still_ do and only need to do one and only
one refcount increase on a per-object basis, because once you've
gotten into the other side (the bindings), the refcounting of *that*
system takes over.

 so there are close parallels - it's still complicated as hell though :)

 anyway, do let todd know about this cycle collection because i have
no idea if he knows about it.

 l.
___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2012-02-27 Thread lkcl luke
btw, ben, about speed of using XPCOM through pyxpcom+hulahop...

when i said we don't care [because working is a higher priority than
speed, and it's a GUI anyway], i think it helps to give some context.

for the pyjs (compiled) version of any pyjamas application, the fact
that python is a dynamic language, being translated to another dynamic
language, gives a performance hit that's so high it's difficult for
people to believe it could be that bad, just to obtain python feature
interoperability.

[with the end result that they go off and implement their *own*
python-to-javascript compiler, in some cases.  this has actually
happened about four times, now!]

i spoke about this on b2g a couple of months back, when chris jones
(bless him) rather naively said that javascript was acceptable as the
de-facto language of the web implication being in absolutely all
circumstances because of projects such as dart, gwt and pyjamas.

if he'd ever run pyjs he'd've known that that simply isn't true,
because to even do something as simple as use the add operator, you
must check first if the two objects being added actually exist - which
must be done dynamically in case __getattr__ has to be used; then you
have to check the type of both objects (int? float? string?) and go
through a lookup table (!!) to find out if the two are compatible;
then you must coerce one type to the other; then _finally_ you can
actually add the two objects.

that very _very_ small and i mean small description should have you
going oops... and it should emphasise that maybe javascript as a
compiler target isn't such a good idea after all - not for dynamic
languages, anyway.

by contrast: for _static_ programming languages like java, c and c++,
it's great!

but for pyjamas, the performance hit is so high that when you run the
exact same application under pyjd it's a five-fold performance
improvement.

against that kind of background, and bearing in mind that that's still
using name-based lookups for absolutely each and every single access
to absolutely every single one of the functions, objects and
properties of DOM/HTML5, what we have right now looks very very good.

speed's *not* critical.  we're using xulrunner+xpcom+hulahop as a GUI
widget set.  a very powerful and flexible one.  pyjd doesn't have to
be lightning-quick. i've installed it on 400mhz ARM9 CPUs, and it had
perfectly acceptable performance.

l.
___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2012-02-27 Thread lkcl luke
the policy of relegating pyxpcom to third party status within the
mozilla codebase has resulted in these kinds of things, below.

you will recognise this as the consequences of a decision some time in
the past few weeks (which i wasn't party to, because i am an
outsider having no funds or time to pay 24x7 attention to each and
every decision made by the people who _are_ funded by the mozilla
foundation)

basically that decision looks like it involved deliberate splitting of
the header files into public api and not public api.

so, this header file nsIProxyObjectManager.h is treated as internal api...

... but somebody forgot that pyxpcom needs it... because they have
relegated pyxpcom to third party status.

they forgot that pyxpcom *needs* to be built as an internal
component, yet the mozilla foundation has completely failed to provide
a system for building such components, yet at the same time has
basically dumped the responsibility onto other people.

if however pyxpcom was actually part of mozilla-central, then not only
would this problem simply not be present but also it would be a damn
sight easier to find issues.

temporarily i am forced to manually seek out, copy and make available
this nsIProxyObjectManager.h file each and every damn time i do a
rebuild and reinstall of a particular version of the xulrunner
runtime.

that's incredibly tiresome and it's part of the *additional* burden
that the mozilla foundation's decisions are placing onto external
developers.

... developers that are *not* funded by the mozilla foundation, it's
worth once again pointing out.

right now i cannot agree more that the OLPC team made the right
decision to remove all mozilla-foundation-funded technology from their
machines.

l.

c++ -o _xpcom.o -c -I../../../dist/system_wrappers -include
../../../../config/gcc_hidden.h -DOSTYPE=\Linux2.6\ -DOSARCH=Linux
-DMOZ_NO_MOZALLOC -I/usr/include/python2.7
-I../../../../xpcom/src/module -I. -I../../../dist/include
-I../../../dist/include/nsprpub
-I/usr/local/lib/xulrunner-devel-13.0a1/include
-I/usr/local/lib/xulrunner-devel-13.0a1/include/nsprpub
-I/usr/include/nspr  -fPIC   -fno-rtti -fno-exceptions -Wall
-Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy
-Wno-non-virtual-dtor -Wcast-align -Wno-invalid-offsetof
-Wno-long-long -pedantic -DXULRUNNER_13_0A1 -std=gnu++0x -fshort-wchar
-fno-strict-aliasing -pipe -std=gnu++0x  -DNDEBUG -DTRIMMED -Os
-freorder-blocks -fno-reorder-functions-DMOZILLA_CLIENT -include
/usr/local/lib/xulrunner-devel-13.0a1/include/mozilla-config.h
-Wp,-MD,.deps/_xpcom.pp ../../../../xpcom/src/module/_xpcom.cpp
../../../../xpcom/src/module/_xpcom.cpp:68:35: fatal error:
nsIProxyObjectManager.h: No such file or directory
compilation terminated.
___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2012-02-26 Thread lkcl luke
david, hi,

i've got over being taken aback by what you said about the APIs thing,
and it occurred to me that if i didn't provide further information and
explanation there was the risk that people reading my comments could
potentially view the response as being from a har har i'm more
superior than you har har you're so ignorant har har you know nothing
i know everything now go away and educate yourself complete fucking
twonce (viz: a twat _and_ a nonce, rolled into one obsequious
egoistical moron whose fingers should be broken to prevent them from
being able to type on the internet, ever again).

as i'm _not_ that kind of person, it's a responsibility and a duty for
me to clarify what i said.

you said:

I think any future in our embedding API should be based around APIs
designed to be an embedding API, not around a collection of internal
functions gathered up and labeled as an API.  The problem with the
latter is that it's hard to avoid changing them, because they
weren't designed to be permanent.

the thing is: xpcom isn't an API, it's middleware which *provides*
access to APIs.  dynamically.  changes to the APIs that are reflected
*through* XPCOM automatically are available.

thus, XPCOM-the-API requires no labelling.  it just... is.  it
works, it's done.  no further development required.  that's the nature
of Common Object Models [as long as they've actually been designed
properly...]

thus also, any APIs that are *available* through XPCOM are *also* not
your problem.  they simply aren't.  they're available - transparently
- end of story.

... do you see therefore what i was driving at?

now in addition to that, there's hulahop, which is the next layer
up, and it's... if you will... grounding of both the
XPCOM-accessible NPAPI and the gecko engine into the reality of
python from a declarative programming perspective.

look closely at this:
http://pyxpcomext.mozdev.org/no_wrap/tutorials/hulahop/xpcom-hulahop.html

look first at the implementation of progresslistener.py.  what do you
notice about it?  it's nothing more than an object-orientated
wrapper, in python, around the XPCOM-accessible
nsIWebProgressListener interface, isn't it?

so there _is_ no API to be developed, here, is there?

then, come back to the main hula.py file.  what do you notice?  what
evidence of the existence of any mozilla-required APIs do you see?
what in that file requires any actual API design?  i honestly cannot
see any.

these lines, for example:
   # this is equivalent to ~/.firefox profiles subdirectory
   hulahop.startup('/home/lkcl/test')

they are absolutely essential.  there's no design required.  ok,
perhaps you might pick a different name from startup, but who
honestly cares about that?

then there's the ContentInvoker class.  this is required as part of
the XPCOM API, which is set in stone, is not going to change.  the
invocation and linking of ContentInvoker class instances is, again,
set in stone:

listener = xpcom.server.WrapObject(ContentInvoker(self),
interfaces.nsIDOMEventListener)

 so that is inviolate, as well.  no API development required.

the class Browser, which derives from the c-based python-gtk module
WebView, is where there *might* be room for API Development, but
there you're actually actively constrained by the _GTK_ API, or more
specifically by the python-gtk2 API, which defines how pygtk widget
APIs are written.

so absolutely no development of APIs is required *there*, either.

about the only function which looks slightly odd, to me, is this
do_setup function.  i don't actually know the deep compelling
technical reason why that's there, and i mention that in the tutorial.
 looking in the source code hulahop.c it's _still_ not blindingly
obvious, but i'm not going to worry about it.  the main point is: it
appears to be a techical detail associated with the fundamentals of
python c-based modules, getting over some problem/issue that the
hulahop developers created, and, again, it has absolutely nothing to
do with xulrunner APIs.

conceivably you could argue that the name of this function do_setup
could be changed, but what would be the point?

so, throughout the entire hulahop codebase there is nothing -
absolutely not one single thing - that requires designing.  the
hybrid combination of the various bits of technology *automatically*
defines the published and public API.

you create a widget, you get access to the NPAPI.  wow!  that's so
simple, it's actually difficult to make it complicated enough for
people to grasp the significance.

so do you see?  not only is there no API designing required, but there
exists proven stable code that already *implements* the
already-automatically-technically-constrained API.  code which, if
you even tried to modify it would result in yet further (and
unnecessary) knock-on effects for the users of that code in an already
untenable situation.

anyway.  i'll try tackling pyxpcom to see if i can get it

Re: The future of binary embedding

2012-02-25 Thread luke . leighton
On Monday, March 28, 2011 10:03:11 PM UTC+1, Benjamin Smedberg wrote:
 Last summer, I led a session at the Mozilla summit to discuss whether 
 and how we ought to continue supporting our various embedding efforts 
 (gtkmozembed, javaxpcom, the ActiveX control, the NSView embedding 
 widget, etc) given the effort involved in preserving their various 
 degrees of code and binary compatibility with Mozilla core. We came the 
 following conclusions:
 
 * Embedding Mozilla rendering into other processes is a tough
   problem.

 no it's not - the python-hulahop widget uses GTK just like firefox does: it 
works perfectly, and it even provides access to XPCOM so that python-xpcom can 
get hold of the NPAPI and use DOM functionality in exactly the same way that 
javascript does [when xulrunner is embedded in firefox]

 We never solved it fully, and each embedder has had to
   spend lots of time tweaking things.

 perhaps it might be worthwhile for the mozilla foundation to find - and fund - 
the people who _do_ understand these things, rather than totally abandon 
existing efforts and leave entire communities completely without support:

 http://lists.sugarlabs.org/archive/sugar-devel/2011-June/031865.html



 * Firefox is the key product of the Mozilla project; to the extent
   that supporting embedding takes away from Firefox, we should
   strongly prioritize Firefox.
 * Binary compatibility of our embedding bindings is a high cost
 
 no it's not.  if you have things like XPCOM which is a dynamic object model 
interface, you don't *need* binary compatibility - you just need to make sure 
that XPCOM works.

 XPCOM, which was based on (inspired by) microsoft's COM, is just as 
misunderstood, it seems, as COM is.

 the benefits of Common Object Model technology are just... i cannot emphasise 
enough how powerful they are.  this is something that the Free Software 
Community as a whole simply does NOT get, to its detriment.  microsoft 
dominated computing for nearly two decades thanks to COM/DCOM.  apple dominates 
its sector through Objective-C, at the heart of which is, yes, you guessed it: 
a type of Dynamic Object Model system.


   which is not worth the benefits.

 what??? completely abandoning and orphaning entire communities is seen as 
beneficial??

 * As we move Firefox into a multiple-process model, the embedding
   solution we really want is very different from the one we
   currently have: we really want embedders to be simple containers
   for a separate Firefox process which would do the actual web
   rendering.
 
 Because of this, I'm planning on making the following changes in our code:
 
 * Remove gtkmozembed and its supporting code. 
 
 that's actually very sensible.  gtkmozembed is pretty lame.  it doesn't go 
nearly far enough.  without dynamic language bindings - i.e. without access to 
what's actually *in* the web page, who the hell just wants to drop a web 
rendering engine into an application?

 you didn't go far *enough*, ben.

 people want to be able to drop in widgets into the middle of the HTML page: 
they want to be able to respond interactively to events (DOM events) - but not 
just in c, it has to happen in *all* programming languages, be it c, c++, java, 
python, ruby, perl - anything.

 now.
 
 that *is* possible with python-hulahop.

 so do you think it would be a good start for the mozilla foundation to adopt 
python-hulahop as the beginnings of reversing this trend towards isolation of 
the mozilla foundation from absolutely everything but javascript, javascript, 
javascript and firefox, firefox, firefox?

 The promise of
   gtkmozembed was a binary-compatible wrapper that GTK applications
   could use to easily get web rendering into their application.
   Without significant supporting code to deal with profiles,
   certificates, prompts, and other details, this code doesn't work
   correctly, and is unmaintained.

 hulahop manages absolutely fine.  all that's written in python.  it just 
works.  



 As a project, we aren't going to spend effort trying to solve the 
 problems associated with in-process embedding. Once separate-process 
 rendering is implemented in Firefox, we may consider ways to make really 
 simple multi-process embedding a possibility.

 it's not enough.

 you need to have the dual worlds functionality.  a foot in the embedded 
widget door *and* a foot in the DOM world, via XPCOM.

 hulahop provides exactly that.

 the problem is that because it's third party, it's absolute hell for 
non-funded part-time free software community members to keep it up-to-date, and 
the mozilla-foundation-driven release cycle does *not* include hulahop, meaning 
that releases like xulrunner 10.0.2 go out the door with serious memory 
corruption problems that, more by luck than judgement, happen *not* to be hit 
by firefox... but that hulahop runs smack into with a segfault.

 what is the mozilla 

Re: The future of binary embedding

2012-02-25 Thread luke . leighton
ben, there's a line of questioning that i'd like to engage you on.

please could you review the pyjd/mshtml.py code, which you can find here:
http://pyjs.org/pygit/ 

the first question is this: how the heck is it possible that i could create, in 
under 3 weeks, an entire port of pyjamas-desktop to use the MSHTML IE engine, 
*without* requiring access to the proprietary MSHTML Trident Engine?

and, how come that pyjd MSHTML port works, without fail, utterly flawlessly, 
with the exact same MSHTML engine from IE6, IE7, IE8 _and_ IE9, and i have 
reasonable confidence that it will continue to work without fail, without 
modifications required, on *all* future versions of the MSHTML Trident Engine.

the key question is this: what is it about the microsoft technology that makes 
this possible?  this is not a rhetorical question.  this is not a sarcastic 
question.  i genuinely require that you actually think, ben, and find out the 
answer (hint: you already implement one.  or used to.  until it was pulled).

and if microsoft can do it, why can't the mozilla foundation?

more questions once you've answered the key question.

l.
___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2012-02-25 Thread lkcl luke
On Sat, Feb 25, 2012 at 4:59 PM, L. David Baron dba...@dbaron.org wrote:
 On Saturday 2012-02-25 00:53 -0800, luke.leigh...@gmail.com wrote:
 On Monday, March 28, 2011 10:03:11 PM UTC+1, Benjamin Smedberg wrote:
      * Embedding Mozilla rendering into other processes is a tough
        problem.

  no it's not - the python-hulahop widget uses GTK just like
  firefox does: it works perfectly, and it even provides access to
  XPCOM so that python-xpcom can get hold of the NPAPI and use DOM
  functionality in exactly the same way that javascript does [when
  xulrunner is embedded in firefox]

 Has PyXPCOM been hooked up to the cycle collector yet, or do uses of
 APIs that depend on cycle collection just leak memory?

 david, thank you for responding on this.

 ... now, you see... this kind of information is entirely missing -
and it's the relegation of pyxpcom to third party status within
mozilla's project management - i.e. its removal from mozilla-central -
that results in things like that massive PRBool-bool substitution,
and other straightforward maintenance, being entirely missed.

 so the code is just left to rot, or is left to someone who really
doesn't have the time or resources to focus 100% on keeping absolutely
without fail without exception absolutely 100% up-to-date with every
single one of the advances and modifications made to the mozilla core
codebase such that they even *know* about things like the cycle
collector.

 now, as it's a small codebase, i'm certain that someone who *does*
know about this cycle collector, or any other code modifications,
could probably bring pyxpcom up-to-date prior to each xulrunner stable
release in very short order, especially when working alongside someone
like todd who is familiar with the code.

 ... but the fact that nobody has even bothered, and has pretty much
abandoned the code, leaves it as worse than useless, and a massive
drain on the time and resources of the free software community, who
have to learn or re-learn about each and every single API change,
each and every single mozilla core codebase change each and every
monotonous time *right* before a release.

 that's massively unfair to expect members of the free software community to do.

 hence why i have requested - formally on mozilla.governance - for
advice on how to go about making a formal request that the mozilla
foundation a) adopt python-hulahop as a 1st level priority project b)
reinstate pyxpcom as a 1st level priority project - preferably *back*
into mozilla-central. c) introduce unit tests that, if not passed,
will block the release of *any* xulrunner release at the time until
such time as the bugs are fixed and the unit tests pass.

 the end result will actually be an *improvement* in the quality of
the xulrunner and the firefox codebase because it will result in a
different kind of testing - from a different angle with different
code-paths of the exact same core components that are utilised in
firefox.

do you happen to know to whom such formal requests should be directed?

many thanks,

l.
___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2012-02-25 Thread L. David Baron
On Saturday 2012-02-25 19:38 +, lkcl luke wrote:
  now, as it's a small codebase, i'm certain that someone who *does*
 know about this cycle collector, or any other code modifications,
 could probably bring pyxpcom up-to-date prior to each xulrunner stable
 release in very short order, especially when working alongside someone
 like todd who is familiar with the code.

It's not.  It's a massive task.  (I'd guess it's roughly equivalent
in complexity to everything else in PyXPCOM.  That is, I'd guess
that this would be about half the work of writing PyXPCOM from
scratch with it included.  That's a very rough guess, though.)

  ... but the fact that nobody has even bothered, and has pretty much
 abandoned the code, leaves it as worse than useless, and a massive
 drain on the time and resources of the free software community, who
 have to learn or re-learn about each and every single API change,
 each and every single mozilla core codebase change each and every
 monotonous time *right* before a release.
 
  that's massively unfair to expect members of the free software
  community to do.

Why do you consider Mozilla employees different from other members
of the software community?  Mozilla is paying its employees to be
members of the community -- and to perform the tasks where they'd
most effectively advance Mozilla's mission
( http://www.mozilla.org/about/manifesto.en.html ).  There are other
companies who pay people to work on Mozilla code (e.g., in the area
of embedding, a number of Linux distributors have at various times).

  hence why i have requested - formally on mozilla.governance - for
 advice on how to go about making a formal request that the mozilla
 foundation a) adopt python-hulahop as a 1st level priority project b)
 reinstate pyxpcom as a 1st level priority project - preferably *back*
 into mozilla-central. c) introduce unit tests that, if not passed,
 will block the release of *any* xulrunner release at the time until
 such time as the bugs are fixed and the unit tests pass.

Demanding that somebody else do work for you doesn't seem like an
approach likely to succeed.

  the end result will actually be an *improvement* in the quality of
 the xulrunner and the firefox codebase because it will result in a
 different kind of testing - from a different angle with different
 code-paths of the exact same core components that are utilised in
 firefox.

That's at least a more reasonable argument.  I don't believe it,
though.

I think any future in our embedding API should be based around APIs
designed to be an embedding API, not around a collection of internal
functions gathered up and labeled as an API.  The problem with the
latter is that it's hard to avoid changing them, because they
weren't designed to be permanent.  You're not going to turn the
latter into the former by shaking bugs out through additional
testing.

-David

-- 
턞   L. David Baron http://dbaron.org/   턂
턢   Mozilla   http://www.mozilla.org/   턂
___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2011-05-16 Thread Joffrey
Hello,



Would this terminate embedding gecko in WinEmbed at
/mozilla-central/embedding/tests/winEmbed

(I would like to use embedding technology in JAVA JNI Applet)

Thanks for your answer,
Joffrey
___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2011-04-18 Thread Mark Finkle
Your post brings up a few of the reasons why maintaining an embedding
solution is not high on Mozilla's priority list. Embedders each have a
different set of problems they are trying to solve and making a
modular library stack might be the best way to serve those needs.

However, making a modular library stack is exactly what Mozilla does
not want to do, since this is exactly not the problem we are trying to
solve. Mozilla wants to make products using the simplest, best
methods. Methods that result in the best codesize and performance.

One approach Benjamin and others have talked about is trying to find
an embedding solution that very closely follows the approach Mozilla
takes to building products.  Firefox Mobile uses an out-of-process
system for rendering web content. The main UI process spawns a
separate child process and communicates with that process. User input
(mouse and keyboard) are sent to the child process and the web content
is rendered to shared image buffers which is then displayed in the
parent.

The child process doesn't even need a profile folder, one of the big
gripes with the current embedding solutions.

Would it be possible to create a generic, embedded system to allow a
3rd party application to spawn the child process and display the out-
of-process web content? Probably. There are a lot of unknowns and we
are still working the kinks out of the system.

The biggest advantage to this kind of solution is that it's aligned
with how Mozilla is shipping it's own products. Desktop Firefox is
moving to the same out-of-process system. There would be a large
overlap between Mozilla code and the embedding code.

On Apr 6, 8:02 am, g...@novadsp.com g...@novadsp.com wrote:
 Some thoughts on this ...
___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2011-04-08 Thread sdenning
On Thursday, April 7, 2011 10:54:13 PM UTC, Benjamin Smedberg wrote:
 On 4/7/11 3:42 PM, sdenning wrote:
  4) Even if we do not use gtkmozembed directly, are there other components 
  that will be affected?  Specifically, will there be an impact to programs 
  like the wxEmbed test driver:  mozilla/embedding/tests/wxEmbed/
 I don't think that code is built, and will likely be removed also.

It doesn't get built automatically, but it does serve as a good sample program 
and in a xulrunner-1.9.0.6 distribution I was able to build it.  I guess my 
concern is whether the APIs a wx-based C++ embedded app would be affected with 
the removal of gtkmozembed.  It seems like gtkmozembed was just the embedding 
of low-level gtk, where embedded applications that use wx (wrapper for gtk) 
would be unaffected?

___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2011-04-08 Thread Grant Gayed
Actually Eclipse uses XPCOM to embed xulrunner, and exposes JavaXPCOM to 
clients.  So the second part is of course dependent on JavaXPCOM's fate, but 
the embedding part could continue on without JavaXPCOM.

Grant


Benjamin Smedberg benja...@smedbergs.us wrote in message 
news:mailman.1997.1302204651.16651.dev-embedd...@lists.mozilla.org...
 On 4/7/11 9:41 AM, CMB wrote:
 Would this terminate embedding gecko in IDE's (ex eclipse), TopStyle 
 ecc.?
 Eclipse uses javaxpcom to do embedding. If somebody wishes to maintain 
 that code, they may continue to do so, but it will not be built into 
 XULRunner or available in the main mozilla codebase.

 --BDS
 


___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2011-04-07 Thread sdenning
Benjamin, 

1) I'm unclear of the impacts of removing gtkmozembed.  Can you please clarify 
which APIs and functionality will be impacted?  For example, will 
XRE_InitEmbedding go away with these near-term changes?

2) I too rebuild mozilla for a special xulrunner application that plays nicely 
with legacy gtk+/wx applications to provide an embedded browser.  However, I 
utilize a wrapper for my access - wxWebConnect which is supported by Kirix:

http://www.kirix.com/labs/wxwebconnect.html

Will the changes you identify here impact that project and the apis/utilities 
they use?

3) What is the timeframe for these changes?

Thanks,
Susan
___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2011-04-07 Thread CMB
Would this terminate embedding gecko in IDE's (ex eclipse), TopStyle ecc.?
___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2011-04-07 Thread Benjamin Smedberg

On 4/7/11 9:41 AM, CMB wrote:

Would this terminate embedding gecko in IDE's (ex eclipse), TopStyle ecc.?
Eclipse uses javaxpcom to do embedding. If somebody wishes to maintain 
that code, they may continue to do so, but it will not be built into 
XULRunner or available in the main mozilla codebase.


--BDS

___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2011-04-07 Thread Benjamin Smedberg

On 4/7/11 9:29 AM, sdenn...@rocketmail.com wrote:

Benjamin,

1) I'm unclear of the impacts of removing gtkmozembed.  Can you please clarify 
which APIs and functionality will be impacted?  For example, will 
XRE_InitEmbedding go away with these near-term changes?
gtkmozembed is the code in embedding/browser/gtk and primarily the 
functions in gtkmozembed.h. XRE_InitEmbedding is not affected.

2) I too rebuild mozilla for a special xulrunner application that plays nicely 
with legacy gtk+/wx applications to provide an embedded browser.  However, I 
utilize a wrapper for my access - wxWebConnect which is supported by Kirix:

http://www.kirix.com/labs/wxwebconnect.html

Will the changes you identify here impact that project and the apis/utilities 
they use?
I don't know, that depends on how they do their embedding. But of 
course, if they use gtkmozembed, they can import that code and continue 
to use and maintain it.

3) What is the timeframe for these changes?

Immediately for Firefox 5.

--BDS

___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2011-04-07 Thread sdenning
Thank you so much for the response!

4) Even if we do not use gtkmozembed directly, are there other components that 
will be affected?  Specifically, will there be an impact to programs like the 
wxEmbed test driver:  mozilla/embedding/tests/wxEmbed/

5) Without javaxpcom, would there still be access to XPCOM objects via 
javascript?

Thanks!
Susan
___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2011-04-06 Thread Benjmain Smedberg

 On 4/4/11 9:02 AM, Glen Gray wrote:


I'll need to know what my options are going forward and how we will be able to 
control the browsers functionality (custom uri's trigger application launching, 
restricted access to uri's based on users credits etc.).

Do I focus on using a swapping out GtkMozEmbed for a webkit browser or come up 
with something different.
That is of course up to you. You could continue to maintain and use 
gtkmozembed yourself, or in combination with other people who want to 
try and maintain that code. You could switch to writing your kiosk as a 
XULRunner app, or you could attempt to switch to webkit (plus all the 
other libraries webkit requires, such as networking etc).

What is the current status as regards xulrunner 2.0 ?
This announcement has nothing to do with XULRunner 2.0. It does mean 
that the next following XULRunner will not contain gtkmozembed or the 
ActiveX control code.


--BDS

___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2011-04-06 Thread Ami Ganguli
On Wed, Apr 6, 2011 at 8:19 AM, Asa Dotzler a...@mozilla.com wrote:
 You seem to have missed the part where I pointed out Benjamen's call for
 those interested in helping make a simple multi-process embedding story
 happen.

 Then again, those who will do nothing more to make it happen than hope for
 it are probably wise to look to other solutions.

I didn't miss it.  But I imagine that most people who would hope for
this are in a similar situation to me.

I can invest a small amount of time, but not enough to get over the
initial barrier needed to get started.  It starts with the fact that
the documentation appears to be ancient.  What documentation there is
is a bit off-putting - do I really need all of that stuff if my
use-case is just to render some HTML+CSS to an off-screen buffer?

The other avenues for getting involved in Mozilla offer baby-steps to
getting involved.  You can learn a lot of the front-end, for example,
but starting out writing a plug-in.  As near as I can tell, there are
no baby steps to getting involved in Gecko embedding.

Since I don't have the time to invest several months wading through
the source code and trying to figure out which documentation still
applies, I don't see any realistic way to contribute.

I am willing to give a couple of hundred Euros to Mozilla to
contribute towards a summer student, working with the support and
mentorship of some Mozilla people, to improve the documentation. I bet
others would too if you set up a donations page.

Cheers,
Ami.
___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2011-04-06 Thread g...@novadsp.com

Some thoughts on this ...

 At least this gives those of us who were hoping for a nice

embedding story for Gecko a chance for a clean break, so my
commendations to the Mozilla team for providing clarity on the issue.


'embedding' covers a vast swathe of territory. It is relatively simple 
to embed Firefox in an application. It is nigh on impossible to embed 
(say) the SVG rendering system in an application, as it has dependencies 
on ... almost everything. Firefox was designed to be a standalone 
browser and not a collection of components that are easily plugged and 
played.


As far as other browsers are concerned (Webkit/Chromium), they too 
suffer from gigantism and interdependency. Webkit is extremely difficult 
to 'embed' as the trunk relies on proprietary runtimes 
(CF/Quartz/Quicktime). There is an OpenCF/Curl/Cairo route but this is 
still (I believe) some way off oven-ready.


The Chromium team have done an amazing job in integrating alternatives 
in Webkit but at an enormous cost. The current Chromium 'all' 'solution' 
(in Visual Studio terms) contains around 500 sub-projects. Little wonder 
the only people with the resources to do it are Google.


There is actually a Chrome embedding project but this relies on patching 
a good number of sources and cannot be applied cleanly to any arbitrary 
release.


Coming back to Firefox and the future, I believe that a good target 
would be a Firefox configuration that had no runtime dependencies on 
'chrome' and configuration files etc, i.e. reduced to an absolutely 
minimal set of dynamically linked libraries. Hook all config/runtime 
stuff so the embedding host can supply it in a format and from a 
location that makes sense in the deployment environment. Extend and 
expose functionality to make it trivial to run headless.


In an ideal world the minimal DLL set could be built and linked as a 
static library, which would be useful on smaller machines - think 
ucLinux and non-MMU processors. This implies having a build system that 
feeds off trunk but provides a greater degree of flexibility. I'd want 
to have the option to use static C/C++ runtimes as well.


The acid test for success would be to be able to deploy a single binary 
that could display web resources, interactively or otherwise.


Note that the above applies to my current use case, which is embedding 
in an existing Windows desktop app where HTML/SVG flexibility and 
interactivity are a major boost. However, an embedding project would 
probably want to support managed code too, be it C# or Python.


I think we could dispense with activex/flash plugin support.

All of this has to be done in a non-invasive way that takes full 
advantage of Mozilla's hard work in testing, and verifying both quality 
and adherence to standards.


I think this beyond the resources of a SOC project. Personally, given 
the provision of an adequate wage, I'd love to have a crack at this. I'm 
open to offers :)


Finally, my thanks too to the Firefox team. Amazing work and a great 
product.


ATB

Jerry.


___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2011-04-06 Thread Martin Lutken
Yes I agree. And would also happily donate to the embedding
maintenance.
Could also help out myself, but have same concerns as described in the
previous post.

Actually I am investigating a crashbug which seems to have been
introduced between FF4 beta 6 and FF4 beta 7. The crash happens within
my embedded application ( wxWidgets ). I guess that will bring me some
more insight to the code and to mercurial, since I guess I need to do
bisection in Mercurial between the dates for those 2 releases trying
to figure out where the crash happens.

But I hear that XulRunner will still be supported, so perhaps I should
just switch to that. I have very limited GUI implemented so far and as
long as I can link in the PHP (Zend engine) runtime via plugin/
XulRunner something I might be fine.

But still if you can find a student I would happily donate money.

-Martin Lütken
___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2011-04-05 Thread Ami Ganguli
On Wed, Apr 6, 2011 at 12:31 AM, Asa Dotzler a...@mozilla.com wrote:
 No, that is not the question. There is no question about caring here and
 it's both rude an insulting to phrase it that way.

I think it's a legitimate question.  Maybe the thing is to phrase it
differently:

  is embedding by third parties considered strategic enough to
Mozilla's mission for it to invest its limited resources in it?

I've wanted to use Gecko for embedding various times and ended up
having to give up due to my own time constraints.  There always ends
up being some barrier to making it work that would take more time to
solve than whatever project I'm working on will allow.

I'd be interested in contributing back in principle, but first I have
to become a user, and the barriers to that are currently very high.
Especially given the existence of WebKit (which also has its problems,
so it's not like there isn't a niche available for a really nice
embedding solution).

My opinion is that having a richer embedding ecosystem around Gecko
would help bring in more contributors long-term and be a real boost to
all the projects that rely on Gecko, Firefox included.  But that would
require more investment by Mozilla in make Gecko an attractive
embedding solution to begin with.

It's a catch-22 that can only be solved by somebody committing
significant resources to the problem.  More resources than an
individual embedder can afford.  I think Mozilla is the only party
that can get the ball rolling.

Cheers,
Ami.
___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2011-04-05 Thread Asa Dotzler

On 4/5/2011 8:22 PM, Ami Ganguli wrote:

On Wed, Apr 6, 2011 at 12:31 AM, Asa Dotzlera...@mozilla.com  wrote:

No, that is not the question. There is no question about caring here and
it's both rude an insulting to phrase it that way.


I think it's a legitimate question.  Maybe the thing is to phrase it
differently:

   is embedding by third parties considered strategic enough to
Mozilla's mission for it to invest its limited resources in it?


Perhaps read the original post again?

I'll try to tl;dr it.

The person who leads the Mozilla project's embedding effort, Benjamin 
Smedberg, does not think that in-process embedding capabilities, 
including the current gtkmozembed, javaxpcom, and ActiveX work, are 
strategic enough to Mozilla's mission for *anyone* to invest resources 
there. The existing implementations are not only not strategic, they are 
incomplete, problematic, and their maintenance costs far outweigh any 
benefits so they are being removed from the Mozilla code repository.


Benjamin then goes on to say that after separate-process rendering is 
implemented for Firefox


 we may consider ways to make really simple multi-process embedding
 a possibility. If you are interested in helping to begin
 implementation of this multiprocess embedding solution, please let
 me know, and I will help guide you in the right direction.

So, if you care about a possible future multi-process embedding 
implementation, and you're willing to help or can find others who are, 
you may be able to get some help from Mozilla in making that a reality



My opinion is that having a richer embedding ecosystem around Gecko
would help bring in more contributors long-term and be a real boost to
all the projects that rely on Gecko, Firefox included.  But that would
require more investment by Mozilla in make Gecko an attractive
embedding solution to begin with.


Speaking for myself only here, I've heard this from many people for many 
many years and I don't really believe it's the obvious win you and 
others think it would be.


There's no free lunch and any efforts around building a better embedding 
solution and an embedding ecosystem have to come from other projects. I 
can think of several technical undertakings that, in my opinion, would 
do far more to help bring in contributors and make Gecko better than 
spending more efforts on embedding.


- A
___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2011-04-05 Thread Ami Ganguli
On Wed, Apr 6, 2011 at 7:45 AM, Asa Dotzler a...@mozilla.com wrote:
 There's no free lunch and any efforts around building a better embedding
 solution and an embedding ecosystem have to come from other projects. I can
 think of several technical undertakings that, in my opinion, would do far
 more to help bring in contributors and make Gecko better than spending more
 efforts on embedding.

Fair enough.  I disagree, but I'm not in a position to do much about
it.  At least this gives those of us who were hoping for a nice
embedding story for Gecko a chance for a clean break, so my
commendations to the Mozilla team for providing clarity on the issue.

Cheers,
Ami.
___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2011-04-04 Thread Antonio Gomes
The question is: does mozilla care about stuff other than their products at
this point?


-- 
--Antonio Gomes
___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding


Re: The future of binary embedding

2011-04-02 Thread Martin Lutken
I would like to know that too.
I don't use gtkmozembed or other stuff. I also don't need binary
compatibility since I compile Mozilla myself.
But does this mean that in the future I will not be able to embed
Mozilla in my own application using the functions 'XRE_InitEmbedding2'
and similar ?

If not will there be other ways to achive the same? Apart from
switching to Webkit that is.

-Martin
___
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding