PicoTCP is a complete TCP/IP stack, intended for embedded devices and
designed to run on different architectures and networking
hardware. The architecture of the stack allows easy selection of the features
needed for any particular use, taking into account the sizing and
the performance of the platform on which the code is to run.
Even if it is designed
to allow for size and performance constraints, the chosen approach is to
comply with the latest standards in the telecommunications research, including
the latest proposals, in order to achieve the highest standards for
today's inter-networking communications. PicoTCP is distributed as
a library to be integrated with application and form a combination for
any hardware-specific firmware.


The main characteristics of the library are the following:
\begin{itemize}
\item \textbf{Modularity} Each component of the stack is deployed in a
separate module, allowing the selection at compile time of the components needed to
be included for any specific platform, depending on the particular use case.
We know that saving memory and resources is often mission-critical for a
project, and therefore PicoTCP is fully focussed on saving
up to the last byte of memory.
\item \textbf{Code Quality} Every component added to the
stack must pass a complete set of validation tests. Before new code can be
introduced it is scanned and proof-checked by three separate levels of
quality enforcement. The process related to the validation of the code is
one of the major tasks of the engineering team. In the top-down approach of the design, a
new module has to pass the review of our senior architects, to have it comply
with the general guidelines. The development of the smaller
components is done in a test-driven way, providing a specific unit test for each function call.
Finally, functional non-regression tests are performed
after the feature development is complete, and all the tests are automatically
scheduled to run several times per day to check for functional regressions.
\item \textbf{Adherence to the standards} The protocols
included in the stack are done following stepare designed by following meticulously the guidelines
provided by the International Engineering Task Force (IETF) with regards to
inter-networking communication. A strong adherence to the standards guarantees a
smooth integration with all the existing TCP/IP stacks, when communicating
with both other embedded devices and with the PC/server world.
\item \textbf{Features} A fully-featured protocol implementation including all those non-mandatory
features means better data-transfer performances, coverage of rare/unique 
network scenarios and topologies and a better integration with all types of
networking hardware devices.
\item \textbf{Transparency} The availability of the source code to the Free
Software community is an important added value of PicoTCP. 
%Our programmers
%are proud of the aestethic of their code, and they show it with no
%hesitation to the attention of the rest of the world.
The constant peer reviews and constructive comments on the
design and the development choices that PicoTCP receives from the academic world
and from several hundreds of hobbyists and  professionals who read the code,
are an essential element in the quality build-up of the product.
%PicoTCP constantly receives peer-reviews and constructive comments on the
%design and the development choices from the academic world and from several
%hundreds of hobbists and professionals who read the code.
%We strongly
%believe that software is not about keeping things secret: whenever one is
%convinced by the quality of their work, there is absolutely nothing to hide.
\item \textbf{Simplicity} The APIs provided to access the library
facilities, both from the applications as well as from the device drivers, are
small and well documented. This concurs with the goal of the library to facilitate
the integration with the surroundings and minimize the time used to combine
the stack with existing code. The support required to port to a new
architecture is so small it is reduced to a set of macros defined in a
header file specific for the platform.
\end{itemize}


