# # File: ws-usage-2005-2021.R # # The percentages of usage of servers are taken from the table and graph diagram # reported in "Web Server Survey" page (found in Netcraft website) # which are named: "Web servers developers: Market share of all sites". # If the percentage of a web server developer goes below the standard threshold limit, # then it is no more named in text below Netcraft graph diagram but its integer # (without decimals) percentage of usage can be shown by pointing mouse cursor # under the last point of one of the curves of the diagram graph. # So the percentage of that historical web developer can be reported # in its data table (see below) in order to continue to track it. # # NOTE: percentages about Microsoft, Google (since 2021) and # "other" web servers have been rounded to integer part (no decimals). # # NOTE: to create this image file (see below: server.file) in Windows: # - install R software from: https://www.r-project.org/ # - open a terminal window # - set PATH=%PATH%;"C:\Program Files\R\R-4.1.2\bin" # - rscript ws-usage-2005-2021.R # server.names = c( "Apache", "Microsoft", "nginx", "Google", "OpenResty", "Cloudflare", "Other" ) server.years = c( 2005.0,2005.25,2005.5,2005.75, 2006.0,2006.25,2006.5,2006.75, 2007.0,2007.25,2007.5,2007.75, 2008.0,2008.25,2008.5,2008.75, 2009.0,2009.25,2009.5,2009.75, 2010.0,2010.25,2010.5,2010.75, 2011.0,2011.25,2011.5,2011.75, 2012.0,2012.25,2012.5,2012.75, 2013.0,2013.25,2013.5,2013.75, 2014.0,2014.25,2014.5,2014.75, 2015.0,2015.25,2015.5,2015.75, 2016.0,2016.25,2016.5,2016.75, 2017.0,2017.25,2017.5,2017.75, 2018.0,2018.25,2018.5,2018.75, 2019.0,2019.25,2019.5,2019.75, 2020.0,2020.25,2020.5,2020.75, 2021.0,2021.25,2021.5,2021.75 ) #Use the first month of the quarter: January, April, July, October server.apache = c( 68.43, 69.32, 69.60, 69.89, #2005 67.11, 62.72, 63.09, 61.44, #2006 60.17, 58.86, 52.65, 47.73, #2007 50.61, 50.42, 49.49, 50.43, #2008 52.26, 45.95, 47.17, 46.90, #2009 53.84, 53.93, 54.90, 58.07, #2010 59.13, 61.13, 65.86, 64.67, #2011 64.91, 65.46, 61.45, 58.00, #2012 55.26, 51.01, 52.19, 44.89, #2013 41.64, 37.74, 34.73, 37.45, #2014 39.74, 39.25, 38.34, 34.53, #2015 33.56, 26.96, 31.72, 23.84, #2016 21.51, 22.69, 17.83, 18.78, #2017 27.21, 25.58, 22.00, 22.98, #2018 21.30, 26.73, 27.75, 28.64, #2019 23.98, 24.73, 25.45, 27.04, #2020 26.38, 25.90, 25.61, 24.63 #2021 ) server.microsoft = c( 20.86, 20.45, 20.53, 20.55, #2005 20.61, 25.22, 29.48, 31.35, #2006 30.78, 31.13, 32.84, 37.13, #2007 35.81, 35.33, 35.57, 34.44, #2008 32.91, 29.27, 23.34, 21.58, #2009 24.08, 24.97, 25.87, 22.99, #2010 21.00, 18.83, 16.82, 15.66, #2011 14.46, 13.66, 14.62, 16.28, #2012 16.93, 19.95, 19.65, 23.10, #2013 29.42, 33.04, 37.53, 33.58, #2014 27.52, 27.83, 26.52, 30.40, #2015 28.95, 40.75, 35.26, 44.61, #2016 45.66, 44.71, 53.17, 49.44, #2017 31.85, 36.94, 40.28, 39.22, #2018 31.96, 25.05, 14.59, 14.08, #2019 14.03, 12.85, 11.36, 7.66, #2020 7.49, 5.54, 4.20, 4.00 #2021 ) server.nginx = c( NA, NA, NA, NA, #2005 NA, NA, NA, NA, #2006 NA, NA, NA, NA, #2007 NA, NA, NA, NA, #2008 1.87, 2.64, 4.25, 5.99, #2009 7.53, 6.32, 5.58, 6.07, #2010 7.50, 7.50, 6.54, 8.54, #2011 9.63, 10.32, 11.09, 11.80, #2012 12.64, 14.81, 13.60, 16.05, #2013 14.40, 15.25, 14.16, 14.42, #2014 14.61, 14.87, 15.47, 16.65, #2015 15.60, 13.23, 15.92, 13.77, #2016 17.63, 19.22, 15.05, 18.40, #2017 25.39, 22.62, 17.25, 19.72, #2018 24.74, 27.52, 34.59, 32.88, #2019 37.70, 36.91, 36.55, 34.24, #2020 33.33, 36.65, 36.54, 34.95 #2021 ) server.google = c( NA, NA, NA, NA, #2005 NA, NA, NA, NA, #2006 NA, NA, 4.35, 5.44, #2007 5.33, 6.08, 5.70, 5.76, #2008 5.32, 3.12, 5.94, 6.00, #2009 7.04, 6.70, 7.70, 6.43, #2010 5.53, 4.70, 4.38, 3.47, #2011 3.25, 3.26, 3.44, 3.38, #2012 3.58, 3.50, 3.92, 4.45, #2013 2.47, 2.19, 2.06, 1.89, #2014 2.30, 2.36, 2.38, 2.27, #2015 2.29, 1.90, 2.10, 1.51, #2016 1.00, 1.05, 1.18, 1.16, #2017 1.20, 1.26, 1.40, 1.41, #2018 1.58, 1.80, 2.11, 2.68, #2019 3.02, 3.42, 3.59, 3.86, #2020 3.86, 3.90, 4.10, 4.00 #2021 ) server.openresty = c( NA, NA, NA, NA, #2005 NA, NA, NA, NA, #2006 NA, NA, NA, NA, #2007 NA, NA, NA, NA, #2008 NA, NA, NA, NA, #2009 NA, NA, NA, NA, #2010 NA, NA, NA, NA, #2011 NA, NA, NA, NA, #2012 NA, NA, NA, NA, #2013 NA, NA, NA, NA, #2014 NA, NA, NA, NA, #2015 NA, NA, NA, NA, #2016 NA, NA, NA, NA, #2017 NA, NA, NA, NA, #2018 NA, NA, NA, NA, #2019 NA, NA, NA, NA, #2020 NA, 6.76, 6.20, 6.45 #2021 ) server.cloudflare = c( NA, NA, NA, NA, #2005 NA, NA, NA, NA, #2006 NA, NA, NA, NA, #2007 NA, NA, NA, NA, #2008 NA, NA, NA, NA, #2009 NA, NA, NA, NA, #2010 NA, NA, NA, NA, #2011 NA, NA, NA, NA, #2012 NA, NA, NA, NA, #2013 NA, NA, NA, NA, #2014 NA, NA, NA, NA, #2015 NA, NA, NA, NA, #2016 NA, NA, NA, NA, #2017 NA, NA, NA, NA, #2018 NA, NA, NA, NA, #2019 NA, NA, NA, NA, #2020 NA, NA, 4.49, 4.87 #2021 ) server.other = c( 8.00, 7.00, 7.00, 7.00, #2005 10.00, 10.00, 7.00, 7.00, #2006 7.00, 8.00, 8.00, 8.00, #2007 7.00, 7.00, 8.00, 8.00, #2008 7.00, 19.00, 19.00, 19.00, #2009 7.00, 8.00, 8.00, 6.00, #2010 7.00, 8.00, 6.00, 7.00, #2011 7.00, 7.00, 9.00, 10.00, #2012 11.00, 10.00, 10.00, 11.00, #2013 12.00, 11.00, 11.00, 12.00, #2014 15.00, 15.00, 16.00, 15.00, #2015 18.00, 16.00, 14.00, 14.00, #2016 13.00, 11.00, 11.00, 10.00, #2017 12.00, 11.00, 16.00, 13.00, #2018 16.00, 14.00, 15.00, 15.00, #2019 13.00, 14.00, 13.00, 14.00, #2020 16.00, 15.00, 16.00, 18.00 #2021 ) server.title = "Usage share of web servers" server.sub = "Source: Netcraft" server.file = "Usage share of web servers (Source Netcraft).svg" svg(file=server.file,width=12,height=7) par(lwd=2) plot(server.years, server.apache, type="l", ylim=c(0, 100), main=server.title, sub=server.sub, xlab="Year", ylab="Percent", col=1, xaxt="n") axis(1, at=2005:2021, las=2) lines(server.years, server.microsoft, col=2) lines(server.years, server.nginx, col=3) lines(server.years, server.google, col=4) lines(server.years, server.openresty, col=5) lines(server.years, server.cloudflare, col=6) lines(server.years, server.other, col=7) legend("topright",inset=0.05,col=1:7,lwd=3,legend=server.names) dev.off()