1 | \documentclass[11pt,epsf,a4wide]{article} |
---|
2 | \usepackage{../style/cerco} |
---|
3 | |
---|
4 | \title{ |
---|
5 | INFORMATION AND COMMUNICATION TECHNOLOGIES\\ |
---|
6 | (ICT)\\ |
---|
7 | PROGRAMME\\ |
---|
8 | \vspace*{1cm}Project FP7-ICT-2009-C-243881 \cerco{}} |
---|
9 | |
---|
10 | \date{ } |
---|
11 | \author{} |
---|
12 | |
---|
13 | \begin{document} |
---|
14 | \thispagestyle{empty} |
---|
15 | |
---|
16 | \vspace*{-1cm} |
---|
17 | \begin{center} |
---|
18 | \includegraphics[width=0.6\textwidth]{../style/cerco_logo.png} |
---|
19 | \end{center} |
---|
20 | |
---|
21 | \begin{minipage}{\textwidth} |
---|
22 | \maketitle |
---|
23 | \end{minipage} |
---|
24 | |
---|
25 | |
---|
26 | \vspace*{0.5cm} |
---|
27 | \begin{center} |
---|
28 | \begin{LARGE} |
---|
29 | \bf |
---|
30 | Report n. D6.1\\ |
---|
31 | Project Web Site and Software Repository\\ |
---|
32 | \end{LARGE} |
---|
33 | \end{center} |
---|
34 | |
---|
35 | \vspace*{2cm} |
---|
36 | \begin{center} |
---|
37 | \begin{large} |
---|
38 | Version 1.0 |
---|
39 | \end{large} |
---|
40 | \end{center} |
---|
41 | |
---|
42 | \vspace*{0.5cm} |
---|
43 | \begin{center} |
---|
44 | \begin{large} |
---|
45 | Main Authors:\\ |
---|
46 | M Puech, C. Sacerdoti Coen |
---|
47 | \end{large} |
---|
48 | \end{center} |
---|
49 | |
---|
50 | \vspace*{\fill} |
---|
51 | \noindent |
---|
52 | Project Acronym: \cerco{}\\ |
---|
53 | Project full title: Certified Complexity\\ |
---|
54 | Proposal/Contract no.: FP7-ICT-2009-C-243881 \cerco{}\\ |
---|
55 | |
---|
56 | \clearpage \pagestyle{myheadings} \markright{\cerco{}, FP7-ICT-2009-C-243881} |
---|
57 | |
---|
58 | \tableofcontents |
---|
59 | |
---|
60 | \section{Premise} |
---|
61 | The deliverable D6.1 \emph{Project Web Site and Software Repository} is the |
---|
62 | first \textbf{prototype} of the \cerco{} project. The deliverable is |
---|
63 | \textbf{public}, although part of the data handled by it are private, and |
---|
64 | required an effort of about \textbf{3 person-months}. |
---|
65 | The description of the deliverable in the Grant Agreement is the following one: |
---|
66 | \begin{quote} |
---|
67 | A web site will be designed and realised, and each partner will |
---|
68 | contribute to its content. The site will comprise a public part, accessible to everyone, and a private one, reserved |
---|
69 | to the project partners for the exchange of documentation, material, and to support project related activities. We |
---|
70 | will also install a revision control system (like SVN or GIT) to keep track of software evolution and we will adapt |
---|
71 | an existent continuous building system to trace software regressions nightly, in batch mode. |
---|
72 | \end{quote} |
---|
73 | |
---|
74 | \section{Overview} |
---|
75 | The aim of D6.1 is twofold: it must provide the main |
---|
76 | technological infrastructure for the advertisement and dissemination of the |
---|
77 | research results of \cerco{}, and it must also provide the means for direct |
---|
78 | communication and resource sharing among partners. Moreover, UNIBO will provide |
---|
79 | to the other partners the Matita\cite{matita} interactive theorem prover that will be used |
---|
80 | to obtain the certified \cerco{} compiler. We expect to make Matita evolve during |
---|
81 | the project timeframe in order to fix bugs that are critical for \cerco{} and in |
---|
82 | order to implement ad-hoc features. It is fundamental to grant to our |
---|
83 | partners immediate access to the changes of Matita and to monitor the |
---|
84 | behaviour of the system on the \cerco{} sources to avoid regressions and bugs |
---|
85 | introduction. Therefore, we plan to achieve a strict integration between |
---|
86 | the technological infrastructure for the development of Matita and the one for |
---|
87 | \cerco. |
---|
88 | |
---|
89 | In order to target the previous |
---|
90 | objectives, UNIBO (the project coordinator) has bought a server to be dedicated |
---|
91 | to the project with the following characteristics: |
---|
92 | \begin{quote} |
---|
93 | Dell PowerEdge R410, 16GB Memory for 1 CPU, DDR3, 1333MHz, Intel Xeon X5570, 2.93Ghz, 8M Cache, 4 x 300 GB, 15K RPM Hard Drive (HOT SWAP), RAID controller. |
---|
94 | \end{quote} |
---|
95 | |
---|
96 | The server characteristics have been chosen to allow for multiple virtual |
---|
97 | machines. In particular, for safety and flexibility purposes, direct access to |
---|
98 | the server is not allowed, but the server currently exposes the following |
---|
99 | virtual machines that can be accessed from the outside: |
---|
100 | \begin{description} |
---|
101 | \item[cerco.cs.unibo.it] This virtual machine hosts the ``project web site'' |
---|
102 | (actually, a Trac instance~\cite{trac}) and |
---|
103 | the software repository. These services are discussed in |
---|
104 | Sections~\ref{site} and~\ref{repo}. We installed on it the \emph{stable} |
---|
105 | version of the Debian distribution of Linux in order to maximise |
---|
106 | availability. |
---|
107 | \item[cbs.helm.cs.unibo.it] This virtual machine hosts the continuous building |
---|
108 | system (CBS) for Matita and \cerco{} that is discusses in Section~\ref{cbs}. |
---|
109 | We installed on it the \emph{unstable} version of the Debian distribution |
---|
110 | in order to immediately exploit the most recent developments of the software |
---|
111 | library that will be used in \cerco. |
---|
112 | \item[maelstrom.helm.cs.unibo.it] This is the development virtual machine of |
---|
113 | \cerco. It is open to all project participants in order to do remote |
---|
114 | development and testing in a controlled environment that has all the |
---|
115 | required libraries and tools. It is also based on the \emph{unstable} version |
---|
116 | of the Debian distribution and it is configured with all the libraries |
---|
117 | required by Matita and the OCaml ones we plan to use for CerCo . |
---|
118 | \end{description} |
---|
119 | |
---|
120 | The Department of Computer Science of the University of Bologna also provides |
---|
121 | an archived mailing list dedicated to the project members for general |
---|
122 | discussions and coordination. The archives are private and accessible to |
---|
123 | project members only. |
---|
124 | |
---|
125 | To maximise fault tolerance, we configured the server with RAID 5, so that |
---|
126 | the loss of one hard disk does not compromise the data. Moreover, we provide |
---|
127 | incremental nightly backups of all the sensible data and we store the backups |
---|
128 | on a different physical machine. The main motivation is to be able to recover |
---|
129 | accidentally deleted files or old machine configurations. |
---|
130 | |
---|
131 | Finally, the \cerco{} server acts as a network file system, NIS and DNS server for |
---|
132 | a cluster of virtual and physical machines (at the moment all located in |
---|
133 | Bologna) that can also be used for \cerco{} development. |
---|
134 | |
---|
135 | We discuss now the implementation of the ``Web Site'', Software Repository and |
---|
136 | Continuous Building System. |
---|
137 | |
---|
138 | \section{Project ``Web Site'' (Trac)}\label{site} |
---|
139 | In order to ease the creation of a community around the \cerco{} prototype, it |
---|
140 | was decided to prefer a Wiki-centred solution to a traditional Web Site. |
---|
141 | Our choice has been to install a personalised version of the |
---|
142 | Integrated SCM \& Project Management tool Trac~\cite{trac}, accessible at |
---|
143 | \url{http://cerco.cs.unibo.it}. |
---|
144 | Trac provides in an integrated and lightweight solution: |
---|
145 | \begin{enumerate} |
---|
146 | \item A Wiki for the advertisement and dissemination of the project results, |
---|
147 | and for fostering discussions and contributions from the user community. |
---|
148 | \item An issue tracking system that subsumes a bug tracking system and |
---|
149 | provides a basic control over the project advancement. |
---|
150 | \item An on-line, simplified Web interface to the software repository. |
---|
151 | \item A flexible system of plug-ins to add new functionalities or modify |
---|
152 | the behaviour of the basic ones. |
---|
153 | \end{enumerate} |
---|
154 | By means of additional plug-ins, we have integrated the public part of the |
---|
155 | Wiki with a private one. The private part is meant to integrate the mailing |
---|
156 | list in facilitating the discussion between the project developers. Moreover, |
---|
157 | since it is integrated with the software repository and Issue tracking systems, |
---|
158 | it is possible to create hyper-links to or to embed in discussion pages |
---|
159 | both code fragments and description of issues. |
---|
160 | |
---|
161 | \section{Software Repository}\label{repo} |
---|
162 | After considering several alternatives, it was decided to use a centralised |
---|
163 | software repository for the \cerco{} project, and we installed Subversion~\cite{subversion} on the |
---|
164 | \cerco{} server. Project members that prefer a distributed solution or that are |
---|
165 | used to work without network connectivity are advised to use the svn-git |
---|
166 | software to mirror the centralised repository. |
---|
167 | |
---|
168 | The repository is open in read mode to anonymous users, and in write mode to |
---|
169 | project members only. A simplified web interface to the repository is also |
---|
170 | integrated in Trac and publicly available. |
---|
171 | |
---|
172 | \section{Continuous Building System}\label{cbs} |
---|
173 | In \cerco{} we will develop both certified code (in Matita) and standard one |
---|
174 | (mainly in OCaml). We plan to adopt traditional testing methods (e.g. unit |
---|
175 | testing) to control bug regressions in the standard code, while the certified |
---|
176 | code will be checked by asking Matita to verify all the definitions and proofs |
---|
177 | of correctness. The last operation in particular can require quite a lot of |
---|
178 | time (in the order of at most a few hours), especially if proof automation will |
---|
179 | be heavily used in Matita to reduce the proving effort. Moreover, as already |
---|
180 | explained, we expect to observe a continuous evolution of Matita (and its |
---|
181 | standard library) to parallel the development of the \cerco. Each change in |
---|
182 | the code of Matita must trigger not only the checking for regressions on the |
---|
183 | \cerco{} code, but also on all the existent developments made in Matita (in order |
---|
184 | to avoid the possibility of introducing a bug that jeopardise the whole |
---|
185 | project or that will later require other changes before the next official |
---|
186 | release of Matita). |
---|
187 | |
---|
188 | Since re-checking all the Matita developments already |
---|
189 | requires several hours even on a fast machine, we cannot expect the developers |
---|
190 | of \cerco{} to delay distribution of their changes to the partners until all the |
---|
191 | regression tests have been performed. Moreover, it is fundamental to keep trace |
---|
192 | of the evolution of the performances of both the code of Matita and the code of |
---|
193 | the \cerco{} prototype. Performance checks are meaningful only if systematically |
---|
194 | repeated always on the same machine and with reproducible load conditions. |
---|
195 | Hence we put up an ad-hoc continuous building system for Matita+\cerco{} that |
---|
196 | supports the following workflow: |
---|
197 | \begin{itemize} |
---|
198 | \item Commits are always allowed and developers are invited to commit as soon |
---|
199 | as they obtain a code that compiles and seems to implement the wanted |
---|
200 | changes on ad-hoc tests. When the commit is supposed to close a bug, the |
---|
201 | developer is also requested to commit a test for the bug to avoid future |
---|
202 | regressions. Development branches are encouraged on personal copies of the |
---|
203 | repository (using git-svn), but are discouraged on the central repository. |
---|
204 | \item Every night the CBS virtual machine is brought back to a pristine |
---|
205 | condition and a script checks-out the latest version of the Matita and \cerco{} |
---|
206 | code, compiles the code of Matita, verifies the standard library, all |
---|
207 | the contribs of Matita and the certified \cerco{} code, and run all the |
---|
208 | regression tests on both the certified and un-certified code. All faults |
---|
209 | are recorded, as well as the performance of Matita on each source file. |
---|
210 | \item The statistics collected every night are stored in a data-base (a |
---|
211 | mysql instance) that runs on the cerco.cs.unibo.it virtual machine. The |
---|
212 | Subversion revision number is associated to the results in the statistics. |
---|
213 | Another set of scripts compares the statistics with those collected the |
---|
214 | previous |
---|
215 | night and, in case of significant regressions, sends a notification to all |
---|
216 | developers (using the \cerco{} mailing list). |
---|
217 | \item The developers can consult an ad-hoc web-interface to the data-base |
---|
218 | (written in python) that implements a set of ad-hoc queries or that allows |
---|
219 | the user to submit his own (by writing SQL code). In particular, |
---|
220 | the following predefined queries are available among others: |
---|
221 | \begin{enumerate} |
---|
222 | \item Showing the list of commits between two given dates. In particular, |
---|
223 | the user can discover who is responsible for a commit that |
---|
224 | introduced a regression or that had a negative impact on performances. |
---|
225 | \item Compare the statistics between two dates or revision numbers. |
---|
226 | \item Monitor the performance evolution of the system on a single test. |
---|
227 | \end{enumerate} |
---|
228 | \end{itemize} |
---|
229 | |
---|
230 | On purpose, the CBS does not retract the commits that introduce regressions. |
---|
231 | We expect that the developers that are responsible for regressions will |
---|
232 | retract their code the very next day, or they will fix the regression or they |
---|
233 | will notify the other developers on the reasons for not fixing the regression |
---|
234 | (e.g. when the regression is actually caused by an already present bug that |
---|
235 | was previously masked by some other fault). |
---|
236 | |
---|
237 | \section{Future evolutions} |
---|
238 | |
---|
239 | The software architecture implemented so far is fully sufficient to support the |
---|
240 | initial development of \cerco. Moreover, the public part of the Wiki has been |
---|
241 | loaded with an overall description of the project that was largely obtained by |
---|
242 | the grant agreement. We expect the system to keep evolving during the lifetime |
---|
243 | of \cerco{} both in the public (and private) contents and in the code of the |
---|
244 | continuous building system. We will also consider in the future the opportunity |
---|
245 | of integrating other services in the Trac interface, like live demos of the |
---|
246 | \cerco{} prototype. |
---|
247 | |
---|
248 | \begin{thebibliography}{9} |
---|
249 | \bibitem{matita} The Interactive Theorem Prover Matita, |
---|
250 | \url{http://matita.cs.unibo.it} |
---|
251 | \bibitem{subversion}The Version Control System Subversion, |
---|
252 | \url{http://subversion.apache.org} |
---|
253 | \bibitem{trac}The Integrated SCM \& Project Management tool Trac, |
---|
254 | \url{http://trac.edgewall.org} |
---|
255 | \end{thebibliography} |
---|
256 | |
---|
257 | \end{document} |
---|