git: d7957d161f - main - books: Updating ports count stats in dev-model
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 13 Oct 2022 22:11:27 UTC
The branch main has been updated by bofh: URL: https://cgit.FreeBSD.org/doc/commit/?id=d7957d161fd9f7647c64b6919c3f41f05e9af159 commit d7957d161fd9f7647c64b6919c3f41f05e9af159 Author: Muhammad Moinur Rahman <bofh@FreeBSD.org> AuthorDate: 2022-10-13 22:06:52 +0000 Commit: Muhammad Moinur Rahman <bofh@FreeBSD.org> CommitDate: 2022-10-13 22:11:19 +0000 books: Updating ports count stats in dev-model Created a script that does the following: - Calculates ports count yearly - Calculates doc, ports, src, total unique committer numbers This script is available at: https://people.freebsd.org/~bofh/dropzone/dev-model.sh And the graph generated is using this script. The tables has been removed because it has been more than 28 years and putting this data in the tables is not feasible at all. Additionally the tables of each 1000 milestone is difficult to achieve now hence has got ridden of it too. Approved by: bcr (mentor) Differential Revision: https://reviews.freebsd.org/D36972 --- .../content/en/books/dev-model/_index.adoc | 117 +------ .../static/images/books/dev-model/portsstatus.png | Bin 11895 -> 0 bytes .../static/images/books/dev-model/portsstatus.svg | 341 +++++++++++++++++++++ 3 files changed, 344 insertions(+), 114 deletions(-) diff --git a/documentation/content/en/books/dev-model/_index.adoc b/documentation/content/en/books/dev-model/_index.adoc index d57bea510f..a8e4aba622 100644 --- a/documentation/content/en/books/dev-model/_index.adoc +++ b/documentation/content/en/books/dev-model/_index.adoc @@ -1067,123 +1067,12 @@ When a problem area is sufficiently isolated, most communication would be within A "port" is a set of meta-data and patches that are needed to fetch, compile and install correctly an external piece of software on a FreeBSD system. The amount of ports has grown at a tremendous rate, as shown by the following figure. -.Number of ports added between 1996 and 2008 [[fig-ports]] -image::portsstatus.png[Refer to tables below for a screen-reader friendly version.] +.Number of ports added between 1995 and 2022 [[fig-ports]] +image::portsstatus.svg -<<fig-ports>> shows the number of ports available to FreeBSD in the period 1995 to 2008. +<<fig-ports>> shows the number of ports available to FreeBSD in the period 1995 to 2022. It looks like the curve has first grown exponentially, and then from the middle of 2001 to the middle of 2007 grown linearly at a rate of about 2000 ports/year, before its growth rate gets lower. -Approximate dates each multiple of 1000 ports is reached - -[.informaltable] -[cols="1,1", options="header"] -|=== -| Number of ports -| Approximate date - -|1000 -|Late 1997 - -|2000 -|Late 1998 - -|3000 -|Early 2000 - -|4000 -|Late 2000 - -|5000 -|Mid 2001 - -|6000 -|4th quarter of 2001 - -|7000 -|Mid 2002 - -|8000 -|4th quarter of 2002 - -|9000 -|Mid 2003 - -|10000 -|End of 2003 - -|11000 -|Mid 2004 - -|12000 -|End of 2004 - -|13000 -|Mid 2005 - -|14000 -|Early 2006 - -|15000 -|Mid 2006 - -|16000 -|3rd quarter 2006 - -|17000 -|2nd quarter 2007 -|=== - -Approximate number of ports at the start of each year - -[.informaltable] -[cols="1,1", options="header"] -|=== -| Year -| Approximate number of ports - -|1995 -|100 - -|1996 -|300 - -|1997 -|700 - -|1998 -|1200 - -|1999 -|2000 - -|2000 -|2900 - -|2001 -|4300 - -|2002 -|6200 - -|2003 -|8100 - -|2004 -|10050 - -|2005 -|12100 - -|2006 -|14000 - -|2007 -|16200 - -|2008 -|17900 -|=== - As the external software described by the port often is under continued development, the amount of work required to maintain the ports is already large, and increasing. This has led to the ports part of the FreeBSD project gaining a more empowered structure, and is more and more becoming a sub-project of the FreeBSD project. diff --git a/documentation/static/images/books/dev-model/portsstatus.png b/documentation/static/images/books/dev-model/portsstatus.png deleted file mode 100644 index 542f24e232..0000000000 Binary files a/documentation/static/images/books/dev-model/portsstatus.png and /dev/null differ diff --git a/documentation/static/images/books/dev-model/portsstatus.svg b/documentation/static/images/books/dev-model/portsstatus.svg new file mode 100644 index 0000000000..30619f0a58 --- /dev/null +++ b/documentation/static/images/books/dev-model/portsstatus.svg @@ -0,0 +1,341 @@ +<?xml version="1.0" encoding="utf-8" standalone="no"?> +<svg + width="600" height="480" + viewBox="0 0 600 480" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" +> + +<title>Gnuplot</title> +<desc>Produced by GNUPLOT 5.4 patchlevel 1 </desc> + +<g id="gnuplot_canvas"> + +<rect x="0" y="0" width="600" height="480" fill="none"/> +<defs> + + <circle id='gpDot' r='0.5' stroke-width='0.5' stroke='currentColor'/> + <path id='gpPt0' stroke-width='0.222' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/> + <path id='gpPt1' stroke-width='0.222' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/> + <path id='gpPt2' stroke-width='0.222' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/> + <rect id='gpPt3' stroke-width='0.222' stroke='currentColor' x='-1' y='-1' width='2' height='2'/> + <rect id='gpPt4' stroke-width='0.222' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/> + <circle id='gpPt5' stroke-width='0.222' stroke='currentColor' cx='0' cy='0' r='1'/> + <use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/> + <path id='gpPt7' stroke-width='0.222' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/> + <use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/> + <use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/> + <use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/> + <use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/> + <use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/> + <path id='gpPt13' stroke-width='0.222' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/> + <use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/> + <filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'> + <feFlood flood-color='white' flood-opacity='1' result='bgnd'/> + <feComposite in='SourceGraphic' in2='bgnd' operator='atop'/> + </filter> + <filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'> + <feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/> + <feComposite in='SourceGraphic' in2='grey' operator='atop'/> + </filter> +</defs> +<g fill="none" color="white" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M89.31,422.40 L574.82,422.40 '/></g> +<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.31,422.40 L98.31,422.40 M574.82,422.40 L565.82,422.40 '/> <g transform="translate(80.92,426.30)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 0</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M89.31,369.77 L574.82,369.77 '/></g> +<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.31,369.77 L98.31,369.77 M574.82,369.77 L565.82,369.77 '/> <g transform="translate(80.92,373.67)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 5000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M89.31,317.15 L574.82,317.15 '/></g> +<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.31,317.15 L98.31,317.15 M574.82,317.15 L565.82,317.15 '/> <g transform="translate(80.92,321.05)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 10000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M89.31,264.52 L574.82,264.52 '/></g> +<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.31,264.52 L98.31,264.52 M574.82,264.52 L565.82,264.52 '/> <g transform="translate(80.92,268.42)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 15000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M89.31,211.89 L574.82,211.89 '/></g> +<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.31,211.89 L98.31,211.89 M574.82,211.89 L565.82,211.89 '/> <g transform="translate(80.92,215.79)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 20000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M89.31,159.26 L574.82,159.26 '/></g> +<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.31,159.26 L98.31,159.26 M574.82,159.26 L565.82,159.26 '/> <g transform="translate(80.92,163.16)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 25000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M89.31,106.64 L574.82,106.64 '/></g> +<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.31,106.64 L98.31,106.64 M574.82,106.64 L565.82,106.64 '/> <g transform="translate(80.92,110.54)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 30000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M89.31,54.01 L574.82,54.01 '/></g> +<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.31,54.01 L98.31,54.01 M574.82,54.01 L565.82,54.01 '/> <g transform="translate(80.92,57.91)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="end"> + <text><tspan font-family="Arial" > 35000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M89.31,422.40 L89.31,54.01 '/></g> +<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.31,422.40 L89.31,413.40 M89.31,54.01 L89.31,63.01 '/> <g transform="translate(89.31,444.30)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >1994</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M105.49,422.40 L105.49,417.90 M105.49,54.01 L105.49,58.51 M121.68,422.40 L121.68,417.90 M121.68,54.01 L121.68,58.51 + '/></g> +<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M137.91,422.40 L137.91,54.01 '/></g> +<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M137.91,422.40 L137.91,413.40 M137.91,54.01 L137.91,63.01 '/> <g transform="translate(137.91,444.30)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >1997</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M154.04,422.40 L154.04,417.90 M154.04,54.01 L154.04,58.51 M170.23,422.40 L170.23,417.90 M170.23,54.01 L170.23,58.51 + '/></g> +<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M186.41,422.40 L186.41,54.01 '/></g> +<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M186.41,422.40 L186.41,413.40 M186.41,54.01 L186.41,63.01 '/> <g transform="translate(186.41,444.30)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >2000</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M202.64,422.40 L202.64,417.90 M202.64,54.01 L202.64,58.51 M218.78,422.40 L218.78,417.90 M218.78,54.01 L218.78,58.51 + '/></g> +<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M234.96,422.40 L234.96,54.01 '/></g> +<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M234.96,422.40 L234.96,413.40 M234.96,54.01 L234.96,63.01 '/> <g transform="translate(234.96,444.30)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >2003</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M251.15,422.40 L251.15,417.90 M251.15,54.01 L251.15,58.51 M267.37,422.40 L267.37,417.90 M267.37,54.01 L267.37,58.51 + '/></g> +<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M283.51,422.40 L283.51,54.01 '/></g> +<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M283.51,422.40 L283.51,413.40 M283.51,54.01 L283.51,63.01 '/> <g transform="translate(283.51,444.30)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >2006</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M299.70,422.40 L299.70,417.90 M299.70,54.01 L299.70,58.51 M315.88,422.40 L315.88,417.90 M315.88,54.01 L315.88,58.51 + '/></g> +<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M332.11,422.40 L332.11,54.01 '/></g> +<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M332.11,422.40 L332.11,413.40 M332.11,54.01 L332.11,63.01 '/> <g transform="translate(332.11,444.30)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >2009</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M348.25,422.40 L348.25,417.90 M348.25,54.01 L348.25,58.51 M364.43,422.40 L364.43,417.90 M364.43,54.01 L364.43,58.51 + '/></g> +<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M380.62,422.40 L380.62,54.01 '/></g> +<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M380.62,422.40 L380.62,413.40 M380.62,54.01 L380.62,63.01 '/> <g transform="translate(380.62,444.30)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >2012</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M396.84,422.40 L396.84,417.90 M396.84,54.01 L396.84,58.51 M412.98,422.40 L412.98,417.90 M412.98,54.01 L412.98,58.51 + '/></g> +<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M429.17,422.40 L429.17,54.01 '/></g> +<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M429.17,422.40 L429.17,413.40 M429.17,54.01 L429.17,63.01 '/> <g transform="translate(429.17,444.30)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >2015</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M445.35,422.40 L445.35,417.90 M445.35,54.01 L445.35,58.51 M461.58,422.40 L461.58,417.90 M461.58,54.01 L461.58,58.51 + '/></g> +<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M477.72,422.40 L477.72,54.01 '/></g> +<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M477.72,422.40 L477.72,413.40 M477.72,54.01 L477.72,63.01 '/> <g transform="translate(477.72,444.30)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >2018</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M493.90,422.40 L493.90,417.90 M493.90,54.01 L493.90,58.51 M510.09,422.40 L510.09,417.90 M510.09,54.01 L510.09,58.51 + '/></g> +<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M526.31,422.40 L526.31,54.01 '/></g> +<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M526.31,422.40 L526.31,413.40 M526.31,54.01 L526.31,63.01 '/> <g transform="translate(526.31,444.30)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >2021</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M542.45,422.40 L542.45,417.90 M542.45,54.01 L542.45,58.51 M558.64,422.40 L558.64,417.90 M558.64,54.01 L558.64,58.51 + '/></g> +<g fill="none" color="black" stroke="black" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="gray" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='gray' stroke-dasharray='2,4' class="gridline" d='M574.82,422.40 L574.82,54.01 '/></g> +<g fill="none" color="gray" stroke="gray" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M574.82,422.40 L574.82,413.40 M574.82,54.01 L574.82,63.01 '/> <g transform="translate(574.82,444.30)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >2024</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.31,54.01 L89.31,422.40 L574.82,422.40 L574.82,54.01 L89.31,54.01 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(19.18,238.21) rotate(270)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >Ports Count</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(332.06,471.30)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >Year</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> + <g id="gnuplot_plot_1" ><title>192</title> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='rgb(255, 0, 0)' d='M121.66,417.30 L137.87,412.75 L154.04,405.48 L170.22,395.60 L186.39,382.97 L202.61,365.08 L218.78,340.44 L234.95,324.78 + L251.12,301.44 L267.34,279.95 L283.51,262.15 L299.69,239.14 L315.86,223.85 L332.08,207.79 L348.25,194.85 L364.42,181.03 + L380.59,177.26 L396.81,168.18 L412.98,163.02 L429.16,164.27 L445.33,152.21 L461.55,141.28 L477.72,129.10 L493.89,120.86 + L510.06,118.98 L526.28,117.68 L542.45,105.08 '/></g> + </g> +<g fill="none" color="white" stroke="rgb(255, 0, 0)" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="black" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <path stroke='black' d='M89.31,54.01 L89.31,422.40 L574.82,422.40 L574.82,54.01 L89.31,54.01 Z '/></g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> + <g transform="translate(332.06,30.91)" stroke="none" fill="black" font-family="Arial" font-size="12.00" text-anchor="middle"> + <text><tspan font-family="Arial" >Number of ports over the year</tspan></text> + </g> +</g> +<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter"> +</g> +</g> +</svg> +