Contributing to the Parma Polyhedra Library
There are several ways you can contribute to the success of the PPL: please, at least be kind; to be even kinder to us, you could contribute your personal time and/or your CPU time. All contributions will be greatly appreciated and properly recognized in an appropriate way. []{#be-kind}
Be Kind
Doing what is considered The Right Thing (TM) in the various communities we belong to (scientific community: give credit, cite; free software community: release code; human community: provide feedback, be grateful) is what we ask of you.
By Citing Wherever Appropriate
If you use the PPL in a research project that gives rise to some kind of publication, please do acknowledge the PPL and cite one or more appropriate papers. If you are unsure about what to cite, you can consult our little PPL papers road map.
By Distributing Your Software
Most of the things we know about software development are largely due to the chances we have had in obtaining, playing with and modifying good quality software written by others. Moreover, most of the tools routinely used in producing the PPL have been made available by the free software community, to which we belong. By distributing the PPL as free software and by taking the occasion, during the development work, of contributing to the improvement of the entire tool chain, we are able to give something back to this community.
Now about you. We hope you find the PPL useful in some way and, if you write an application using it, we wish to encourage you to release it. Do not be shy: it will never be polished enough. Do not be modest: even if you think that your application will not interest many people, we are interested in it. We routinely use (and need more) applications based on the PPL for the purposes of regression testing and performance monitoring. To summarize: if you don’t care about free software or its community, it doesn’t matter; if you don’t have a potential user community, it doesn’t matter; if you don’t have a nice packaging or documentation, it doesn’t matter; by releasing your code anyway, you will do a personal favor to the people who provided the PPL.
By Providing Feedback or Just Saying Hello
Feedback is always useful, whether it positive or negative. Whatever you are doing with the PPL, we are glad to know about it. If you are disappointed or satisfied or you have suggestions about the library or its documentation or this web site, just let us know. Even if you think you have nothing particularly useful to say, just knowing that you have been doing something with the PPL will give us extra motivation to continue our work. []{#contribute-time}
Contribute Time
Time is our biggest problem: if you can spare some time, then you have something important to contribute to the project.
By Giving a Little
With Beta Testing
We need beta testers. Not only are we short of time, but also have an inadequate number of computing platforms for testing work. So we would be grateful if you could can give us a hand by downloading, compiling, running the test suite of the library, and letting us know the result; if went OK or, if not, what went wrong. You can do this sporadically (just go to the download page and follow the instructions) or in a more systematic way: get in touch with us and let us know that you are willing to be involved and in what way. For instance, just before new releases, we are particularly in need for help: with your permission we could send you a message, say, one month before each release with instructions on how to obtain the prereleases and how to test them.
By Mirroring
Even though we often make copies of the PPL Git central repository, we do not have a formal, reliable backup strategy to protect us from hardware failures and other causes of data loss. If you have the possibility of mirroring the repository, please use the anonymous rsync access facility and let us know how we can retrieve the mirror images in case disaster strikes.
By Giving More
With Ports to Other Platforms
If you would like to see the PPL ported to other platforms, you are welcome to work with us toward this objective. The work should be facilitated by the fact that we have always tried to be strictly compliant to all the applicable standards.
With Test Programs
Writing small programs that test the PPL facilities is one of the best ways to learn how to use the library. If you plan to do this exercise, then send us your test programs: we need them for regression testing. If you want advice on how to write your test programs so that their utility can be maximized please contact us; we will be very happy to help.
By Giving Even More
With Projects and Theses
The PPL and applications one can write using it
provide excellent material for projects and theses. Please, do not be
mistaken: not all projects or theses that can be built around the PPL
require a deep knowledge of the mathematics that justifies its inner
mechanisms, and several of them do not require any knowledge of the
inner machinery.
La PPL e le applicazioni che con essa si
possono realizzare forniscono spunti eccellenti per tesi e progetti. Non
ci si inganni: non tutti i progetti o le tesi che si possono costruire
attorno alla PPL richiedono una conoscenza profonda della matematica che
giustifica i suoi algoritmi. Al contrario, molti progetti o tesi possono
prescindere completamente dai dettagli implementativi.
Se sei uno studente all’Università di Parma e
pensi che una tesi, un progetto o un tirocinio interno potrebbero
interessarti, mettiti in contatto con Roberto
Bagnara o Enea
Zaffanella .
If you are a student or teacher anywhere in the
world and are interested about a project (for you or for some of your
students) on/with/around the PPL, then get in touch with us and we will
try to help as much as we can. []{#contribute-cpu-cycles}
By Contributing CPU Cycles
The Tinderbox system is
based on build machines: these are machines that repeatedly fetch the
code in some Git branch and try to compile it and to run the
non-regression test suite. The frequency with which this task is
executed varies: on our own machines it may be continuous near release
dates, but this does not have to be the case; it can be controlled by
means of a cron
job. Sensible frequencies are in the range from once
per day to once per week and, of course, these jobs can be run overnight
so as to minimize impact on other activities. If you have a machine with
spare time and you would like to help, please get in touch with us: we
will send you the scripts and all the instructions you need to make it
act as a build machine.