Am 04.02.2013 um 14:11 schrieb EBo:

> On Feb 4 2013 4:18 AM, Michael Haberler wrote:
>> Am 04.02.2013 um 11:29 schrieb EBo:
> 
>>> In the past, and
>>> I can read it between the lines now, that the invasiveness of the
>>> modifications will take so much time and effort that lots of other
>>> things gets pushed back.
>> 
>> I dont agree on 'invasiveness'. In fact the RTAPI api is used
>> basically unchanged, barring some new functions for PCI handling; the
>> codebase is much cleaner and easier to maintain I would think. I am
>> not aware of any outstanding bugs, in particular not the RTAI RTAPI.
> 
> ok.  How difficult would it be to break all the new stuff out into 
> modules, and build a modular framework for it?

well in fact that's what John is doing for RTAPI, with the intent to arrive at 
a universal build that supports RTAI, Xenomai, RT_PREEMPT and sim 
'automagically'; that's not part of the current merge candidate-in-the-waiting 
though

the design and flow stands, and I think it's another incremental change - 
basically linking RTAPI though support libraries for RT OS x,y or z, that is 
replaced by loading a .so module - the same stunt Jeff does with the 
interpreter; since Jeff's change wasnt noticed widely, we hope this one doesnt 
either. And every HAL module uses a similar method, so that's all safe ground.

the idea is that eventually there is a single build per platform, regardless of 
the underlying RT OS; start it, code autodetects environment, does the right 
thing for the RT OS in question

> 
>> Altogether I think that is a actually an incremental change.
> 
> I would love to be proven wrong on this one, but I can see modularizing 
> monolithic code causing all sorts of unforeseen consequences.  You might 
> be lucky though.

or, of course, insanely bright ;)

> 
>> I agree on 'lot of effort' but we're spending a disproportionate
>> amount of time on kernel packaging, testing, configuration & build;
>> skunkworks nows;) The RTAPI work has settled for quite a while. Btw
>> some of that kernel packaging effort is driven by the 'everything on
>> one CPU' limitation - without that it'd be easier sailing.
> 
> what else do you see as changing if you break the 'everything on
>> one CPU' limitation?

the above was remark really was only about the new RTOS stuff, so I wouldnt 
know what to say here

>>> I guess my 2C would be that it would make more
>>> sense to incorporate these level of changes into v3 and back port 
>>> once
>>> it is working and time allows.
>> 
>> I dont think that will happen because I dont see anybody to do it,
>> and I dont quite see the point either - I've on purpose left the
>> option open to merge the new RT OS work into either master or
>> v2.5_branch. That option is still open and undecided.
> 
> So my question to you is how long do you keep the 2.5 branch if/when a 
> 3.0 branch becomes stable and fully functional?  It should not be 0, but 
> it also should not be forever.

I dont know. I would think the 2.5 branch is a maintenance-only thing, but the 
things that are added to it arent consistent with that. I cannot discern any 
communicated policies. Clearly there are lots of un-communicated policies 
around.

Re length: look at it this way: the remapping code added to the interpreter was 
way more massive than the new RTAPI layer in terms of LOC. 
AFAICT there are no open bugtracker entries with bona-fide bugs (modulo Xmas 
wishes) wrt remapping, and none which were open more that a few weeks at most.

That branch is entirely usable, and is used; the windows of outright brokenness 
were very short.

> 
>> I dont care one way or the other, but one should be aware of the fact
>> that merging this into master will accelerate deprecation of the
>> v2.5_branch as few will see benefit in backpatching things into older
>> branches, including me. Putting it further off will widen the gap 
>> even
>> further.
> 
> absolutely.  But where do you dry the line between changes that are big 
> enough that they deserve to be slated for 2.6, 2.7, or 3.0?  Working 
> incrementally is all find and good, and if we really refactor various 
> pieces of the code to make them more modular or update HAL so we can 
> drop NML,  Each of these changes are serious enough to be designated a 
> revision to version bump.

the line I see goes like so:

The messaging-capable HAL layer will have a new API, which subsumes some of the 
existing HAL lib functionality.
This should be a published, usable API, meant as a base the using code in the 
rest of Linuxcnc (task, GUI's) can be adapted for. I think it should also aim 
making HAL/RTAPI and the HAL-based GUI tools usable standalone, without the 
rest of Linuxcnc code draped around it; this isnt only a good sanitary exercise 
but I think is is a tempting tool for entirely new, not classic LinuxCNC-type 
applications. In fact I see no competing attempt for doing that, but I see lots 
of fellows fiddling Arduinos hoping to do something which that could do, and 
then some.

This can be done while the existing code is linked to it traditional-style; 
there is no reason to remove this interface; only when everything is migrated 
the line should be cut. I dont see it as impacting existing functionality at 
all, so there's no reason to fork.

That development can run in parallel with an existing branch, say off master, 
as a larger feature branch.

> 
>>> The problem becomes you are spending a
>>> LOT more time trying to shoehorn stuff into a structure that it does 
>>> not
>>> well fit.  Starting from a cleaner abstraction and moving forward in 
>>> a
>>> methodological fashion will end up getting this done a lot faster 
>>> than
>>> fighting the shoehorning.  Also, if people have not done it already, 
>>> I
>>> *strongly* recommend setting up a fully automated unit and 
>>> regression
>>> test suite.  I prefer the eXtreme Programming (XP) methodology 
>>> myself,
>>> but any modern software engineering approach will benefit the 
>>> project.
>> 
>> switching theme to other structural work, for instance removing the
>> 'everything on one CPU' limitation:
>> 
>> I dont quite believe in the big-bang architectural changes in the
>> linuxcnc context. There are way too many moving parts affected in
>> parallel, and that isnt doable by a single person either - and that 
>> is
>> the modus operandi by and large of this project, give and take some
>> exceptions. Barring a significant sudden cultural change, it is hard
>> to see the team to do that. So I think de-facto forking the codebase
>> is unrealistic.
> 
> But there appear to be issues that are deeply ingrained enough that you 
> will likely never address them until someone either forks EMC or at 
> least makes a branch and changes things whole cloth.

yes, but how you go about it?

Let's take the old 'tool table' issue for example.

I'm curious to see Seb's improvements. That said, I think it is very hard to do 
any substantial improvements in the existing codebase, for several reasons:

1. the NML limitations - size, and no communication patterns like RPC supported 
at a higher level; there's a legacy of failed attempts to do just that
2. the fact that the interpreter happily directly fumbles in global 
datastructures without going through getter/setter methods, which would be key 
to modular containment
3. the component architecture - realistically iocontrol functionality can be 
replaced by rather few and more generic code in task, making things way more 
flexible.
4. the storage/data model layer; that is really the easiest problem relative to 
the above, unfortunately it sees the most attention.

So if you take that laundry list: as long as you dont take out NML, there isnt 
that much of a gain to be had. Then 2) needs fixing, thats semi-done for 
parameters, not for tool data. 3) has a proof of concept, and 4) has a 
candidate solution but waits integration the previous three.

That's really my summary: without removing the large structural issues in the 
supporting layers, there isnt substantial progress to be had on the using 
layers.

>> I would rather see it in a parallel evolution of replacement parts.
>> For instance, the duplicate middleware (NML+HAL, both not quite
>> fitting the bill) is a pressing structural problem. The way I would
>> see forward is to make HAL messaging capable such that it can take
>> over the - fairly minimal - messaging aspects of NML, and then start
>> migrating components piecemeal. That would be a limited-impact
>> approach as it can be done and verified in isolated contexts, and it
>> would take the IMO most pressing issue off the list.
> 
> Agreed.  I would also advocate using that upgrade to implement/test 
> full regression/unit testing.

well, I think just using one of the existing testing frameworks would help a 
lot here.

> 
>> there are some issues which cannot be resolved by any amount of
>> redesign, because they require a community decision or manpower. For
>> instance, decide to deprecate Tcl use and eventually remove using
>> code; or alternatively find a person which carries that effort 
>> forward
>> onto a new base; I dont see either one.
> 
> That is an issue, but how much code is effected with removing tcl?  

Axis is heavily affected by relying on Tkinter and Tcl code. Some of the 
lesser-used GUI's too.

My guess is it's either Jeff raises the axe, or Gscreen becomes a viable 
replacement - whatever comes first.

> IIRC, Ray's interface uses tcl, but is there more?
> 
>> The big issue keeping *me* back here is actually relicensing. It is
>> completely unrealistic IMO to address the above problem within the
>> current GPL2only restriction.
> 
> Is there a list of effected code that cannot be made (L)GPL2+?

No, that's another blob of boring structural work, plus one of the decisions 
which dont come easy around here.

I will push stronger for that once the current RTOS dust settles, and I do hope 
for active support.


 -m



------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_jan
_______________________________________________
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers

Reply via email to