Another idea:

as we add more configs it will get more and more cumbersome to find a good 
way to organize them.
As Charles pointed out there are various metrics (by machine, by interface, 
by architecture, etc).
I propose we add some tags to each config (e.g: x86, parport, 
simulated-limits, gui-axis, classicladder, 5i20, ...)
Then have a way to provide filters (by architecture, by machine, ...) and 
filter out not interesting results from the config tree.
The user then can chose some of the things he wants, and gets only configs 
according to that specification.
If there aren't enough, he can remove an option and try something else.

my 2 c

Alex

-----Original Message----- 
From: David Bagby
Sent: Friday, January 17, 2014 1:39 AM
To: emc-developers@lists.sourceforge.net
Subject: Re: [Emc-developers] configs/ structure

Charles,

On 1/16/2014 11:03 AM, Charles Steinkuehler wrote:
> Either way, I don't really think the ARM/x86 platform key belongs in
> the configuration selector at all.
Then I guess we are at really opposite points of view on this topic.

Let's take a bit little tip in the way back machine.... in the olden
days EMC (I use that name as that is what it was called during the time
I refer to) was not anywhere near as much of a platform specific project
as it is today. It started out designed to be able to run a variety of
hdw+sftw platforms.

It was only as time has passed by that a particular hardware/software
came to dominate EMC installations: the X86 PC + Linux combination.
Today that hdw/sftw platform is so intertwined with EMC/LCNC that the
idea that you might want to run EMC (or at least parts of it) on a
non-linux platform combination will likely get may get one receiving
derisive mailing list comments.

An example from fairly recent history: Consider that this is so much a
"fish being unaware of water situation" that when EMC corp came along
and panicked the herd into a renaming stampede, the "obvious" name
became *_Linux_*CNC.

Yet conceptually Linux is far from a single OS environment and is only
one software (family) environment that EMC could be applicable to.

(Side bar contemplation: I have no idea how to refer to LinuxCNC that
has one, or more, or all, modules not running on Linux anymore - what
will we call such an animal?!? )

There are lots of assumptions that come along with the x86+PC choice -
and they strongly color all the design decisions that get made within
the project.
Example: I suspect that no one thinks that making LCNC more dependent on
Linux could possibly be a topic for much discussion, let alone a bad idea.
The community takes the path of least resistance - we don't even talk
much about what flavors of Linux that LinuxCNC will run with. The
reality is that the project has a strong tendency to gravitate toward
Ubuntu or Debian flavors. I see that the default attitude tends to be
that if it does not work on Linux flavors that are more removed from
Debian derivatives, then it's the OS flavor that is at fault (it must
have not implemented something correctly - i.e. "correct" == the way
Debian does things).

This autopilot approach to hdw+sftw platform has worked OK for many
years - in large part it has been pushed along by the economics of PC
hardware.

But computing economics have shifted... and now we are seeing interest
in what I'll call "embedded CNC" and "distributed CNC".
In the LCNC space this has manifested as the interest in BeagleBone and
RasPi as SOC oriented hardware platforms.
Yet this combination does not fit the unstated PC+Debian flavored Linux
combo so nicely - it chafes a bit. I know you've seen that first hand in
dealing with the AM335x Angstrom patches into machine kit stuff.  As the
OS assumption drifts away from PC + Debian or Ubuntu, things fit less well.
Consider Machinekit: One consequence of where we are today is that the
machinekit stuff lives on SD cards and runs Debian. There is a cost
associated with that: we can't run LCNC on the Angstrom flavor of linux
that comes on a BBB and we can run from the built in eMMC. That's an
example where the OS assumptions (even within the Linux family) have
added cost (SD card) and removed functionality (can't pare it down to
run from eMMC).

The monolithic PC platform has done (IMHO, with the aid of hindsight)
great damage to the modularity of LCNC. (I know some will remember that
EMC ran on Windows in the early days and that this was not considered a
bad thing.)  The decrease in modularity and increase in pc+Linux
platform dependence didn't happen all at once, but, slowly over years
(the same way many entities get addicted to substances).

Consider again the BBB and the "problems" around graphics performance
and GUIs for LCNC. These are only issues if you start from the assertion
that everything runs on the single CPU in the (assumed) monolithic PC
platform (which is the base assumption implicit in much of LCNC today).
If you think of a BBB as a little PC you get one set of conclusions. If
you think of it as a platform well suited to runs parts (but not all) of
LCNC, you get different conclusions.
For an embedded or distributed CNC widget, why does _the _gui (for for
that matter _any _gui (or X server) ) have to be running  on the BBB?

Look at your own recent interest in a non-X gui. That does not fit the
PC + Linux assumptions as well, and you found the pickings slim.
I tend to see these issues as attempts to fit the PC driven square peg
assumptions into the embedded CNC round hole.

Another example: Think about how AXIS reaches down into LCNC internal
structures to do some of what it does. It was (IHMO) not the best
decision to do that, but it was easy to do - and so human nature won and
it came to be - and it's served it's intended audience well. I will note
that it was only possible to do because all the LCNC modules were
(known) to be running on the single monolithic PC platform. Now split up
LCNC differently as to what runs where and the AXIS tricks are not as
attractive. Rhetorical question: Would Axis's authors have made the same
choices if there were a significant number of non-PC EMC installations
at that time?

One of the reasons I'm interested in Michael's re-architecture work is
that it offers a chance to undo some of this insidious binding to PC
assumptions. As an example, the judicious application of ZMQ to create
module interfaces could allow this to happen without negatively
impacting the LCNC PC platform installed base.

I also think that Putting the modularity back into LCNC enables lots of
new non-PC platforms and I see the future for LCNC involving many
platforms that are not PCs. Accordingly I would like to see LCNC become
less PC dependent.
But for that to have any chance, we fish have to become aware of the
water we swim in.

So, I think that it's really important that we start realizing that PCs
(and all that a PC implies) are NOT the only target for LCNC.
I honestly  don't think that a config structure oriented around
Mill/lathe then a hardware interface is sufficiently cognizant of the
possibilities of modular/distributed CNC.
While while the X86 and ARM stuff is similar today, that's because it
has to be... technical evolution has not yet had time to drive the
modifications that will make these diverge further apart than they are
today.

I think we do ourselves a favor if we organize (at least as a start)
along "PC assumption made here" and "PC assumptions are no longer
constraints here".    The easiest way to do that is to let X86 PC
configs handle the legacy and installed base, while we let the ARM based
SOC stuff be more distinct and more free to grow different ways.

Dave

------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today.
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers 


------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today. 
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers

Reply via email to