--
You received this message because you are subscribed to the Google Groups "ROS Buildsystem Special Interest Group" group.
To post to this group, send email to ros-sig-b...@googlegroups.com.
To unsubscribe from this group, send email to ros-sig-buildsy...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
Hi,
thanks to Dirk for creating the REP.
My review comments (sorry for providing that many):
* packages could have a namespace (stack), or "group", or similar to give more structure. E.g.: package: amcl, group: navigation
* Attributes "brief" and "email" could be tags as well, based on the rationale given in the REP
* URL types could be more, and the semantics should be stated when no type is given.
* bugtracker url could have more information, to help later creation of cli tool that creates tickets
* The REP could mention YAML and JSON, and why they were not chosen as a replacement
* The REP could mention which ROS package / library will provide the validation / parsing, to prevent many packages from writing their own parser.
* It might be good to think ahead, that the syntax will change, and declare what version of the package.xml syntax a given package.xml adheres to.
* The REP should provide the XML schema for review, not just announce it to be available
* maintainer could be an attribute of author.
* http://ros.org/wiki/Manifest also mentions logo tag (was that ever used?)
* The structure depends, run_depends, build_depends is not future proof, more scopes might become relevant
* Also the depends semantics should be clarified, what effect will it have if I put <depends>xyz</depends> in the package.xml?
* The document structure is weird, an additional header after the example might be useful
* build_type should be put in the example
* for the export tag, the valid subtags should be listed
* The naming convention for the name tag differ from: http://www.ros.org/wiki/Naming (lowercase, dashes?, must start with letter)
* dashes in the name???
* message_generator tag description could be more verbose, also what is the API / contract for such packages?
* REP should mention which tools are known to rely on stack.xml / package.xml (possibly also in what way they will be changed)
* "For catkin packages these files will be auto generated." sounds weird/redundant, as package.xml files are only supposed to work in catkin packages.
* why is the run_depend information used to determine build order? (Copy & paste bug) -> explain what the run_depend tag is really used for
--
You received this message because you are subscribed to the Google Groups "ROS Buildsystem Special Interest Group" group.
To post to this group, send email to ros-sig-b...@googlegroups.com.
To unsubscribe from this group, send email to ros-sig-buildsy...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msg/ros-sig-buildsystem/-/QxPm3ouS5UQJ.
* Attributes "brief" and "email" could be tags as well, based on the rationale given in the REPI don't think making emails into tags makes much sense, because then there is no relationship between specific author/email pairs, but brief could be a separate tag, but being an attribute might encourage people to make them briefer.
* The naming convention for the name tag differ from: http://www.ros.org/wiki/Naming (lowercase, dashes?, must start with letter)
* dashes in the name???I agree, when you consider the recommendation to make the containing folder match the name, dashes don't make sense.
On Thursday, September 13, 2012 7:06:49 PM UTC+2, William Woodall wrote:* Attributes "brief" and "email" could be tags as well, based on the rationale given in the REPI don't think making emails into tags makes much sense, because then there is no relationship between specific author/email pairs, but brief could be a separate tag, but being an attribute might encourage people to make them briefer.
* The naming convention for the name tag differ from: http://www.ros.org/wiki/Naming (lowercase, dashes?, must start with letter)
* dashes in the name???I agree, when you consider the recommendation to make the containing folder match the name, dashes don't make sense.
There are more problems, such as using the package name in generated code for variable names and such.
--
You received this message because you are subscribed to the Google Groups "ROS Buildsystem Special Interest Group" group.
To post to this group, send email to ros-sig-b...@googlegroups.com.
To unsubscribe from this group, send email to ros-sig-buildsy...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msg/ros-sig-buildsystem/-/j0QUlqosYNkJ.
> * packages could have a namespace (stack), or "group", or similar to give more structure. E.g.: package: amcl, group: navigation
We should stick to a flat namespace (http://www.ros.org/wiki/Naming).
> * URL types could be more, and the semantics should be stated when no type is given.
What do you imagine here? Without any concrete use cases we should not allow free-form data in the type attribute.
> * bugtracker url could have more information, to help later creation of cli tool that creates tickets
What information do you think are necessary beside the URL?
Components, version and stuff like that can be encoded in the URL (at least for trac).
And especially who should the format look like to support arbitrary bug trackers in the future?
> * The REP could mention YAML and JSON, and why they were not chosen as a replacement
First there must be a reason to choose another format (which would be limitations or other negative aspects of the XML format).
Only then it makes sense to state arguments pro and contra other formats.
And the arguments against yaml were already discussed before the switch back from stack.yaml to stack.xml was done.
> That would be:
> <author>
> <name>xyz</author>
> <email>x...@xyz.com <mailto:x...@xyz.com></email>
> </author>
Why would that extra verbose variant be preferable over:
<author email="x...@xyz.com">xyz</author>
And repeating information like in the above sketched email tag is not an option.
We only want to store atomic information.
> While plain text information can be stored in either attributes or tags the later is preferred for readability reasons.
Verbosity is just XML, and else I follow guielines such as:http://www.ibm.com/developerworks/xml/library/x-eleatt/index.html--
You received this message because you are subscribed to the Google Groups "ROS Buildsystem Special Interest Group" group.
To post to this group, send email to ros-sig-b...@googlegroups.com.
To unsubscribe from this group, send email to ros-sig-buildsy...@googlegroups.com.
<architecture_independent/>:
======================
This seems a bit simplistic. The Debian equivalent actually specifies
which architectures the package supports, with "any" or "all" as
useful options.
<meta_package/>:
==============
Is this being implemented for Groovy? If so, I doubt an empty tag will
be sufficient.
As mentioned in the review meeting, I don't like that name, although
it was useful for earlier discussions to distinguish them from dry
stacks. I recommend keeping the old "stack" terminology for users,
because it is already familiar to the ROS community.
Concerns:
========
I would prefer to keep the "review" tag. It is one of the best ways to
quickly identify poorly-maintained packages.
Backwards Compatibility:
===================
As someone mentioned earlier, saying the `manifest.xml` will be auto
generated is mostly just confusing in this context. While some tools
may work that way, users (presumably) don't see those files and don't
care about them. Right?
--
joq
<build_depend version="1.1">...</build_depend>
<build_depend version="1.1" version_lower_than="2.1">...</build_depend>
<build_depend version_exact="1.1">...</build_depend>
As to the depend tags, I would still prefer in the REP for each tag an explanation and example for both
c++ and python, of what changes to the tag causes what changes in the build/run/packaging. Currently the REP only says:
"The build and buildtool dependencies are used to determine the build order of multiple packages." (which is a bit
confusing as well, given catkin only seems to use those for configure-order of packages)
How is this used to determine the build order of anything:
<build_depend>libboost-thread-dev</build_depend>
unless somebody wrote a libboost-thread-dev ROS package?
What happens if a developer forgets to specify:
<test_depend>gtest</test_depend>
or
?
Will this:
<run_depend>libboost-thread</run_depend>
be parsed and used to specify linker flags, or will it also/only be used when creating a debian package?
While the REP should not specify how catkin will work, it needs to justify why having those tags at all
(as opposed to keeping that information somewhere else),
and to make it clear I would like explicit examples of what tag goes into what process how.
I think the REP needs to state whether transitive dependencies will be resolved automatically or have to be stated again.
Meaning if ros package A <..._depends> on ros package B, how do the build-, buildtool-, run-, and test-dependencies
of B affect the dependencies of A.
+1 to removing the brief, also see http://www.ros.org/browse/list.php which shows how the full description can be cut off
and still be useful when people give a short and meaningful first sentence.
-1 to keeping review tag, i think that was agreed upon in the review meeting (http://www.ros.org/wiki/catkin/Reviews/2012-08-14_API_Review)
Regarding the 'format' attribute,
<package format='1'>
Either this should be mandatory (and self-explaining like catkin_version='0.6'), or we should drop this. By now I think this should rather be dropped, and structure changes be introduced by tic-toc deprecation.
+1 to removing the brief, also see http://www.ros.org/browse/list.php which shows how the full description can be cut off
and still be useful when people give a short and meaningful first sentence.
-1 to keeping review tag, i think that was agreed upon in the review meeting (http://www.ros.org/wiki/catkin/Reviews/2012-08-14_API_Review)
I want to collect QA information automatically. Parsing arbitrary web
pages for that information looks a lot harder, reliably determining
whether it is present or missing. Providing an optional "review" tag
permits developers to declare a commitment to quality and
compatibility. I hope we can combine that with other measures of
package quality and reusability to provide meaningful guidance for
users.
Sorry, I've been out of the loop, ICRA madness and all...
So one big thing that I remember discussing with Tully back in July, was making the manifest file have a ros-specific name, so that things like webcrawlers could easily find something that looks like a ros package on source servers. For example, instead of "package.xml" just calling it "rospackage.xml" would mean that I could tell if something was trying to be a ROS package just by looking at its files. This will also decrease the likelihood of naming collisions with a package that also wants to have some other file called "package.xml"
On Thu, Sep 20, 2012 at 8:11 AM, tkruse <tibo...@googlemail.com> wrote:
Regarding the 'format' attribute,
<package format='1'>
Either this should be mandatory (and self-explaining like catkin_version='0.6'), or we should drop this. By now I think this should rather be dropped, and structure changes be introduced by tic-toc deprecation.
Yeah, I think it's reasonable for this to be mandatory. That being said "package format=1" could be confusing because it's talking about the package spec and not the package itself. If we change the xml filename to "rospackage.xml" then in the root tag we could do:<rospackage format='1'></rospackage>
+1 to removing the brief, also see http://www.ros.org/browse/list.php which shows how the full description can be cut off
and still be useful when people give a short and meaningful first sentence.
+1 as well
-1 to keeping review tag, i think that was agreed upon in the review meeting (http://www.ros.org/wiki/catkin/Reviews/2012-08-14_API_Review)
-1 as well
-j--Jonathan BohrenPhD StudentDynamical Systems and Control LaboratoryLaboratory for Computational Sensing and RoboticsThe Johns Hopkins University
--
You received this message because you are subscribed to the Google Groups "ROS Buildsystem Special Interest Group" group.
To post to this group, send email to ros-sig-b...@googlegroups.com.
To unsubscribe from this group, send email to ros-sig-buildsy...@googlegroups.com.
Sorry, I've been out of the loop, ICRA madness and all...
So one big thing that I remember discussing with Tully back in July, was making the manifest file have a ros-specific name, so that things like webcrawlers could easily find something that looks like a ros package on source servers. For example, instead of "package.xml" just calling it "rospackage.xml" would mean that I could tell if something was trying to be a ROS package just by looking at its files. This will also decrease the likelihood of naming collisions with a package that also wants to have some other file called "package.xml"
-1While in practice most catkin projects are ROS packages, they do not have to be. I can, for example, write a sensor interface library using catkin which does not rely on ROS and can be used outside of ROS. Ideally, Catkin is completely ROS agnostic. Catkin is simply an extension of cmake's capabilities, therefore making its only required file in a repository (package.xml) ROS specific makes no sense to me.
On Thu, Sep 20, 2012 at 7:00 AM, Jonathan Bohren <jonatha...@gmail.com> wrote:
Sorry, I've been out of the loop, ICRA madness and all...
So one big thing that I remember discussing with Tully back in July, was making the manifest file have a ros-specific name, so that things like webcrawlers could easily find something that looks like a ros package on source servers. For example, instead of "package.xml" just calling it "rospackage.xml" would mean that I could tell if something was trying to be a ROS package just by looking at its files. This will also decrease the likelihood of naming collisions with a package that also wants to have some other file called "package.xml"
I understand that perspective, ROS uses Catkin, not the other way around. So then what about "catkin.xml" or "catkinfo.xml" or something of that nature, just to set it aside?On Thu, Sep 20, 2012 at 12:45 PM, William Woodall <wwoo...@willowgarage.com> wrote:
-1While in practice most catkin projects are ROS packages, they do not have to be. I can, for example, write a sensor interface library using catkin which does not rely on ROS and can be used outside of ROS. Ideally, Catkin is completely ROS agnostic. Catkin is simply an extension of cmake's capabilities, therefore making its only required file in a repository (package.xml) ROS specific makes no sense to me.
-j--Jonathan BohrenPhD StudentDynamical Systems and Control LaboratoryLaboratory for Computational Sensing and RoboticsThe Johns Hopkins University
--
You received this message because you are subscribed to the Google Groups "ROS Buildsystem Special Interest Group" group.
To post to this group, send email to ros-sig-b...@googlegroups.com.
To unsubscribe from this group, send email to ros-sig-buildsy...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
We just had a conversation about this.(catkin.xml, catkinfo.xml): This is not preferable, because if we ever change from catkin to something else (we don't plan to, but...), this file will be out of place, package.xml is more generic.
--
You received this message because you are subscribed to the Google Groups "ROS Buildsystem Special Interest Group" group.
To post to this group, send email to ros-sig-b...@googlegroups.com.
To unsubscribe from this group, send email to ros-sig-buildsy...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
I would say I meant "we" to be catkin users. For example, we might choose to change the name of catkin, but not change its function (unlikely).
I still don't believe it should be prefixed with "ros". package.xml is simply more generic than catkin.xml, as package.xml describes the associated package which is worked on by catkin, but definitely is not ROS exclusive.
Additionally, other tools will likely use this file to gather information, like indexers, or QA scripts, and they will not be called catkin.
As stated by William before: "catkin" (or "ros") do not seem like reasonable parts for the filename.
This file exists to store meta information about the package.
It is not fixed to one specific tool and therefore a "generic" name is preferred.
Catkin-only - no rosbuild information inside
The file only specifies information needed for a ROS ecosystem which is entirely based on catkin. Any additional information necessary for backward compatibility with rosbuild is kept separate (i.e. in the legacy manifest.xml files). This enable to easily remove the legacy files in the future.
Tuly has mentioned why the other "generic" filename have not been selected (manifest, project, stack).
The formulation was intended to make clear that package.xml should not contain anything related to the old buildsystem "rosbuild".
Stuff only necessary for backward compatibility should not be part of the new specification.
I will update that block to make it more clear.
<indexing ecosystem="ros" allow="automated"/>
What should that tag be used for?
How would that work in contrast to the current indexing?
One option how this could be realized with the current spec:
You create a package "ros_web_indexer".
Then you can use a tag under export with the same name to embed arbitrary information.
<export>
<ros_web_indexer ecosystem="ros" allow="automated"/>
</export>
You indexer can then look for packages on the web and perform arbitrary operations with the meta information found.
Anyway, with the need for maintainers to embed that exta information the mount of packages which will have that defined might be pretty low...
On Sep 20, 2012 9:57 PM, "Dirk Thomas" <dth...@willowgarage.com> wrote:
On 20.09.2012 18:48, Jonathan Bohren wrote:
On Thu, Sep 20, 2012 at 9:46 PM, Dirk Thomas <dth...@willowgarage.com <mailto:dthomas@willowgarage.com>> wrote:
One option how this could be realized with the current spec:
You create a package "ros_web_indexer".
Then you can use a tag under export with the same name to embed arbitrary information.
<export>
<ros_web_indexer ecosystem="ros" allow="automated"/>
</export>
You indexer can then look for packages on the web and perform arbitrary operations with the meta information found.
Anyway, with the need for maintainers to embed that exta information the mount of packages which will have that defined might be pretty low...
Right, but I do like this method! What if roscreate-pkg automatically adds this by default?
Why bloating all package manifests by default?
If you would like to have opt-out, lets add the tag when the user does NOT want his package being indexed.
(The appropriate line could be included as a comment by roscreate-pkg...)
On 21.09.2012 05:58, tkruse wrote:
> Hi, I have more ideads/concerns:
>
> Concerns:
> Why do we move away from using the name of the folder as the package name? (this can cause confusion and breakage)
We are not moving away from that.
There is just technically no need for the folder name to be the same as the package name.
The guideline should still strongly suggest to use the same name.
Before it was a must have because a package did not have a name.
So the folder name was used instead.
> Why do we explicitly allow xhtml in the description? (This causes technical confusion about the interpretation of the contents)
That is not change in the spec - this has been the case all the time.
--
You received this message because you are subscribed to the Google Groups "ROS Buildsystem Special Interest Group" group.
To post to this group, send email to ros-sig-buildsystem@googlegroups.com.
To unsubscribe from this group, send email to ros-sig-buildsystem+unsub...@googlegroups.com.
Using the folder name as the package name seems to be the wrong approach.
Let me sketch some examples:
A)
You have a repository containing a single package.
In the case of SVN your URL might look like http://domain/svn/ containing trunk/branches/tags
If you check out trunk the folder is called "trunk" - not "pkgname".
That would be one case where the folder name is not automatically equal to the package name
B)
For the above example it is not even possible to determine the name of the package contained in the SVN repository
C)
You have checked out a package "pkgname".
After some changes you rename the folder to "pkgname-mod" (i.e. to fetch the original package again).
This will fail badly because only the folder name changed - everything inside the package is still using the original name.
I agree that this shouldn't be a hard and fast rule, but for C) won't cmake fail anyways if 'pkgname' and 'pkgname-mod' are in the same workspace?
The creation of a hello_world package should not feel like filling out a tax report. So all the information that is currently mandatory for releasing purposes should in my opinion only be mandatory at release time.
I was under the impression that "meta-packages" would not be supported
in Groovy. Is that wrong?
I don't even like the term "meta-package". I still think we should
call them "stacks".
As stated in the REP a metapackage contains only a package.xml and nothing else (no CMakeLists.txt, no libraries, binaries or any other files).
Besides the meta information it therefore only models dependencies.
On Mon, Oct 15, 2012 at 9:31 AM, tkruse <tibo...@googlemail.com> wrote:+1; an excellent idea.
> This thread has gone silent. Still i think that REP 127 is not in a good
> state yet.
>
> Other than removing the name tag, I also think it would be good to have
> separate standards for build time and release time.
>
> The creation of a hello_world package should not feel like filling out a tax
> report. So all the information that is currently mandatory for releasing
> purposes should in my opinion only be mandatory at release time. This means
> maintainer, license, ulrs.
> I intend to finish catkin_create_pkg to make initial creation of packages
> easier, but still even then I think a hello_world package should not cause
> failures for lack of a missing maintainer email or license. And filling
> "fixme" or "todo" values in the fields just makes it less likely that at
> release time people will remember to update those values.
> An alternative would be to have separate files and separate standards for
> releasing, such as a "release.xml" read by bloom, but I cannot tell which
> alternative is better.
+1
> Then I think REP127 could explain more on the ABI attribute (e.g. con one
> state that one depends on an ABI version?). If the attribute is dead for
> now, then it might be better not to have it at all for now, until we use it.
> Adding it later in a backward compatible way should be easy enough.
I am under the impression that the developers had decided "package
ABI" versions could *not* be implemented in time for Groovy. I agree
that we should not document this idea until the details have been
worked out and someone is ready to implement them.
Normal linker and loader ABI versions are *already* available in
CMake. What is needed for Groovy is clear documentation recommending
their use and showing how to set the SOVERSION in a CMake file. And
please, let's not confuse those two concepts.
+1
> Note also that for groovy release it might be nice to actually use the
> dependency version attributes of the REP, such as generating early failures
> if one tries to compile incompatible versions of catkin packages. If we find
> out in the process that this is unsuitable, then REP127 should probably be
> changed.
I was under the impression that "meta-packages" would not be supported
> Finally the concept of meta-package should be extended in my opinion. If it
> does not make sense for meta-packages to declare other dependencies than the
> packages they "contain", then the standard should forbid this (and validate
> that), meaning the meta-package tag should not be in the exports section and
> should have an alternative syntax where things are not allowed. E.g. may a
> meta-package have a CMakeLists, have sources, generate executables, etc.? If
> not, the REP needs to say so, in my opinion.
in Groovy. Is that wrong?
If not, I recommend removing that concept from REP 127 completely,
until such time as we are ready to actually do it. We can write a new
REP for it, when those requirements are better understood. I am happy
to work on that, but I want to get the timing right.
I don't even like the term "meta-package". I still think we should
call them "stacks".
--
joq
--
You received this message because you are subscribed to the Google Groups "ROS Buildsystem Special Interest Group" group.
To post to this group, send email to ros-sig-b...@googlegroups.com.
To unsubscribe from this group, send email to ros-sig-buildsy...@googlegroups.com.
That's why a metapackage is nothing special.
It is just a normal package with the "metapackage" flag in the exports section and without a CMakeLists.txt file.
The only special treatment is that no CMakeLists.txt is included when being processed by catkin.
So all the features and meta information available are the same as for packages, i.e.:
- allowing conflicting/replacing packages
- listing maintainers and url
On 16.10.2012 14:53, Jonathan Bohren wrote:
Yes: metapackages are used for distribution-level dependencies.
On Tue, Oct 16, 2012 at 5:41 PM, Dirk Thomas <dth...@willowgarage.com <mailto:dthomas@willowgarage.com>> wrote:
That's why a metapackage is nothing special.
It is just a normal package with the "metapackage" flag in the exports section and without a CMakeLists.txt file.
The only special treatment is that no CMakeLists.txt is included when being processed by catkin.
So all the features and meta information available are the same as for packages, i.e.:
- allowing conflicting/replacing packages
- listing maintainers and url
One apparent difference between stacks and metapackages is that stacks can be checked out from a VCS with their constituent packages, and metapackages can only be used for creating a
distribution-level dependency. Is this correct?
No: the options for checking out code have not changed.
Since currently all metapackages are usually former stacks (to keep BC and correlation of Wiki pages) they live in the same repository as the packages of that former stack.
So nothing has changed and you can still checkout the repo as a whole and get all the packages (including the metapackage).
- Dirk
--
You received this message because you are subscribed to the Google Groups "ROS Buildsystem Special Interest Group" group.
To post to this group, send email to ros-sig-buildsystem@googlegroups.com.
To unsubscribe from this group, send email to ros-sig-buildsystem+unsub...@googlegroups.com.