Sponsored links

Go Back   MP3Car.com > Mp3Car Technical > Software & Software Development


Reply
 
Share Thread Tools Display Modes
Old 09-23-2009, 07:52 PM   #1
licensed to kill
 
kev000's Avatar
 
Join Date: Aug 2006
Location: Deep in the Rockies... coding in caves
Posts: 1,039
kev000 will become famous soon enough
frontend classification

A recent IRC discussion has led me to want to raise a valid question: "What is a frontend?". Depending on who you ask, you will get different answers. When analysed in simplest form, a frontend is:

Quote:
A top-level application that does something for some other lower-level application.

When speaking of a CarPC frontend, the following definition usually applies in addition to the above:

Quote:
A top-level applcation that plays media, launches and embeds external applications, performs a number of other things via plugins all in a unified touch friendly interface.

A traditional frontend replaces the system shell (which in windows is explorer.exe). This applies to all windows frontends and nGhost. However, in theory, a frontend can be run without a shell present. For example, in LinuxICE, there is no other shell present, nGhost IS the shell.

The differences in the frontends are in the design. The following is my own take on the different approaches:

Monolithic
A single process that does everything. No external apps required.

Embedable
Can embed external applications within its interface. This usually happens by telling the window manager to assign a window to one you have already created inside the frontend.

Pluginable
Can extend functionality dynamically.

Multi-Threaded
Performs various functions on multiple processing threads that share the same process space.

Multi-Windowed
runs different function in their own window.

Multi-Processed
Significant portions of the application run in a different process space some sort of communication between the respective processes.

So now that we have a classification, let's apply it to popular frontends:

Centrafuse: Monolithic, Embeddable, Pluginable
RevFE: Monolithic, Embeddable, Pluginable, Multi-threaded, Mutli-Windowed
nGhost2: Monolithic, Multi-Processed, Multi-threaded, Pluginable
RR: Monolithic, Embeddable, Pluginable
OpenMobile: Monolithic, Multi-threaded, Pluginable, Embeddable
nGhost3: Multi-Processed, Pluginable

Frontend Features:

Given the above design implementations, what is considered to be a feature of the frontend? For example, just because you can embed iGuidance into RR does that mean it has GPS support? Or just because someone has made a traffic plugin for Centrafuse, does that mean that it has a traffic feature?

For me, a feature of any given frontend is a type of functionality provided in the default shipment of the frontend. An example of this is nGhost ships with nScan, a separate application that provides out of process scanning and watching of media. Although the nGhost exe doesn't have built in functionality to scan media, the nGhost package comes with this functionality by default, therefore, it is a "feature" of the frontend.

This means that 3rd party plugins and apps are not considered features of the frontend.

I'd like to get other's thoughts on the topic. I want to write a wikipedia page on the frontend topic and could use some more insight.

thanks
__________________
LinuxICE - because my car already has enough windows (and because I like speed).
LinuxICE2 beta2 is released!!! get it now!
Follow OpenICE development

Last edited by kev000; 09-24-2009 at 10:45 AM.
kev000 is offline   Reply With Quote
Advertisement
 
Advertisement
Sponsored links

Old 09-23-2009, 08:09 PM   #2
North of the land of Hey Huns
 
Join Date: Jun 2004
Location: Westminster, MD
Posts: 1,038
malcom2073 is a name known to allmalcom2073 is a name known to allmalcom2073 is a name known to allmalcom2073 is a name known to allmalcom2073 is a name known to allmalcom2073 is a name known to all
I think that plugins and add-on applications can be considered the features of a frontend, but it would be considered more of an optional feature than an add on feature. For instance, RR can embed gps applications, so it has the ability to have a Navigation feature. That's up to the end user, but it is still a capability.
__________________
RevFE - Try it, you just might like it.
Carbon - Next Generation Touchscreen Browser
Come join us on IRC: irc.efnet.net #mp3car
Audiophiles make me chuckle as they pad my wallet.
malcom2073 is offline   Reply With Quote
Old 09-23-2009, 08:13 PM   #3
licensed to kill
 
kev000's Avatar
 
Join Date: Aug 2006
Location: Deep in the Rockies... coding in caves
Posts: 1,039
kev000 will become famous soon enough
Quote: Originally Posted by malcom2073 View Post
I think that plugins and add-on applications can be considered the features of a frontend, but it would be considered more of an optional feature than an add on feature. For instance, RR can embed gps applications, so it has the ability to have a Navigation feature. That's up to the end user, but it is still a capability.

We cannot define features based upon capability alone. Otherwise a frontend's features list would be endless if it implements a plugin system where developers can develop a plugin that does "the kitchen sink". By limiting features to what is shipped with the product itself we will cover the common denominator.

I agree though. It can be listed, but should be clarified that it is a 3rd party add-on feature and not a default/supported feature.
__________________
LinuxICE - because my car already has enough windows (and because I like speed).
LinuxICE2 beta2 is released!!! get it now!
Follow OpenICE development
kev000 is offline   Reply With Quote
Old 09-23-2009, 08:13 PM   #4
Maximum Bitrate
 
Join Date: Jul 2008
Location: Boston, Ma or NY,NY
Posts: 562
justchat_1 will become famous soon enough
GREAT WRITE UP!! Not sure how many non-programmers would understand it but I thought it was a great summary.

Two things I might question though:
1. Isn't riderunner multi-processed? (Have you seen the number of executables running for some of the tasks it does)
2. Are third party plugins really not considered part of the app? I think it depends on how they're implemented. If an app has a "radio interface" with radio plugins that can be swapped out and changed around then technically its using third party plugins. But given the clear "support" for the plugin i would say its an extensible feature.

To be honest though its easier to say supported, supported via plugin and not supported....

Edit:
Apparently I took to long to write that... I think one clear distinction that should be made is that embedding another application should NOT count as a feature or even any amount of support for the category. Applications that have navigation as a feature....should have navigation internal or rendered through a plugin not just embed destinator.
__________________
openMobile - An open source C# Front End
- Currently Recruiting Developers -
Available for download on sourceforge

Last edited by justchat_1; 09-23-2009 at 08:16 PM.
justchat_1 is offline   Reply With Quote
Old 09-23-2009, 08:15 PM   #5
North of the land of Hey Huns
 
Join Date: Jun 2004
Location: Westminster, MD
Posts: 1,038
malcom2073 is a name known to allmalcom2073 is a name known to allmalcom2073 is a name known to allmalcom2073 is a name known to allmalcom2073 is a name known to allmalcom2073 is a name known to all
Quote: Originally Posted by kev000 View Post
We cannot define features based upon capability alone. Otherwise a frontend's features list would be endless if it implements a plugin system where developers can develop a plugin that does "the kitchen sink". By limiting features to what is shipped with the product itself we will cover the common denominator.

Ah! therin comes the wonderful term: "Developer Supported" vs "Third Party" plugin/feature.
__________________
RevFE - Try it, you just might like it.
Carbon - Next Generation Touchscreen Browser
Come join us on IRC: irc.efnet.net #mp3car
Audiophiles make me chuckle as they pad my wallet.
malcom2073 is offline   Reply With Quote
Old 09-23-2009, 08:16 PM   #6
licensed to kill
 
kev000's Avatar
 
Join Date: Aug 2006
Location: Deep in the Rockies... coding in caves
Posts: 1,039
kev000 will become famous soon enough
Quote: Originally Posted by malcom2073 View Post
Ah! therin comes the wonderful term: "Developer Supported" vs "Third Party" plugin/feature.

Usually developer supported plugins/features ship with the product.
__________________
LinuxICE - because my car already has enough windows (and because I like speed).
LinuxICE2 beta2 is released!!! get it now!
Follow OpenICE development
kev000 is offline   Reply With Quote
Old 09-23-2009, 08:18 PM   #7
North of the land of Hey Huns
 
Join Date: Jun 2004
Location: Westminster, MD
Posts: 1,038
malcom2073 is a name known to allmalcom2073 is a name known to allmalcom2073 is a name known to allmalcom2073 is a name known to allmalcom2073 is a name known to allmalcom2073 is a name known to all
Quote: Originally Posted by kev000 View Post
Usually developer supported plugins/features ship with the product.

But they don't have to, I don't think the line should be drawn at what's shipped with the product, so much as what's considered supported. There are some frontends that ship with third party plugins, can you REALLY consider them to be features if they aren't developer supported?
__________________
RevFE - Try it, you just might like it.
Carbon - Next Generation Touchscreen Browser
Come join us on IRC: irc.efnet.net #mp3car
Audiophiles make me chuckle as they pad my wallet.
malcom2073 is offline   Reply With Quote
Old 09-23-2009, 08:28 PM   #8
licensed to kill
 
kev000's Avatar
 
Join Date: Aug 2006
Location: Deep in the Rockies... coding in caves
Posts: 1,039
kev000 will become famous soon enough
Quote: Originally Posted by justchat_1 View Post
GREAT WRITE UP!! Not sure how many non-programmers would understand it but I thought it was a great summary.

Two things I might question though:
1. Isn't riderunner multi-processed? (Have you seen the number of executables running for some of the tasks it does)
2. Are third party plugins really not considered part of the app? I think it depends on how they're implemented. If an app has a "radio interface" with radio plugins that can be swapped out and changed around then technically its using third party plugins. But given the clear "support" for the plugin i would say its an extensible feature.

To be honest though its easier to say supported, supported via plugin and not supported....

Edit:
Apparently I took to long to write that... I think one clear distinction that should be made is that embedding another application should NOT count as a feature or even any amount of support for the category. Applications that have navigation as a feature....should have navigation internal or rendered through a plugin not just embed destinator.

1. I have no idea. It's possible that this is true. Maybe we should clarify because there is a distiction: nGhost2 is multi-processed because it exposes an API to for other apps/processes to communicate with it. nGhost3 is multi-processed because plugins actually run in a separate process via "client.exe" similarly to how google chrome runs tabs in separate chrome.exe instances. (btw, i'm adding '.exe' for the sake of windows guys who may not realize that filename extensions really mean nothing in unix land).

I don't think the use of little helper apps should determine a frontend as one having a multi-process design. We should clarify the definition.

2. I don't think that 3rd party plugins count as features. I think they can be listed, but it must be specified as "supported via 3rd party plugin" or something of the sort like you suggested.
__________________
LinuxICE - because my car already has enough windows (and because I like speed).
LinuxICE2 beta2 is released!!! get it now!
Follow OpenICE development

Last edited by kev000; 09-23-2009 at 08:32 PM.
kev000 is offline   Reply With Quote
Sponsored links
Advertisement
 
Advertisement
Old 09-23-2009, 08:30 PM   #9
licensed to kill
 
kev000's Avatar
 
Join Date: Aug 2006
Location: Deep in the Rockies... coding in caves
Posts: 1,039
kev000 will become famous soon enough
Quote: Originally Posted by malcom2073 View Post
But they don't have to, I don't think the line should be drawn at what's shipped with the product, so much as what's considered supported. There are some frontends that ship with third party plugins, can you REALLY consider them to be features if they aren't developer supported?

I think if the product ships with 3rd party plugins, that implies support. I would think it extreme bad-practice to ship plugins with your product that you don't support.
__________________
LinuxICE - because my car already has enough windows (and because I like speed).
LinuxICE2 beta2 is released!!! get it now!
Follow OpenICE development

Last edited by kev000; 09-23-2009 at 08:34 PM.
kev000 is offline   Reply With Quote
Old 09-23-2009, 08:36 PM   #10
Maximum Bitrate
 
Join Date: Jul 2008
Location: Boston, Ma or NY,NY
Posts: 562
justchat_1 will become famous soon enough
Quote: Originally Posted by kev000 View Post
I don't think the use of little helper apps should determine a frontend as one having a multi-process design. We should clarify the definition.

Well my thinking on this is if you embed an external application, and it runs an application to complete a task...you no have 3 processes all communicating to complete a task.

Its certainly not multi-processes in the well designed sense but it is multi-process.

Quote:
I think if the product ships with 3rd party plugins, that implies support.

Well yes in the loose form of the definition. But shouldn't the actual code side of things factor in here?
__________________
openMobile - An open source C# Front End
- Currently Recruiting Developers -
Available for download on sourceforge
justchat_1 is offline   Reply With Quote
Old 09-23-2009, 08:47 PM   #11
licensed to kill
 
kev000's Avatar
 
Join Date: Aug 2006
Location: Deep in the Rockies... coding in caves
Posts: 1,039
kev000 will become famous soon enough
I changed the definition for the multi-processed classification. It rules out helper apps and embedded applications that don't have 2-way communication with the other process.
__________________
LinuxICE - because my car already has enough windows (and because I like speed).
LinuxICE2 beta2 is released!!! get it now!
Follow OpenICE development
kev000 is offline   Reply With Quote
Old 09-23-2009, 09:01 PM   #12
Maximum Bitrate
 
Join Date: Jul 2008
Location: Boston, Ma or NY,NY
Posts: 562
justchat_1 will become famous soon enough
Quote: Originally Posted by kev000 View Post
I changed the definition for the multi-processed classification. It rules out helper apps and embedded applications that don't have 2-way communication with the other process.

Thats a lot better
__________________
openMobile - An open source C# Front End
- Currently Recruiting Developers -
Available for download on sourceforge
justchat_1 is offline   Reply With Quote
Old 09-23-2009, 10:03 PM   #13
Mod - OBDII GPS Logger forum
 
Join Date: Mar 2009
Location: Los Angeles
Posts: 401
chunkyks is on a distinguished road
Why does multi-processed stuff have to be two-way communication?

OBDGPSLogger->obdgui is a one-way communication process. Ditto obdgpslogger->something_listening_on_dbus

Anyways. OBDGPSLogger adheres to classical unix philosophy of "one app does one thing, and does it well". So depending on your view, various parts of obdgpslogger could be any of:
multiprocess, pluginable, multi-windowed, monolithic, embeddable.

Throwing my .02 into the discussion, in my world view "frontend" is, by defintion, the bit that users see & clikky. That's what makes it a frontend.

I also respectfully disagree that plugins *must* be dynamic libraries. They could be a number of things: static libraries [obdsim supports plugins via static as well as dynamic linking], lua scripts, or just about anything else. Lacking a better term in the list above, a theme would be a "plugin".

Gary (-;

PS Yeah, I'm just stirring the water, really. I think trying to argue about what defines a "front-end" when everyone has their own intuitive, fairly-similar definition is a bit silly :-D.
chunkyks is offline   Reply With Quote
Old 09-23-2009, 10:34 PM   #14
licensed to kill
 
kev000's Avatar
 
Join Date: Aug 2006
Location: Deep in the Rockies... coding in caves
Posts: 1,039
kev000 will become famous soon enough
Quote: Originally Posted by chunkyks View Post
Why does multi-processed stuff have to be two-way communication?

OBDGPSLogger->obdgui is a one-way communication process. Ditto obdgpslogger->something_listening_on_dbus

Anyways. OBDGPSLogger adheres to classical unix philosophy of "one app does one thing, and does it well". So depending on your view, various parts of obdgpslogger could be any of:
multiprocess, pluginable, multi-windowed, monolithic, embeddable.

Throwing my .02 into the discussion, in my world view "frontend" is, by defintion, the bit that users see & clikky. That's what makes it a frontend.

I also respectfully disagree that plugins *must* be dynamic libraries. They could be a number of things: static libraries [obdsim supports plugins via static as well as dynamic linking], lua scripts, or just about anything else. Lacking a better term in the list above, a theme would be a "plugin".

Gary (-;

Obd-gui is not a carpc frontend though. It's a frontend to the obdgpslogger backend. Think mythtv style in that case. I always considered obdgpslogger as a classical Unix application: one app that does one job really well. In this case, logging obd and gps values.

I agree with you though, there doesn't necessarily need to be two-way, one-way will suffice in certain cases.

Plugins don't need to only be dynamically linked libs. If I implied that, I'm sorry. nGhost2 called any process that communicated with nGhost gave some sort of added functionality a "plugin". The weather plugin is written in python on uses the IPC protocol to draw on nGhost. A plugin can be anything that adds functionality to an existing app.

Quote:
PS Yeah, I'm just stirring the water, really. I think trying to argue about what defines a "front-end" when everyone has their own intuitive, fairly-similar definition is a bit silly :-D

Yes, but remember, we are humans, and humans like to define things for some odd reason... Plus, i'm a sucker for software design theory...
__________________
LinuxICE - because my car already has enough windows (and because I like speed).
LinuxICE2 beta2 is released!!! get it now!
Follow OpenICE development
kev000 is offline   Reply With Quote
Old 09-23-2009, 10:57 PM   #15
Mod - OBDII GPS Logger forum
 
Join Date: Mar 2009
Location: Los Angeles
Posts: 401
chunkyks is on a distinguished road
Quote:
Plugins don't need to only be dynamically linked libs. If I implied that, I'm sorry.

Quote:
Pluginable
Can extend functionality via dynamic libs.

Heh, heh.

I suggest updating the top post with the improved lexicon

Quote:
we are humans

Speak for yourself, meatsack.

Gary (-;
chunkyks is offline   Reply With Quote
Sponsored links
Advertisement
 
Advertisement
Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
XUL Frontend.... SFiorito Software & Software Development 2 10-02-2009 12:23 PM
CarPal - Modular Cross-Platform Frontend malcom2073 RevFE 27 05-12-2009 05:00 PM
screen placement of frontend tgm4883 Software & Software Development 4 03-06-2006 01:11 PM
Destinator 3 Frontend v1.1 Ninja Monkey Map Monkey 139 10-25-2004 11:40 PM



All times are GMT -5. The time now is 11:16 AM.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.3.2
Copyright © 1999 - 2008 Mp3Car.com Inc.Ad Management by RedTyger
Message Board Statistics