Hello:

PCman: I could help you to compile MoonLightDE just tell me what's
wrong. Right now I'm reworking the core in order to make it more
friendly with the lxde technologies, I also have in mind to rebase our
modules to the lxqt applications so we will be able to exchange patches.


About the C++ Micro Services library, it is used mainly to communicate
the components. At the beginning of my research I was implementing a
traditional Qt plug-in system but i found that this approach doesn't
takes care of the communication between plug-ins and also doesn't offer
a proper tracking system.

In examples to be more explicit:
- In the traditional approach is easy to communicate a plug-in with the
main application but, how do you communicate two plug-is? You will need
a registry of the instances provided by the plug-ins and the interfaces
that they implements, and this is precisely one of the things that C++
Micro Services does. It uses the concept of service which is formed by
an object, an interface and a set of properties used to describe the
service. Whit this element you can found objects created by other
modules in a simple manner.

- But what happens when a module is unloaded or an object created by it
is destroyed? With the Qt approach this will result in an segmentation
fault or an null pointer exception when a module that uses the
functionalities provided by other tries to use it. Whit Cpp Micro
Services you can avoid this kind of failures by using the services
trackers, this constructs keeps you updated with the state of a services
so if it goes out of memory you will noticed.

As you can see Cpp Micro Services is needed in order to keep our
software robust and avoid the problems that brings using modules (plug-ins).

About the forking, i think it is a good idea in order to keep the
compatibility between the two approaches.

Best
Alexis López Zubieta
MoonLight Development Team
University of Informatics Sciences

El 08/07/14 04:59, PCMan escribió:
> Some updates.
> Instead of doing some experiment, I tried to test MoonLightDE since it
> did quite similar things.
> However, I failed to get all of the components compiled correctly.
> I'll try to fix them when I have time to see how it performs.
> After a quick skim of the source code of MoonLightDE, I noticed that
> it makes extensive use of C++ Micro Services library
> (CppMicroService). Alexis, what's the benefit of using that? I found
> it a little bit more complicated than needed?
> I have another thought about the module architecture.
> We can make them modules while retaining the stability of the original
> multi-process architecture.
> Just do "fork()" from the main process before loading the module, and
> the components can be run in different processes, just like they're
> now. So the crash of one component does not affect the other one.
> This is actually what kdeinit process does.
> If we add an option to turn off the "fork()" call, then all components
> can run in the same process.
> So we can switch between single process and multi-process
> architectures on-the-fly with an runtime option.
> Forking different components form the same core process is totally
> different from launching different binaries.
> When all of the components are forked from the same process,
> relocation of dynamic libraries only happen "once" and this is exactly
> how kdeinit speed up startup of KDE.
> With this, we can solve three problems with the same solution.
> 1. speed up startup but keep current multi-process architecture (by
> forking from the main process)
> 2. optional support of a single-process architecture with the same
> code base (even more speed up and resource sharing)
> 3. Sharing code with MoonLightDE becomes even easier (actually, we
> even share the same goal if we do this)
> 
> Users and developers who don't want a single-process mode can keep
> using multiple process, and still benefit from a faster startup due to
> kdeinit-like design.
> Users who have limited resource can turn on the experimental
> "single-process" option and avoid the fork() call. All modules then
> stay in the same process.
> What about the new proposal?
> 
> Cheers!
> 




Attachment: signature.asc
Description: OpenPGP digital signature

------------------------------------------------------------------------------
Open source business process management suite built on Java and Eclipse
Turn processes into business applications with Bonita BPM Community Edition
Quickly connect people, data, and systems into organized workflows
Winner of BOSSIE, CODIE, OW2 and Gartner awards
http://p.sf.net/sfu/Bonitasoft
_______________________________________________
Lxde-list mailing list
Lxde-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxde-list

Reply via email to