<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.linuxmce.org/index.php?action=history&amp;feed=atom&amp;title=Overview_of_the_software_modules</id>
	<title>Overview of the software modules - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.linuxmce.org/index.php?action=history&amp;feed=atom&amp;title=Overview_of_the_software_modules"/>
	<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Overview_of_the_software_modules&amp;action=history"/>
	<updated>2026-07-21T20:52:51Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Overview_of_the_software_modules&amp;diff=23800&amp;oldid=prev</id>
		<title>Marie.o at 20:25, 17 May 2010</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Overview_of_the_software_modules&amp;diff=23800&amp;oldid=prev"/>
		<updated>2010-05-17T20:25:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:25, 17 May 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: Programmer&amp;#039;s Guide]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: Programmer&amp;#039;s Guide]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;&lt;/del&gt;[[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE &lt;/del&gt;Libraries &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;DCE&lt;/del&gt;]] section explains this process in detail.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/p&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;DCE &lt;/ins&gt;Libraries]] section explains this process in detail.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;&lt;/del&gt;[[DCE Router]].  When a DCE Device connects, DCERouter gives it its configuration data and is responsible for receiving and forwarding any messages to and from the devices that connect to it.  The most common types of messages are commands and events.  All communication goes through DCE Router.  If a doorbell device fires an event that the button was pushed, that event goes to DCERouter, which will forward it whatever plug-in has indicated it wants to handle that type of event.  If the plug-in then wants to send a command to the media player, this command goes first to the DCE Router, which will then forward it to the media player.  The DCE Devices never communicate with each other directly--everything goes through DCE Router.  Devices can create their own types of messages specific to them--not just commands and events.  For example, a DVD player may send a message that contains a screen capture, or a TV program may send a stream of messages with streaming video.  To DCE Router it makes no difference.  Messages just have sources and destinations, and DCE Router does not care what type of message it is.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/p&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;&lt;/del&gt;DCERouter also allows you to [[Message Interceptors]].  This means a device or plugin can say that it wants to pre-process all messages that meet a certain criteria.  For example, a security plug-in may want to see all events relating to security.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/p&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[DCE Router]].  When a DCE Device connects, DCERouter gives it its configuration data and is responsible for receiving and forwarding any messages to and from the devices that connect to it.  The most common types of messages are commands and events.  All communication goes through DCE Router.  If a doorbell device fires an event that the button was pushed, that event goes to DCERouter, which will forward it whatever plug-in has indicated it wants to handle that type of event.  If the plug-in then wants to send a command to the media player, this command goes first to the DCE Router, which will then forward it to the media player.  The DCE Devices never communicate with each other directly--everything goes through DCE Router.  Devices can create their own types of messages specific to them--not just commands and events.  For example, a DVD player may send a message that contains a screen capture, or a TV program may send a stream of messages with streaming video.  To DCE Router it makes no difference.  Messages just have sources and destinations, and DCE Router does not care what type of message it is.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;&lt;/del&gt;Plug-ins are DCE Devices that run within the DCERouter&#039;s memory space.  They are DCE Devices just like any other, and they are created like any other DCE Device.  The code is the same, it&#039;s just a compilation option whether the device is built as a normal DCE Device, which runs in its own memory space and communicates with DCERouter over a socket, or if it&#039;s a plug-in which gets loaded into DCERouter&#039;s memory space.  Plug-ins have the ability to get pointers to the in-memory instance of the other plug-ins so they can share memory and call each others methods.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/p&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;&lt;/del&gt;The [[Orbiter]] library.  When the user presses a button on the phone, Bluetooth Dongle forwards this to the embedded Orbiter which treats it just like any other input.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/p&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;DCERouter also allows you to [[Message Interceptors]].  This means a device or plugin can say that it wants to pre-process all messages that meet a certain criteria.  For example, a security plug-in may want to see all events relating to security.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;&lt;/del&gt;The user interface for both the stand-alone Orbiters and the embedded Orbiters for mobile phones is stored in the same [[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE_main &lt;/del&gt;database]] does the pre-rendering.  It determines what the user interface needs to include based on settings in the database, such as the type of Orbiter, the skin, language options, and so on.  It then pre-renders embedded graphics and text, and creates a simple input file for the Orbiter which contains that Orbiter&#039;s particular UI.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/p&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;&lt;/del&gt;Because LinuxMCE is so database intensive and absolutely everything is stored in the LinuxMCE-main database, we needed a tool to handle synchronizing database changes.  [[sqlCVS]] is for a SQL database what CVS is for source code.  It&#039;s actually a general-purpose tool and can be used for any database.  Nothing in it is specific to LinuxMCE.  It allows a user to checkout a local working copy of the database and make their local changes.  The user can then check-in those changes, or update his local copy with the changes from others.  Like CVS it supports forking and merging, and you can extract snapshots of the database at any given time.  It also tracks which users own which records and prevents unauthorized changes to the database.  Commits are atomic, so you can undo a check-in that a user made at any time.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/p&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Plug-ins are DCE Devices that run within the DCERouter&#039;s memory space.  They are DCE Devices just like any other, and they are created like any other DCE Device.  The code is the same, it&#039;s just a compilation option whether the device is built as a normal DCE Device, which runs in its own memory space and communicates with DCERouter over a socket, or if it&#039;s a plug-in which gets loaded into DCERouter&#039;s memory space.  Plug-ins have the ability to get pointers to the in-memory instance of the other plug-ins so they can share memory and call each others methods.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;&lt;/del&gt;LinuxMCE also needed a general purpose class generator that makes it very easy to work with a relational database in an object-oriented manner.  [[sql2cpp]] analyzes a database, determines foreign keys and relationships, and builds a complete class structure to represent the database.  The programmer can traverse relationships across multiple tables with 1 line of code.  It completely eliminates the need to write SQL statements.  And if the database schema changes, it will change the class structure so any code that relies on outdated schema will no longer compile, making it much easier to keep the code current. This is also a general-purpose tool that is not specific to LinuxMCE.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/p&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;&lt;/del&gt;The &quot;Kick-Start&quot; project is a collection of scripts and utilities to install LinuxMCE on a variety of operating systems and platforms.  It contains information about what software depends on other software, and where to locate each piece of software on each platform.  Since the database information is general purpose, it can be reused by other unrelated projects as well.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/p&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The [[Orbiter]] library.  When the user presses a button on the phone, Bluetooth Dongle forwards this to the embedded Orbiter which treats it just like any other input.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;&lt;/del&gt;There are also a collection of [[LinuxMCE Scripts]].&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/p&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;LinuxMCE &lt;/del&gt;specifically decided to sacrifice revenues from software sales, focusing its sales efforts exclusively on embedded solutions, so that it could work more closely with the open source community and develop a general-purpose platform that makes it very easy for programmers to build upon.  LinuxMCE is happy to assist any programmers to want to build DCE wrappers for their existing projects, or make new additions to LinuxMCE.  You can email the administrator responsible for the project you are interested in, or click &quot;Live Support&quot; to get instant help at any time.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/p&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The user interface for both the stand-alone Orbiters and the embedded Orbiters for mobile phones is stored in the same [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pluto_main &lt;/ins&gt;database]] does the pre-rendering.  It determines what the user interface needs to include based on settings in the database, such as the type of Orbiter, the skin, language options, and so on.  It then pre-renders embedded graphics and text, and creates a simple input file for the Orbiter which contains that Orbiter&#039;s particular UI.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Because LinuxMCE is so database intensive and absolutely everything is stored in the LinuxMCE-main database, we needed a tool to handle synchronizing database changes.  [[sqlCVS]] is for a SQL database what CVS is for source code.  It&#039;s actually a general-purpose tool and can be used for any database.  Nothing in it is specific to LinuxMCE.  It allows a user to checkout a local working copy of the database and make their local changes.  The user can then check-in those changes, or update his local copy with the changes from others.  Like CVS it supports forking and merging, and you can extract snapshots of the database at any given time.  It also tracks which users own which records and prevents unauthorized changes to the database.  Commits are atomic, so you can undo a check-in that a user made at any time.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;LinuxMCE also needed a general purpose class generator that makes it very easy to work with a relational database in an object-oriented manner.  [[sql2cpp]] analyzes a database, determines foreign keys and relationships, and builds a complete class structure to represent the database.  The programmer can traverse relationships across multiple tables with 1 line of code.  It completely eliminates the need to write SQL statements.  And if the database schema changes, it will change the class structure so any code that relies on outdated schema will no longer compile, making it much easier to keep the code current. This is also a general-purpose tool that is not specific to LinuxMCE.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &quot;Kick-Start&quot; project is a collection of scripts and utilities to install LinuxMCE on a variety of operating systems and platforms.  It contains information about what software depends on other software, and where to locate each piece of software on each platform.  Since the database information is general purpose, it can be reused by other unrelated projects as well.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;There are also a collection of [[LinuxMCE Scripts]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;PlutoHome &lt;/ins&gt;specifically decided to sacrifice revenues from software sales, focusing its sales efforts exclusively on embedded solutions, so that it could work more closely with the open source community and develop a general-purpose platform that makes it very easy for programmers to build upon.  LinuxMCE is happy to assist any programmers to want to build DCE wrappers for their existing projects, or make new additions to LinuxMCE.  You can email the administrator responsible for the project you are interested in, or click &quot;Live Support&quot; to get instant help at any time.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;index.php?section=modules&amp;amp;package=0 for a complete list of all the software that makes up LinuxMCE.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;index.php?section=modules&amp;amp;package=0 for a complete list of all the software that makes up LinuxMCE.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Marie.o</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Overview_of_the_software_modules&amp;diff=3571&amp;oldid=prev</id>
		<title>Jerry finn at 09:21, 19 March 2007</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Overview_of_the_software_modules&amp;diff=3571&amp;oldid=prev"/>
		<updated>2007-03-19T09:21:37Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 09:21, 19 March 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;table width=&quot;100%&quot;&amp;gt; &amp;lt;tr&amp;gt;&amp;lt;td bgcolor=&quot;#FFCFCF&quot;&amp;gt;This page was written by Pluto and imported with their permission when LinuxMCE branched off in February, 2007.  In general any information should apply to LinuxMCE.  However, this page should be edited to reflect changes to LinuxMCE and remove old references to Pluto.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt; &amp;lt;/table&amp;gt;&lt;/del&gt;[[Category: Programmer&#039;s Guide]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: Programmer&#039;s Guide]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;[[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pluto &lt;/del&gt;Libraries DCE]] section explains this process in detail.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;[[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE &lt;/ins&gt;Libraries DCE]] section explains this process in detail.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;[[DCE Router]].  When a DCE Device connects, DCERouter gives it its configuration data and is responsible for receiving and forwarding any messages to and from the devices that connect to it.  The most common types of messages are commands and events.  All communication goes through DCE Router.  If a doorbell device fires an event that the button was pushed, that event goes to DCERouter, which will forward it whatever plug-in has indicated it wants to handle that type of event.  If the plug-in then wants to send a command to the media player, this command goes first to the DCE Router, which will then forward it to the media player.  The DCE Devices never communicate with each other directly--everything goes through DCE Router.  Devices can create their own types of messages specific to them--not just commands and events.  For example, a DVD player may send a message that contains a screen capture, or a TV program may send a stream of messages with streaming video.  To DCE Router it makes no difference.  Messages just have sources and destinations, and DCE Router does not care what type of message it is.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;[[DCE Router]].  When a DCE Device connects, DCERouter gives it its configuration data and is responsible for receiving and forwarding any messages to and from the devices that connect to it.  The most common types of messages are commands and events.  All communication goes through DCE Router.  If a doorbell device fires an event that the button was pushed, that event goes to DCERouter, which will forward it whatever plug-in has indicated it wants to handle that type of event.  If the plug-in then wants to send a command to the media player, this command goes first to the DCE Router, which will then forward it to the media player.  The DCE Devices never communicate with each other directly--everything goes through DCE Router.  Devices can create their own types of messages specific to them--not just commands and events.  For example, a DVD player may send a message that contains a screen capture, or a TV program may send a stream of messages with streaming video.  To DCE Router it makes no difference.  Messages just have sources and destinations, and DCE Router does not care what type of message it is.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;DCERouter also allows you to [[Message Interceptors]].  This means a device or plugin can say that it wants to pre-process all messages that meet a certain criteria.  For example, a security plug-in may want to see all events relating to security.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;DCERouter also allows you to [[Message Interceptors]].  This means a device or plugin can say that it wants to pre-process all messages that meet a certain criteria.  For example, a security plug-in may want to see all events relating to security.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Plug-ins are DCE Devices that run within the DCERouter&amp;#039;s memory space.  They are DCE Devices just like any other, and they are created like any other DCE Device.  The code is the same, it&amp;#039;s just a compilation option whether the device is built as a normal DCE Device, which runs in its own memory space and communicates with DCERouter over a socket, or if it&amp;#039;s a plug-in which gets loaded into DCERouter&amp;#039;s memory space.  Plug-ins have the ability to get pointers to the in-memory instance of the other plug-ins so they can share memory and call each others methods.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Plug-ins are DCE Devices that run within the DCERouter&amp;#039;s memory space.  They are DCE Devices just like any other, and they are created like any other DCE Device.  The code is the same, it&amp;#039;s just a compilation option whether the device is built as a normal DCE Device, which runs in its own memory space and communicates with DCERouter over a socket, or if it&amp;#039;s a plug-in which gets loaded into DCERouter&amp;#039;s memory space.  Plug-ins have the ability to get pointers to the in-memory instance of the other plug-ins so they can share memory and call each others methods.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;The [[Orbiter]] library.  When the user presses a button on the phone, Bluetooth Dongle forwards this to the embedded Orbiter which treats it just like any other input.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;The [[Orbiter]] library.  When the user presses a button on the phone, Bluetooth Dongle forwards this to the embedded Orbiter which treats it just like any other input.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;The user interface for both the stand-alone Orbiters and the embedded Orbiters for mobile phones is stored in the same [[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pluto_main &lt;/del&gt;database]] does the pre-rendering.  It determines what the user interface needs to include based on settings in the database, such as the type of Orbiter, the skin, language options, and so on.  It then pre-renders embedded graphics and text, and creates a simple input file for the Orbiter which contains that Orbiter&#039;s particular UI.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;The user interface for both the stand-alone Orbiters and the embedded Orbiters for mobile phones is stored in the same [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE_main &lt;/ins&gt;database]] does the pre-rendering.  It determines what the user interface needs to include based on settings in the database, such as the type of Orbiter, the skin, language options, and so on.  It then pre-renders embedded graphics and text, and creates a simple input file for the Orbiter which contains that Orbiter&#039;s particular UI.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Because LinuxMCE is so database intensive and absolutely everything is stored in the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pluto&lt;/del&gt;-main database, we needed a tool to handle synchronizing database changes.  [[sqlCVS]] is for a SQL database what CVS is for source code.  It&#039;s actually a general-purpose tool and can be used for any database.  Nothing in it is specific to LinuxMCE.  It allows a user to checkout a local working copy of the database and make their local changes.  The user can then check-in those changes, or update his local copy with the changes from others.  Like CVS it supports forking and merging, and you can extract snapshots of the database at any given time.  It also tracks which users own which records and prevents unauthorized changes to the database.  Commits are atomic, so you can undo a check-in that a user made at any time.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Because LinuxMCE is so database intensive and absolutely everything is stored in the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE&lt;/ins&gt;-main database, we needed a tool to handle synchronizing database changes.  [[sqlCVS]] is for a SQL database what CVS is for source code.  It&#039;s actually a general-purpose tool and can be used for any database.  Nothing in it is specific to LinuxMCE.  It allows a user to checkout a local working copy of the database and make their local changes.  The user can then check-in those changes, or update his local copy with the changes from others.  Like CVS it supports forking and merging, and you can extract snapshots of the database at any given time.  It also tracks which users own which records and prevents unauthorized changes to the database.  Commits are atomic, so you can undo a check-in that a user made at any time.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;LinuxMCE also needed a general purpose class generator that makes it very easy to work with a relational database in an object-oriented manner.  [[sql2cpp]] analyzes a database, determines foreign keys and relationships, and builds a complete class structure to represent the database.  The programmer can traverse relationships across multiple tables with 1 line of code.  It completely eliminates the need to write SQL statements.  And if the database schema changes, it will change the class structure so any code that relies on outdated schema will no longer compile, making it much easier to keep the code current. This is also a general-purpose tool that is not specific to LinuxMCE.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;LinuxMCE also needed a general purpose class generator that makes it very easy to work with a relational database in an object-oriented manner.  [[sql2cpp]] analyzes a database, determines foreign keys and relationships, and builds a complete class structure to represent the database.  The programmer can traverse relationships across multiple tables with 1 line of code.  It completely eliminates the need to write SQL statements.  And if the database schema changes, it will change the class structure so any code that relies on outdated schema will no longer compile, making it much easier to keep the code current. This is also a general-purpose tool that is not specific to LinuxMCE.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;The &amp;quot;Kick-Start&amp;quot; project is a collection of scripts and utilities to install LinuxMCE on a variety of operating systems and platforms.  It contains information about what software depends on other software, and where to locate each piece of software on each platform.  Since the database information is general purpose, it can be reused by other unrelated projects as well.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;The &amp;quot;Kick-Start&amp;quot; project is a collection of scripts and utilities to install LinuxMCE on a variety of operating systems and platforms.  It contains information about what software depends on other software, and where to locate each piece of software on each platform.  Since the database information is general purpose, it can be reused by other unrelated projects as well.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;There are also a collection of [[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pluto &lt;/del&gt;Scripts]].&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;There are also a collection of [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE &lt;/ins&gt;Scripts]].&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;LinuxMCE specifically decided to sacrifice revenues from software sales, focusing its sales efforts exclusively on embedded solutions, so that it could work more closely with the open source community and develop a general-purpose platform that makes it very easy for programmers to build upon.  LinuxMCE is happy to assist any programmers to want to build DCE wrappers for their existing projects, or make new additions to LinuxMCE.  You can email the administrator responsible for the project you are interested in, or click &amp;quot;Live Support&amp;quot; to get instant help at any time.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;LinuxMCE specifically decided to sacrifice revenues from software sales, focusing its sales efforts exclusively on embedded solutions, so that it could work more closely with the open source community and develop a general-purpose platform that makes it very easy for programmers to build upon.  LinuxMCE is happy to assist any programmers to want to build DCE wrappers for their existing projects, or make new additions to LinuxMCE.  You can email the administrator responsible for the project you are interested in, or click &amp;quot;Live Support&amp;quot; to get instant help at any time.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;index.php?section=modules&amp;amp;package=0 for a complete list of all the software that makes up LinuxMCE.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;index.php?section=modules&amp;amp;package=0 for a complete list of all the software that makes up LinuxMCE.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jerry finn</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Overview_of_the_software_modules&amp;diff=3195&amp;oldid=prev</id>
		<title>Juliet at 12:43, 15 March 2007</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Overview_of_the_software_modules&amp;diff=3195&amp;oldid=prev"/>
		<updated>2007-03-15T12:43:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:43, 15 March 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l6&quot;&gt;Line 6:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 6:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Plug-ins are DCE Devices that run within the DCERouter&amp;#039;s memory space.  They are DCE Devices just like any other, and they are created like any other DCE Device.  The code is the same, it&amp;#039;s just a compilation option whether the device is built as a normal DCE Device, which runs in its own memory space and communicates with DCERouter over a socket, or if it&amp;#039;s a plug-in which gets loaded into DCERouter&amp;#039;s memory space.  Plug-ins have the ability to get pointers to the in-memory instance of the other plug-ins so they can share memory and call each others methods.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Plug-ins are DCE Devices that run within the DCERouter&amp;#039;s memory space.  They are DCE Devices just like any other, and they are created like any other DCE Device.  The code is the same, it&amp;#039;s just a compilation option whether the device is built as a normal DCE Device, which runs in its own memory space and communicates with DCERouter over a socket, or if it&amp;#039;s a plug-in which gets loaded into DCERouter&amp;#039;s memory space.  Plug-ins have the ability to get pointers to the in-memory instance of the other plug-ins so they can share memory and call each others methods.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;The [[Orbiter]] library.  When the user presses a button on the phone, Bluetooth Dongle forwards this to the embedded Orbiter which treats it just like any other input.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;The [[Orbiter]] library.  When the user presses a button on the phone, Bluetooth Dongle forwards this to the embedded Orbiter which treats it just like any other input.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;The user interface for both the stand-alone Orbiters and the embedded Orbiters for mobile phones is stored in the same [[pluto_main database]] does the pre-rendering.  It determines what the user interface needs to include based on settings in the database, such as &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;teh &lt;/del&gt;type of Orbiter, the skin, language options, and so on.  It then pre-renders embedded graphics and text, and creates a simple input file for the Orbiter which contains that Orbiter&#039;s particular UI.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;The user interface for both the stand-alone Orbiters and the embedded Orbiters for mobile phones is stored in the same [[pluto_main database]] does the pre-rendering.  It determines what the user interface needs to include based on settings in the database, such as &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the &lt;/ins&gt;type of Orbiter, the skin, language options, and so on.  It then pre-renders embedded graphics and text, and creates a simple input file for the Orbiter which contains that Orbiter&#039;s particular UI.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Because &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pluto &lt;/del&gt;is so database intensive and absolutely everything is stored in the pluto-main database, we needed a tool to handle synchronizing database changes.  [[sqlCVS]] is for a SQL database what CVS is for source code.  It&#039;s actually a general-purpose tool and can be used for any database.  Nothing in it is specific to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pluto&lt;/del&gt;.  It allows a user to checkout a local working copy of the database and make their local changes.  The user can then &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;checkin &lt;/del&gt;those changes, or update his local copy with the changes from others.  Like CVS it supports forking and merging, and you can extract snapshots of the database at any given time.  It also tracks which users own which records and prevents unauthorized changes to the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;databse&lt;/del&gt;.  Commits are atomic, so you can undo a check-in that a user made at any time.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Because &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE &lt;/ins&gt;is so database intensive and absolutely everything is stored in the pluto-main database, we needed a tool to handle synchronizing database changes.  [[sqlCVS]] is for a SQL database what CVS is for source code.  It&#039;s actually a general-purpose tool and can be used for any database.  Nothing in it is specific to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE&lt;/ins&gt;.  It allows a user to checkout a local working copy of the database and make their local changes.  The user can then &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;check-in &lt;/ins&gt;those changes, or update his local copy with the changes from others.  Like CVS it supports forking and merging, and you can extract snapshots of the database at any given time.  It also tracks which users own which records and prevents unauthorized changes to the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;database&lt;/ins&gt;.  Commits are atomic, so you can undo a check-in that a user made at any time.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pluto &lt;/del&gt;also needed a general purpose class generator that makes it very easy to work with a relational database in an object-oriented manner.  [[sql2cpp]] analyzes a database, determines foreign keys and relationships, and builds a complete class structure to represent the database.  The programmer can traverse relationships across multiple tables with 1 line of code.  It completely eliminates the need to write SQL statements.  And if the database schema changes, it will change the class structure so any code that relies on outdated schema will no longer compile, making it much easier to keep the code current. This is also a general-purpose tool that is not specific to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pluto&lt;/del&gt;.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE &lt;/ins&gt;also needed a general purpose class generator that makes it very easy to work with a relational database in an object-oriented manner.  [[sql2cpp]] analyzes a database, determines foreign keys and relationships, and builds a complete class structure to represent the database.  The programmer can traverse relationships across multiple tables with 1 line of code.  It completely eliminates the need to write SQL statements.  And if the database schema changes, it will change the class structure so any code that relies on outdated schema will no longer compile, making it much easier to keep the code current. This is also a general-purpose tool that is not specific to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE&lt;/ins&gt;.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;The &quot;Kick-Start&quot; project is a collection of scripts and &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;utilties &lt;/del&gt;to install &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pluto &lt;/del&gt;on a variety of operating systems and platforms.  It contains information about what software depends on other software, and where to locate each piece of software on each platform.  Since the database information is general purpose, it can be reused by other unrelated projects as well.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;The &quot;Kick-Start&quot; project is a collection of scripts and &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;utilities &lt;/ins&gt;to install &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE &lt;/ins&gt;on a variety of operating systems and platforms.  It contains information about what software depends on other software, and where to locate each piece of software on each platform.  Since the database information is general purpose, it can be reused by other unrelated projects as well.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;There are also a collection of [[Pluto Scripts]].&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;There are also a collection of [[Pluto Scripts]].&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pluto &lt;/del&gt;specifically decided to sacrifice revenues from software sales, focusing its sales efforts exclusively on embedded solutions, so that it could work more closely with the open source community and develop a general-purpose platform that makes it very easy for programmers to build upon.  &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pluto &lt;/del&gt;is happy to assist any programmers to want to build DCE wrappers for their existing projects, or make new additions to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pluto&lt;/del&gt;.  You can email the administrator responsible for the project you are interested in, or click &quot;Live Support&quot; to get instant help at any time.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE &lt;/ins&gt;specifically decided to sacrifice revenues from software sales, focusing its sales efforts exclusively on embedded solutions, so that it could work more closely with the open source community and develop a general-purpose platform that makes it very easy for programmers to build upon.  &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE &lt;/ins&gt;is happy to assist any programmers to want to build DCE wrappers for their existing projects, or make new additions to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE&lt;/ins&gt;.  You can email the administrator responsible for the project you are interested in, or click &quot;Live Support&quot; to get instant help at any time.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;index.php?section=modules&amp;amp;package=0 for a complete list of all the software that makes up &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pluto&lt;/del&gt;.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;index.php?section=modules&amp;amp;package=0 for a complete list of all the software that makes up &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LinuxMCE&lt;/ins&gt;.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Juliet</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Overview_of_the_software_modules&amp;diff=2474&amp;oldid=prev</id>
		<title>Wikiadmin at 03:00, 29 August 2006</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Overview_of_the_software_modules&amp;diff=2474&amp;oldid=prev"/>
		<updated>2006-08-29T03:00:49Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 03:00, 29 August 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;table width=&quot;100%&quot;&amp;gt; &amp;lt;tr&amp;gt;&amp;lt;td bgcolor=&quot;#FFCFCF&quot;&amp;gt;This page was written by Pluto and imported with their permission when LinuxMCE branched off in February, 2007.  In general any information should apply to LinuxMCE.  However, this page should be edited to reflect changes to LinuxMCE and remove old references to Pluto.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt; &amp;lt;/table&amp;gt;&amp;lt;p&amp;gt;[[Pluto Libraries DCE]] section explains this process in detail.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;table width=&quot;100%&quot;&amp;gt; &amp;lt;tr&amp;gt;&amp;lt;td bgcolor=&quot;#FFCFCF&quot;&amp;gt;This page was written by Pluto and imported with their permission when LinuxMCE branched off in February, 2007.  In general any information should apply to LinuxMCE.  However, this page should be edited to reflect changes to LinuxMCE and remove old references to Pluto.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt; &amp;lt;/table&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category: Programmer&#039;s Guide]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;[[Pluto Libraries DCE]] section explains this process in detail.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;[[DCE Router]].  When a DCE Device connects, DCERouter gives it its configuration data and is responsible for receiving and forwarding any messages to and from the devices that connect to it.  The most common types of messages are commands and events.  All communication goes through DCE Router.  If a doorbell device fires an event that the button was pushed, that event goes to DCERouter, which will forward it whatever plug-in has indicated it wants to handle that type of event.  If the plug-in then wants to send a command to the media player, this command goes first to the DCE Router, which will then forward it to the media player.  The DCE Devices never communicate with each other directly--everything goes through DCE Router.  Devices can create their own types of messages specific to them--not just commands and events.  For example, a DVD player may send a message that contains a screen capture, or a TV program may send a stream of messages with streaming video.  To DCE Router it makes no difference.  Messages just have sources and destinations, and DCE Router does not care what type of message it is.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;[[DCE Router]].  When a DCE Device connects, DCERouter gives it its configuration data and is responsible for receiving and forwarding any messages to and from the devices that connect to it.  The most common types of messages are commands and events.  All communication goes through DCE Router.  If a doorbell device fires an event that the button was pushed, that event goes to DCERouter, which will forward it whatever plug-in has indicated it wants to handle that type of event.  If the plug-in then wants to send a command to the media player, this command goes first to the DCE Router, which will then forward it to the media player.  The DCE Devices never communicate with each other directly--everything goes through DCE Router.  Devices can create their own types of messages specific to them--not just commands and events.  For example, a DVD player may send a message that contains a screen capture, or a TV program may send a stream of messages with streaming video.  To DCE Router it makes no difference.  Messages just have sources and destinations, and DCE Router does not care what type of message it is.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;DCERouter also allows you to [[Message Interceptors]].  This means a device or plugin can say that it wants to pre-process all messages that meet a certain criteria.  For example, a security plug-in may want to see all events relating to security.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;DCERouter also allows you to [[Message Interceptors]].  This means a device or plugin can say that it wants to pre-process all messages that meet a certain criteria.  For example, a security plug-in may want to see all events relating to security.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l11&quot;&gt;Line 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Pluto specifically decided to sacrifice revenues from software sales, focusing its sales efforts exclusively on embedded solutions, so that it could work more closely with the open source community and develop a general-purpose platform that makes it very easy for programmers to build upon.  Pluto is happy to assist any programmers to want to build DCE wrappers for their existing projects, or make new additions to Pluto.  You can email the administrator responsible for the project you are interested in, or click &amp;quot;Live Support&amp;quot; to get instant help at any time.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Pluto specifically decided to sacrifice revenues from software sales, focusing its sales efforts exclusively on embedded solutions, so that it could work more closely with the open source community and develop a general-purpose platform that makes it very easy for programmers to build upon.  Pluto is happy to assist any programmers to want to build DCE wrappers for their existing projects, or make new additions to Pluto.  You can email the administrator responsible for the project you are interested in, or click &amp;quot;Live Support&amp;quot; to get instant help at any time.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;index.php?section=modules&amp;amp;package=0 for a complete list of all the software that makes up Pluto.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;index.php?section=modules&amp;amp;package=0 for a complete list of all the software that makes up Pluto.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Wikiadmin</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Overview_of_the_software_modules&amp;diff=2009&amp;oldid=prev</id>
		<title>Wikiadmin: Imported document</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Overview_of_the_software_modules&amp;diff=2009&amp;oldid=prev"/>
		<updated>2006-06-05T16:46:42Z</updated>

		<summary type="html">&lt;p&gt;Imported document&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;table width=&amp;quot;100%&amp;quot;&amp;gt; &amp;lt;tr&amp;gt;&amp;lt;td bgcolor=&amp;quot;#FFCFCF&amp;quot;&amp;gt;This page was written by Pluto and imported with their permission when LinuxMCE branched off in February, 2007.  In general any information should apply to LinuxMCE.  However, this page should be edited to reflect changes to LinuxMCE and remove old references to Pluto.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt; &amp;lt;/table&amp;gt;&amp;lt;p&amp;gt;[[Pluto Libraries DCE]] section explains this process in detail.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[[DCE Router]].  When a DCE Device connects, DCERouter gives it its configuration data and is responsible for receiving and forwarding any messages to and from the devices that connect to it.  The most common types of messages are commands and events.  All communication goes through DCE Router.  If a doorbell device fires an event that the button was pushed, that event goes to DCERouter, which will forward it whatever plug-in has indicated it wants to handle that type of event.  If the plug-in then wants to send a command to the media player, this command goes first to the DCE Router, which will then forward it to the media player.  The DCE Devices never communicate with each other directly--everything goes through DCE Router.  Devices can create their own types of messages specific to them--not just commands and events.  For example, a DVD player may send a message that contains a screen capture, or a TV program may send a stream of messages with streaming video.  To DCE Router it makes no difference.  Messages just have sources and destinations, and DCE Router does not care what type of message it is.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;DCERouter also allows you to [[Message Interceptors]].  This means a device or plugin can say that it wants to pre-process all messages that meet a certain criteria.  For example, a security plug-in may want to see all events relating to security.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Plug-ins are DCE Devices that run within the DCERouter&amp;#039;s memory space.  They are DCE Devices just like any other, and they are created like any other DCE Device.  The code is the same, it&amp;#039;s just a compilation option whether the device is built as a normal DCE Device, which runs in its own memory space and communicates with DCERouter over a socket, or if it&amp;#039;s a plug-in which gets loaded into DCERouter&amp;#039;s memory space.  Plug-ins have the ability to get pointers to the in-memory instance of the other plug-ins so they can share memory and call each others methods.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The [[Orbiter]] library.  When the user presses a button on the phone, Bluetooth Dongle forwards this to the embedded Orbiter which treats it just like any other input.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The user interface for both the stand-alone Orbiters and the embedded Orbiters for mobile phones is stored in the same [[pluto_main database]] does the pre-rendering.  It determines what the user interface needs to include based on settings in the database, such as teh type of Orbiter, the skin, language options, and so on.  It then pre-renders embedded graphics and text, and creates a simple input file for the Orbiter which contains that Orbiter&amp;#039;s particular UI.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Because Pluto is so database intensive and absolutely everything is stored in the pluto-main database, we needed a tool to handle synchronizing database changes.  [[sqlCVS]] is for a SQL database what CVS is for source code.  It&amp;#039;s actually a general-purpose tool and can be used for any database.  Nothing in it is specific to Pluto.  It allows a user to checkout a local working copy of the database and make their local changes.  The user can then checkin those changes, or update his local copy with the changes from others.  Like CVS it supports forking and merging, and you can extract snapshots of the database at any given time.  It also tracks which users own which records and prevents unauthorized changes to the databse.  Commits are atomic, so you can undo a check-in that a user made at any time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Pluto also needed a general purpose class generator that makes it very easy to work with a relational database in an object-oriented manner.  [[sql2cpp]] analyzes a database, determines foreign keys and relationships, and builds a complete class structure to represent the database.  The programmer can traverse relationships across multiple tables with 1 line of code.  It completely eliminates the need to write SQL statements.  And if the database schema changes, it will change the class structure so any code that relies on outdated schema will no longer compile, making it much easier to keep the code current. This is also a general-purpose tool that is not specific to Pluto.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The &amp;quot;Kick-Start&amp;quot; project is a collection of scripts and utilties to install Pluto on a variety of operating systems and platforms.  It contains information about what software depends on other software, and where to locate each piece of software on each platform.  Since the database information is general purpose, it can be reused by other unrelated projects as well.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;There are also a collection of [[Pluto Scripts]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Pluto specifically decided to sacrifice revenues from software sales, focusing its sales efforts exclusively on embedded solutions, so that it could work more closely with the open source community and develop a general-purpose platform that makes it very easy for programmers to build upon.  Pluto is happy to assist any programmers to want to build DCE wrappers for their existing projects, or make new additions to Pluto.  You can email the administrator responsible for the project you are interested in, or click &amp;quot;Live Support&amp;quot; to get instant help at any time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;index.php?section=modules&amp;amp;package=0 for a complete list of all the software that makes up Pluto.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>Wikiadmin</name></author>
	</entry>
</feed>