-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Dependency on dvs_msgs #4
Comments
As discussed in my original proposal, catkin does not support optional dependencies. As a direct consequence, something like a The question is, what is the most clean approach to this modularization in relation to Git/GitHub. Off the top of my head, I see these possibilities:
For options (1) and (2), it is necessary to let the 'core package' export some central include files, which should provide all the basic ROS-MUSIC stuff. In essence, specialized adapters should focus on translating the MUSIC buffer to the ROS world and the other way around. Update rates, music timestep, ROS threads and all this technical stuff should be handled in the parent class as good as possible. At the moment, most of the adapters are very redundant in their implementation. Even if it won't come to realizing the above approach, a refactorization should take place at some point. Personally, I would prefer option (2) at the moment. It appears to be the most clean solution to me. |
Maybe there is another, more convenient, solution. With mhoff/ros_music_adapter@d7bdf7c I split the catkin package into two catkin packages, both residing in the same repository. The Example
Spares checkouts allow the users to select the components they want to use explicitly. I think this might be an interesting (and especially quick) solution for our dependency problem. |
@mdjurfeldt What do you mean by "without much ROS dependencies"? Do you think of the whole "classic" toolchain, or do you think of significantly more general code which could also be used for adapting to other communication frameworks (e.g. ZMQ)? In my opinion, it is most profound to keep all the ROS-MUSIC-related code as close as possible in terms of file system, build system and coding standard. @weidel-p @mdjurfeldt Did you already define some kind of protocol for ZMQ + SNN? I just began a few weeks ago to use ZMQ to keep data persistence and plotting out of the loop, so I would be interested in your insights. It does not really make sense for me to develop a completely custom protocol for transportation of spiking data when another group does the same. |
Den 25 mar 2017 15:41 skrev "Michael Hoff" <[email protected]>:
@mdjurfeldt <https://github.com/mdjurfeldt> What do you mean by "without
much ROS dependencies"? Do you think of the whole "classic" toolchain, or
do you think of significantly more general code which could also be used
for adapting to other communication frameworks (e.g. ZMQ)?
In Philipp's ROS-MUSIC toolchain, there is, for example, decoders and
encoders which are entirely ROS-independent. Those things could be part of
the MUSIC distribution.
In my opinion, it is most profound to keep all the ROS-MUSIC-related code
as close as possible in terms of file system, build system and coding
standard.
Right, the ROS-MUSIC adapter, which uses include files from ROS, could be
part of a catkin package and can reside in a different repository than
MUSIC, for example the current one (Philipp's).
Regarding the splitting into two catkin packages which you discuss now,
where do you draw the line between "core" and the rest?
@weidel-p <https://github.com/weidel-p> @mdjurfeldt
<https://github.com/mdjurfeldt> Did you already define some kind of
protocol for ZMQ + SNN? I just began a few weeks ago to use ZMQ to keep
data persistence and plotting out of the loop, so I would be interested in
your insights. It does not really make sense for me to develop a completely
custom protocol for transportation of spiking data when another group does
the same.
This is right now entirely Philipp's work, but I've told Philipp that there
is a plan to completely refactor MUSIC such that MUSIC can natively and
simultaneously use different communication methods. Communication methodss,
like MPI, UDP and ZMQ will be modules which can optionally be compiled into
the MUSIC library and can be selected in the MUSIC configuration.
Once this happens, I will study what you have done and maybe we can
together decide how it should look like in MUSIC. For now, I think I will
be too much distracted if I think about this, so I think you two should
collaborate on this independently of myself.
As it looks now, the refactorization might actually start to happen already
late this spring.
BTW, Michael, I think you are doing great work and I'm sorry that there was
a long period of unresponsiveness on my part i the beginning of the year.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#4 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ADcfCfnd0yUJh-HyLSv78LwHnkSg3FLxks5rpSeGgaJpZM4MHVSC>
.
|
True. These are indeed components which should be 'natively' provided by MUSIC. As a sidenote: The decoder reads the weight matrix from a JSON-file. This makes the usage rather clumsy. Would it be possible to transport this matrix as a MUSIC-parameter? I can imagine that big matrices might become a problem as a command-line argument.
First of all, the "core" package provides common data, like shared cmake-files, shared libraries (rtclock) and shared abstract functionality for writing adapters. The idea is that the "dvs" package simply has to subclass an existing abstract adapter, write a custom setup + ROS callback and that's it (everything else is largely redundant for most adapters). As for the provided components, the minimum is to draw the line based on dependencies, leading to "core" being a collection of components depending purely on the standard libraries/packages (ROS, MUSIC, pthread, jsoncpp, ...) and everything else being in separate packages. But I do not think that we have to define a strict set of rules as of now. Using pull requests we can easily select which component ends up in which package. So I would delay this until an actual user community starts to develop.
I understand. I agree that making MUSIC more flexible regarding the method of communications is the right way to go!
Great to hear!
Thank you. I appreciate that. :) |
@mhoff @mdjurfeldt sorry for this delayed response. I was horribly busy lately. So, I thought about this discussion and actually it's true what @mhoff says. Large parts of the adapters are redundant. It would be easier to use and develop if we would do exactly what @mhoff suggests. To summarize the idea:
Did I understand that correctly or did I miss something? The 'core' as well as the 'basic_adapters' could actually live in the MUSIC repository. But it might be better to think about that as soon as we implemented that. |
Sounds good to me!
Den 30 mars 2017 14:58 skrev "weidel-p" <[email protected]>:
… @mhoff <https://github.com/mhoff> @mdjurfeldt
<https://github.com/mdjurfeldt> sorry for this delayed response. I was
horribly busy lately.
So, I thought about this discussion and actually it's true what @mhoff
<https://github.com/mhoff> says. Large parts of the adapters are
redundant. It would be easier to use and develop if we would do exactly
what @mhoff <https://github.com/mhoff> suggests.
To summarize the idea:
- We create an organization for this project.
- In this organization we create several repositories:
- core (only dependent on MUSIC, contains shared libraries and
abstract classes for adapters)
- basic_adapters (implements basic adapters like encoders and
linear_decoder)
- ros_adapter (dependent on ROS, implements adapters to ROS
publisher and subscriber)
- dvs_adapter (dependent on ROS and DVS, implements adapters to the
DVS camera)
- zmq_adapter (dependent on ZMQ, implements adapters for ZMQ
publisher and subscriber)
- meta (contains all other repositories as submodules)
Did I understand that correctly or did I miss something?
The 'core' as well as the 'basic_adapters' could actually live in the
MUSIC repository. But it might be better to think about that as soon as we
implemented that.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#4 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ADcfCXOuACjtJrnDR0qLXggZ4txYYBviks5rq6blgaJpZM4MHVSC>
.
|
My understanding was to put Your approach goes on step further. You allow the |
@mhoff @weidel-p I strongly support the idea to make non-ROS things
non-catkin. I would also prefer if basic/core (which could be merged, yes)
use the standard autotools build system.
…On Thu, Mar 30, 2017 at 3:29 PM, Michael Hoff ***@***.***> wrote:
To summarize the idea:
- We create an organization for this project.
- In this organization we create several repositories:
- core (only dependent on MUSIC, contains shared libraries and
abstract classes for adapters)
- basic_adapters (implements basic adapters like encoders and
linear_decoder)
- ros_adapter (dependent on ROS, implements adapters to ROS
publisher and subscriber)
- dvs_adapter (dependent on ROS and DVS, implements adapters to the
DVS camera)
- zmq_adapter (dependent on ZMQ, implements adapters for ZMQ
publisher and subscriber)
- meta (contains all other repositories as submodules)
Did I understand that correctly or did I miss something?
My understanding was to put basic_adapters in MUSIC, and core, ros_adapter,
dvs_adapter in a separate project "ros-music" (could be just one
repository or multiple repositories), which can be simply dropped into the
catkin workspace.
Your approach goes on step further. You allow the basic_adapters to use
core functionality, which does perfectly make sense. I did not think
about eliminating this redundancy. But I see issues regarding the build
system. As core, basic_adapters and zmq_adapters are completely ROS-free,
how do you intend to build those projects? I assume you don't want to
enforce a catkin workspace for non-ROS users, thus ROS users would have to
clone the meta module, build the non-catkin modules by hand and leave the
rest to catkin. I think we have to come up with a smart solution for this
problem.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#4 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ADcfCf9FwYEO8-tZQUQP20wq2sPbvQsJks5rq643gaJpZM4MHVSC>
.
|
@weidel-p @mhoff One possibility is that the organization is "MUSIC", since
one could then collect all kinds of MUSIC-extensions in one place.
But, it's not a big deal if MUSIC-extensions are independent projects. That
is also fine.
Den 30 mar 2017 15:33 skrev "Mikael Djurfeldt" <[email protected]>:
… @mhoff @weidel-p I strongly support the idea to make non-ROS things
non-catkin. I would also prefer if basic/core (which could be merged, yes)
use the standard autotools build system.
On Thu, Mar 30, 2017 at 3:29 PM, Michael Hoff ***@***.***>
wrote:
> To summarize the idea:
>
> - We create an organization for this project.
> - In this organization we create several repositories:
> - core (only dependent on MUSIC, contains shared libraries and
> abstract classes for adapters)
> - basic_adapters (implements basic adapters like encoders and
> linear_decoder)
> - ros_adapter (dependent on ROS, implements adapters to ROS
> publisher and subscriber)
> - dvs_adapter (dependent on ROS and DVS, implements adapters to
> the DVS camera)
> - zmq_adapter (dependent on ZMQ, implements adapters for ZMQ
> publisher and subscriber)
> - meta (contains all other repositories as submodules)
>
> Did I understand that correctly or did I miss something?
>
> My understanding was to put basic_adapters in MUSIC, and core,
> ros_adapter, dvs_adapter in a separate project "ros-music" (could be
> just one repository or multiple repositories), which can be simply dropped
> into the catkin workspace.
>
> Your approach goes on step further. You allow the basic_adapters to use
> core functionality, which does perfectly make sense. I did not think
> about eliminating this redundancy. But I see issues regarding the build
> system. As core, basic_adapters and zmq_adapters are completely
> ROS-free, how do you intend to build those projects? I assume you don't
> want to enforce a catkin workspace for non-ROS users, thus ROS users would
> have to clone the meta module, build the non-catkin modules by hand and
> leave the rest to catkin. I think we have to come up with a smart solution
> for this problem.
>
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub
> <#4 (comment)>,
> or mute the thread
> <https://github.com/notifications/unsubscribe-auth/ADcfCf9FwYEO8-tZQUQP20wq2sPbvQsJks5rq643gaJpZM4MHVSC>
> .
>
|
Let me create an example:
I think we should include As a consequence, we would have three repositories:
I would avoid creating too much repositories and working with git-submodules too much (people hate submodules). |
@mhoff your example seems to be quite right. As mentioned already, we could also think about merging all ROS independent things in the MUSIC repository eventually. Then we would end with only two repositories: @mdjurfeldt Does the organization 'MUSIC' already exist? Otherwise I'll create it. Or do you mean INCF? |
@weidel-p I think it's better to keep the different extensions in different
repositories, possibly with the exception of basic/core. That makes the
repositories leaner and can compartmentalize issues and PRs.
I haven't created the MUSIC org. No, I didn't mean INCF. Is it possible to
create suborganizations below INCF?
The main MUSIC repo is INCF/MUSIC. Possibly, it could move to MUSIC/MUSIC
in the future. (Maybe MUSIC is a too generic name for an org, btw? :)
I also want to hear Michaels opinion before you try to create it.
Den 30 mars 2017 16:08 skrev "weidel-p" <[email protected]>:
@mhoff <https://github.com/mhoff> your example seems to be quite right. As
mentioned already, we could also think about merging all ROS independent
things in the MUSIC repository eventually. Then we would end with only two
repositories: MUSIC and ros_music.
@mdjurfeldt <https://github.com/mdjurfeldt> Does the organization 'MUSIC'
already exist? Otherwise I'll create it. Or do you mean INCF?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#4 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ADcfCcMsXXnQNqCjnUTgese9Hz8FpXsWks5rq7dwgaJpZM4MHVSC>
.
|
True. Does it follow that
Way too generic if you ask me. But do you have a viable alternative as organization name? |
Another possibility would be to use the "official" INM-6/IAS-6 organization (https://github.com/INM-6). I think this would make sense. What do you think? |
Hi,
Sorry for slow response again---I'm recovering from flu/cold and am forced
to deal with the most acute things only.
Well, my idea was to have an organization specifically for different kinds
of MUSIC extensions. So, in that aspect INM-6 is as bad as INCF. But I
think I need to read up on github organizations and sub-repositories before
having a definite opinion.
To answer @mhoff, a less generic name could be INCF-MUSIC (since MUSIC was
an INCF initiative).
Regarding INM-6, it's natural for you since you work there. On the other
hand, INCF is a little bit more "umbrella-like" and neutral (except for
people who do not have a neutral attitude towards INCF ;).
I think you guys, who do the work, has the last word on this, but I'll try
to read up a little and get back to you.
…On Tue, Apr 4, 2017 at 10:40 AM, weidel-p ***@***.***> wrote:
Another possibility would be to use the "official" INM-6/IAS-6
organization (https://github.com/INM-6). I think this would make sense.
What do you think?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#4 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ADcfCUgCZ1ddUN_W7PSyXZgXu987iiFyks5rsgHzgaJpZM4MHVSC>
.
|
I actually don't mind the name of the organization. INCF-MUSIC is fine for me. @mhoff do you have a name in mind? |
Before deciding on the concrete name I would like to discuss the letter case. How could names for the repositories look like?
In my opinion, mixed variants simply look bad and -- generally -- lower case variants look better than their upper case alternatives. As a popular example, NEST also chose the lower case variant for both, organization and repository name: https://github.com/nest/nest-simulator. The alternative would have been a worse choice if you ask me: https://github.com/NEST/NEST-simulator. Assuming you agree with lower case in the repository name, the organization name should reflect this design choice. Consequently, we would speak of music/music, INCF-music/music, incf-music/music etc., whereas I don't know if it would be wise to use INCF in the lower case variant if that is unusual. Personally, looking at these choices, I'd actually prefer the general music/music (if music is still free as an origanization!). Did you ever think about putting a suffix to music like nest did with nest-simulator? What about music-coordinator? |
"music" is already taken as organization name.. |
Usually I would prefer lower letters, but assuming that we take INCF-MUSIC as organization name and as MUSIC and INCF in already written in capital letters, I would stick to it. @mdjurfeldt regarding sub-organizations: we could just create a team in the INCF organization? |
I'll look at this tomorrow and get back.
Best,
Mikael
Den 11 apr. 2017 18:13 skrev "weidel-p" <[email protected]>:
… Usually I would prefer lower letters, but assuming that we take INCF-MUSIC
as organization name and as MUSIC and INCF in already written in capital
letters, I would stick to it.
@mdjurfeldt <https://github.com/mdjurfeldt> regarding sub-organizations:
we could just create a team in the INCF organization?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#4 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ADcfCVQRHd70aezCWebWlY-Wj1z12A0cks5ru6aygaJpZM4MHVSC>
.
|
@weidel-p @mhoff That was a long day---sorry.
I've read up on github. It turns out that there is no such thing as
subrepositories. There are just two flat name-spaces: organizations and
repositories---like a depth-1 filesystem where folders=organizations cannot
contain folders but only files=repositories.
Git itself has a concept of submodules, as you know, but they turn out to
be rather tricky and confusing to use, so we should not use those. (I have
arguments if you are of another opinion.)
We clearly have a need to collect several MUSIC-related packages into one
place on github. In my view this *forces* us to misuse the organization
concept as a kind of music folder.
I see that there is an issue posted towards github itself where people have
exactly the situation we have and want a repository hierarchy under one
organization. Maybe github will act on this in the future. I think we
should be prepared for yet another reorganization when that happens.
I agree with Philipp that it would be more consistent to use captital
letters but INCF-MUSIC is so very "blocky" and I think incf-music is much
better taste, so I suggest "incf-music" as organization name.
Philipp contacted me today because of an urgent need to move this forward
and I said I would create something already tonight, but I prefer to check
with you two one more round and finish this tomorrow.
So, we'll have an organization "incf-music" (which I already created but
can remove) where we'll collect different MUSIC-related repositories in one
flat space.
We'll have at least the following repositories (and this slightly differ
from what has last been said by you, so please comment):
* music - containing the main MUSIC repository and abstract adapter classes
(autotools)
* basic-adapters - basic adapters in different directories in a single repo
(I prefer autotools for consistency---would that create problems?)
* zmq-adapter - Philipp's current work (I think this is not entirely
"basic" and deserve a repo of its own. It's about a specific form of
communication, not transformation of data. Are you of a different mind?;
whatever build system Philipp prefers)
* ros-music - ros-adapter and dvs-adapter as different directories in a
single repo (not submodule; both catkin)
(Also note the replacement of _ with - which looks nice, is consistent with
"-" in incf-music, and is easier to type.)
So, Philipp's work, e.g., will have URL:
https://github.com/incf-music/zmq-adapter
Comments?
Best regards,
Mikael
…On Tue, Apr 11, 2017 at 6:15 PM, Mikael Djurfeldt ***@***.***> wrote:
I'll look at this tomorrow and get back.
Best,
Mikael
Den 11 apr. 2017 18:13 skrev "weidel-p" ***@***.***>:
> Usually I would prefer lower letters, but assuming that we take
> INCF-MUSIC as organization name and as MUSIC and INCF in already written in
> capital letters, I would stick to it.
>
> @mdjurfeldt <https://github.com/mdjurfeldt> regarding sub-organizations:
> we could just create a team in the INCF organization?
>
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub
> <#4 (comment)>,
> or mute the thread
> <https://github.com/notifications/unsubscribe-auth/ADcfCVQRHd70aezCWebWlY-Wj1z12A0cks5ru6aygaJpZM4MHVSC>
> .
>
|
I'm fine with the names of the repositories and agree on the '-' convention. |
I agree, we can certainly proceed with creating the repos :) |
@weidel-p @mhoff OK---I'll invite you in a minute. I'll leave the
organization empty for now, because the proper way to move a repository is
to do it through github, so there should, e.g., not exist a repository
"music" before the transfer---and that needs some coordination such that
users do not get confused (pages explaining what has happened and how they
update their remotes).
So, when you get the invitation, feel free to either transfer or create new
repositories as you wish.
Best,
M
…On Fri, May 19, 2017 at 9:16 AM, Michael Hoff ***@***.***> wrote:
I agree, we can certainly proceed to create the repos :)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#4 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ADcfCSVuGVlTIiqAj31fN-nz6MdDXCZhks5r7UHhgaJpZM4MHVSC>
.
|
The whole toolchain is now dependent on 'dvs_msgs' which is unnecessary for most applications. One solution would be to separate the toolchain into modules like @mhoff suggested in #1.
The text was updated successfully, but these errors were encountered: