Tool Roadmap for the RTEMS Pre-Qualification
Sebastian Huber
sebastian.huber at embedded-brains.de
Thu Feb 13 07:04:38 UTC 2020
On 12/02/2020 17:19, Gedare Bloom wrote:
> On Tue, Feb 11, 2020 at 3:29 AM Sebastian Huber
> <sebastian.huber at embedded-brains.de> wrote:
>> Hello,
>>
>> this email tries to give an overview of the tool roadmap for the RTEMS
>> pre-qualification activity and things to decide for the RTEMS Project.
>>
>> The tools used for the RTEMS pre-qualification will be command line
>> tools only.
> I would like to see an explicit intent for tools to work on specific
> command lines of our common development platforms. At least, they
> should work in Ubuntu LTS/Centos/SUSE/MacOS default shells (bash).
>
> Whether they need to work in Windows is debatable, I don't know any
> open-source RTEMS developers that work primarily in Windows. The
> command line there is a moving target--with the Linux subsystem, it is
> more or less possible to run any scripts that work in Ubuntu under
> Windows. It would be nice to define a path that works with Cygwin,
> simply from an open-source ecosystem perspective.
Ok, my sentence was a bit unclear. What I meant is that the tools
developed for the RTEMS pre-qualification will be command line tools
only. For static analysis we may want to use Coverity for example. The
formal methods stuff uses its own bunch of tools.
I think we have to differentiate here a bit. It is clear that the tools
used also for daily RTEMS development should run on all our usual
development hosts. The generator tools which read the specification and
output header and documentation sources are an example for this. These
tools are really simple. Apart from needing a module to read YAML files,
they will only use the standard Python library (maybe Python 3.6+). For
the pre-qualification we may need also complex third-party tools or web
services which are not available on all development hosts. For these
tools it is important to evaluate the impact on the RTEMS Project. Tool
reports could for example result in a series of patches. The patches
should make sense for the RTEMS Project. It is important to document
what was used. It is also important to make the complex tools optional
and check their availability on the host. If it is not present, you get
a warning and reduced functionality, but you should still be able to use
the basic tools.
> [...]
>> 2. We add a new empty rtems-qual repository.
>>
>> 2.1. In this repository we add a "spec" directory for the non-build
>> specification items.
>>
>> 2.2. In this repository we add all the generator tools.
>>
>> 2.3. In this repository we add things closely related to pre-qualification.
>>
>> 2.4. In this repository we add Git submodules for the other RTEMS
>> repositories
>> touched by the generator tools. Changes in generated files in the
>> standard
>> RTEMS repositories go through the normal patch review process.
>>
>> 2.5. This repository may use a simplified review policy during the initial
>> pre-qualification activity.
>>
>> Once the pre-qualification activity produced in a mature and usable
>> infrastructure we can re-evaluate the repository organization and the
>> location
>> of the specification.
>>
> This seems OK. Basically, you propose a "draft repository" for
> developing the products that hopefully can get integrated to the "4
> main repositories" of RTEMS Project. It can also keep community burden
> and review off the critical path of the sponsored project's timeline.
> The risk is that the effort does not merge anything, but I think there
> is sufficient interest and motivation that the pieces of this that
> seem useful will migrate into the main repos.
>
> An organization like this also makes a lot of sense from a
> Packaging/Release standpoint.
>
> Will it be clear in the subrepos that certain source code should not
> be modified without first checking the HOWTOs and specifications? Or
> is this knowledge to be understood by the development community and
> enforced by the maintainers? In other words, what mechanisms will be
> in place to help us avoid "breaking" traceability/pre-qualification?
Generated files will have a notice in the file header. However, who
reads file headers if you want to change something in the middle? It
will show up during patch review if something was not done properly
provided the parties interested in the pre-qualification remain to be
active. If not, then the normal bit rot will occur. If the stuff is
difficult to use without a clear benefit, then it will also bit rot. It
is our job to make it easy to use with clear benefits for the maintainers.
>
>> === Python Development ===
>>
>> The tool development in Python for the pre-qualification is a team work
>> activity. Therefore we should introduce a coding standard, automatic code
>> formatters (black, yapf), static analysis tools (mypy, pylint, flake8),
>> documentation checkers (pydocstyle), and unit/integration tests
>> (unittest and
>> unittest.mock modules). The mentioned Python development tools are just
>> examples. There use and configuration should be discussed on the RTEMS
>> mailing
>> list.
>>
>> If we place the specification along with corresponding tools into a separate
>> repository we can use it to set up a prototype Python development work flow.
>>
> I think the main concern here is that the Python tools for
> qualification shouldn't impose a great burden on the community
> maintainers. Developing them in a separate repo will help. The
> qualification activity can use a more stringent (i.e., restrictive)
> set of coding standards---such as Python versions and workflow
> processes---than currently in use elsewhere (RSB, rtems-test).
I did a bit of Python development for the Doorstop project last year. I
am quite confident that the use of a Python development workflow with
the aid of standard Python development tools will make the job a lot
easier for maintainers. In Doorstop, if you make a pull request on
Github your patch set is piped through code formatters, style checkers,
static analysis, documentation style checkers, unit tests, integration
tests, and code coverage analysis. The stuff is packaged and deployed in
a test environment. If everything is all right, you see three green
lights in the pull request. If there is one red light you know the
maintainer will not look at this pull request.
More information about the devel
mailing list