> On 28 May 2019, at 23:59, <[email protected]> <[email protected]> wrote:
>
> May 28, 2019, 7:36 AM by [email protected]:
>
>> Hi Cern and Markus,
>>
>>
>>> On 27 May 2019, at 21:15, markus <>> [email protected]
>>> <mailto:[email protected]>>> > wrote:
>>>
>>> Thanks for the pointer, I had not looked at those fields in Container
>>> yet - I can see that there were grand plans indeed, what I don't see
>>> is where they were supposed to go.
>>>
>>> And I mean that in many ways. It's not clear where each one of
>>> these services was supposed to be implemented, how they were supposed
>>> to be integrated with the rest (.ini file or some new mechanism) and
>>> finally - I'm not entirely sure what problems some of them were
>>> supposed to solve.
>>>
>>> For instance status.config - if that had a fixed
>>> (configurable in some way) port the service_announcement you
>>> pointed to would make sense and be quite useful.
>>>
>>> Can you elaborate what you meant by different transports? What is it
>>> you are looking for?
>>>
>>> Have fun,
>>> Markus
>>>
>>> On Mon, 27 May 2019 17:35:00 +0200 (CEST)
>>> <>> [email protected] <mailto:[email protected]>>> > wrote:
>>>
>>>
>>>> 27. 5. 2019 3:20 od >>> [email protected] <mailto:[email protected]>>>> :
>>>>
>>>>
>>>>> In my quest to figure out how machinetalk works I came across the
>>>>> following in mkwrapper.py:
>>>>>
>>>>> def main():
>>>>> parser = argparse.ArgumentParser(
>>>>> description='Mkwrapper is wrapper around the linuxcnc
>>>>> python module' 'as temporary workaround for Machinetalk based user
>>>>> interfaces' )
>>>>> So if mkwrapper.py is/was considered a temporary workaround, how
>>>>> does/should the real thing look like?
>>>>>
>>>>
>>>> Problem with Machinetalk, one which needs to be remembered at all
>>>> times, is that it is in an unfinished state from a development point
>>>> of view and probably the specification was never finished also. Hard
>>>> to say as Michael Haberler, who cooked it up at the beginning, left
>>>> the project and I don't know if Alexander Roessler is active in
>>>> Machinetalk development anymore.
>>>>
>>>> So short term band-aids become long term solutions. Not good but
>>>> probably good enough for now.
>>>>
>>>> As you can see the Machinetalk suffers a little bit by grandiose
>>>> dreams which never materialized. Like the preparation work in
>>>> Container
>>>> message, >>>
>>>> https://github.com/machinekit/machinetalk-protobuf/blob/master/src/machinetalk/protobuf/message.proto#L128
>>>>
>>>> <https://github.com/machinekit/machinetalk-protobuf/blob/master/src/machinetalk/protobuf/message.proto#L128>
>>>> <>>>
>>>> https://github.com/machinekit/machinetalk-protobuf/blob/master/src/machinetalk/protobuf/message.proto#L128
>>>>
>>>> <https://github.com/machinekit/machinetalk-protobuf/blob/master/src/machinetalk/protobuf/message.proto#L128>>>>
>>>> > ,
>>>> for ZeroMQ thought up service discovery instead of DNS-SD/mDNS. Also,
>>>> it didn't cover the problem of multiple transport protocols
>>>> (IPC/TCP/UDP), which I think is sorely needed. And the NOTYET defines
>>>> are still open work in the source code. From today point of view, I
>>>> think it needs some rework. And I am open to discussion on how to do
>>>> this. (I am of the opinion that the definition should be accessible
>>>> before the code.)
>>>>
>>>> Cern.
>>>>
>>
>> Machinetalk has been the vehicle for having remote GUI’s. It’s been a
>> solution so far, but that does not mean it’s complete. I can’t help you with
>> that because that’s matter I do not have knowledge/experience on.
>> mkwrapper is a python wrapper around NML, >
>> https://github.com/machinekit/machinekit/pull/314
>> <https://github.com/machinekit/machinekit/pull/314>
>>
> Yes, but it's not only that. I find it kind of a problem that when people
> talk about Machinetalk they mean remote GUI capability. It's like when people
> tell others that Machinekit is LinuxCNC for BeagleBone Black or BBB project.
Indeed.
>
> Look for example at communication between rtapi_app instance and HALCMD
> application.
>
>>
>> The Machinekit project once forked from LinuxCNC because some people were
>> dissatisfied with the effort it took to have their code merged in the master
>> branch.
>> That made that new features were slow to turn up into the master branch, if
>> at all.
>>
> And I am glad for it. It is one of the reasons why I am here and not there.
>
>>
>> There is not “one grand designer” or “roadmap" that gives direction to this
>> project. It’s up to people adding code that’s of their interest. And as some
>> people add a lot of code it’s natural that these are to be the driving force
>> behind a project. Taking it in a direction that scratches an itch or has
>> their interest. So “direction” by “effect”.
>> I’m mostly interested in the HAL layer for example. I don’t have a lot of
>> knowledge about the internals of the CNC stack, or on Haltalk for that
>> matter. Although I do use them.
>>
> I think that "roadmap" in some form is a good think. Or better yet RFC.
> Basically design of the project before code. Create general specification to
> which subsequent development should adhere. It is clearly missing in the form
> of Machinetalk (and it's subsets like HALtalk and so on) and given the fact
> that Machinetalk is basically decoupling API and lot of other programs depend
> on it in situations you cannot really determine, any change is minefield.
I’ve done automation projects as you describe. Design behaviour before code.
State machine, sequence diagrams etc.
We can create a designated page/section in the docs? We’re using Jekyll and
asciidoc to create the website and documentation. Using plantuml graphics in
those asciidocs is a no brainer. And a picture says more than... you know...
>
>>
>> If you want to add/improve code and functionality on parts of the Machinekit
>> project, that would be great and welcomed!
>> The difficulty arises in that these kinds of efforts are hard, so there will
>> be only a few people who really understand what’s going on (that’s why it’s
>> so difficult to understand the legacy code base).
>>
> Can concur, took me a long while to get to at least some proficiency.
>
>> Because of the C4 process, I as a maintainer do not have to know about code,
>> or do “reviews” other than basic stuff. I do not decide if a PR is “good” or
>> “bad” on the basis of what it does. The only thing I try to do (if that’s
>> within my knowledge set) is to see if the PR does not break the API. We
>> don’t want to mess up existing systems, especially because this kind of
>> software is driving _real_ machines.
>>
> Bingo. That's the core of the problem. Everybody assumes how the API is
> constructed or meant but nobody knows for sure. And for every change
> everybody will make there will be somewhere somebody who will be pissed off.
> Because his program of which you had no prior knowledge suddenly stops
> working. (Simplistic example can be seen here:
> https://github.com/machinekit/machinekit/pull/1456#discussion_r250955577
> <https://github.com/machinekit/machinekit/pull/1456#discussion_r250955577> )
>
> So any change must be of the big bang style.
>
>
>> If anybody uses Machinekit in a product and relies on a stable branch, it’s
>> up for that person/company to fork and create a stable branch and take care
>> of that. We have a build system that will show if packages are successfully
>> built, and that’s my (literally) green light for merging. That simple.
>> If for whatever reason a PR breaks the code, then either the maintainer
>> being around fixes it, or if they are gone and nobody can fix it, we revert
>> the PR.
>>
>> If you want to add functionality, see problems, improve, the way this works
>> (best) is:
>> Create an issue on github for the repository it concerns.
>>
> When I will have everything completely summarized, will do.
>
>> This is the focus point for the problem, and helps keeping the
>> information/discussion centered
>> Explain your case, discuss
>> Have other people engaged in the discussion. This really helps.
>> Hopefully this results you end up with likeminded people.
>> Create PR’s preferably in small bits. Do not break the API.
>>
> In many cases it is not possible to not break API. What is possible is to
> create second version which will live alongside the original implementation.
> And like the mkwrapper that's probably OK too.
Yes, that’s the way, create a second version. That’s what’s been done
previously.
>
> Cern.
>
>> Smaller bits are easier and less “scarier” than a huge blob that only the
>> author of the code understand. It creates progress, traction, increases the
>> chance of early testing. Having said that, because the code can be
>> difficult, PR's might be bigger if there are a lot of architectural changes
>> needed. But either way, make a PR and it will be merged if it does not mess
>> up the existing code.
>> So long story short, Do not let the “there is no roadmap” fact hold you back.
>>
>> Bas
>>
>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> website: > >>>> http://www.machinekit.io <http://www.machinekit.io>>>>>
>>>>> <>>>> http://www.machinekit.io <http://www.machinekit.io>>>>> >>
>>>>> blog: > >>>> http://blog.machinekit.io <http://blog.machinekit.io>>>>>
>>>>> <>>>> http://blog.machinekit.io <http://blog.machinekit.io>>>>> >>
>>>>> github: > >>>> https://github.com/machinekit
>>>>> <https://github.com/machinekit>
>>>>> <>>>> https://github.com/machinekit <https://github.com/machinekit>>>>> >
>>>>> --- You received this message
>>>>> because you are subscribed to the Google Groups "Machinekit" group.
>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>> send an email to > >>>> [email protected]
>>>>> <mailto:[email protected]>
>>>>> <>>>> mailto:[email protected]
>>>>> <mailto:[email protected]>>>>> >> . Visit this
>>>>> group at > >>>> https://groups.google.com/group/machinekit
>>>>> <https://groups.google.com/group/machinekit>
>>>>> <>>>> https://groups.google.com/group/machinekit
>>>>> <https://groups.google.com/group/machinekit>>>>> >> . To view this
>>>>> discussion on the web visit >
>>>>> https://groups.google.com/d/msgid/machinekit/6b0977ef-1595-4919-ae1b-faf3b8428670%40googlegroups.com
>>>>>
>>>>> <https://groups.google.com/d/msgid/machinekit/6b0977ef-1595-4919-ae1b-faf3b8428670%40googlegroups.com>
>>>>> <https://groups.google.com/d/msgid/machinekit/6b0977ef-1595-4919-ae1b-faf3b8428670%40googlegroups.com?utm_medium=email&utm_source=footer>>
>>>>> .
>>>>> For more options, visit > https://groups.google.com/d/optout
>>>>> <https://groups.google.com/d/optout>> .
>>>>>
>>>>
>>>>
>>>
>>> --
>>> website: >> http://www.machinekit.io <http://www.machinekit.io>>> blog: >>
>>> http://blog.machinekit.io <http://blog.machinekit.io>>> github: >>
>>> https://github.com/machinekit <https://github.com/machinekit>
>>> ---
>>> You received this message because you are subscribed to the Google Groups
>>> "Machinekit" group.
>>> To unsubscribe from this group and stop receiving emails from it, send an
>>> email to >> [email protected]
>>> <mailto:[email protected]>>> .
>>> Visit this group at >> https://groups.google.com/group/machinekit
>>> <https://groups.google.com/group/machinekit>>> .
>>> To view this discussion on the web visit >>
>>> https://groups.google.com/d/msgid/machinekit/20190527121558.02c13f85%40edeltraud
>>>
>>> <https://groups.google.com/d/msgid/machinekit/20190527121558.02c13f85%40edeltraud>>>
>>> .
>>> For more options, visit >> https://groups.google.com/d/optout
>>> <https://groups.google.com/d/optout>>> .
>>>
>
--
website: http://www.machinekit.io blog: http://blog.machinekit.io github:
https://github.com/machinekit
---
You received this message because you are subscribed to the Google Groups
"Machinekit" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
Visit this group at https://groups.google.com/group/machinekit.
To view this discussion on the web visit
https://groups.google.com/d/msgid/machinekit/BE82C931-051D-4474-9409-266BF4F05A9B%40basdebruijn.com.
For more options, visit https://groups.google.com/d/optout.