--- a
+++ b/OSSEval/OpenSourceProject/methodology.xml
@@ -0,0 +1,456 @@
+<!--
+# This Source Code Form of OSSEval is subject to the terms of the GNU AFFERO
+# GENERAL PUBLIC LICENSE, v. 3.0. If a copy of the AGPL was not
+# distributed with this file, You can obtain one at http://www.gnu.org/licenses/agpl.txt
+#
+# OSSeval is powered by the SOS Open Source AGPL edition.
+# The AGPL requires that you do not remove the SOS Open Source attribution and copyright
+# notices from the user interface (see section 5.d below).
+# Commercial licenses are available and do not require any SOS Open Source attributions
+# or visible copyright notices but they are not permitted under this license.
+
+# OSSEval Copyright 2014 Bitergium SLL
+# SOS Open Source Copyright 2012 Roberto Galoppini
+# Author: Davide Galletti
+-->
+
+<?xml version="1.0" encoding="UTF-8"?>
+<osseval>
+ <MethodologyVersion Id="1" Number="1" Created="2014-06-04" Current="True">
+ <Methodology Id="1" Name="opensourceprojects.eu OSSEval" Active="True">
+ <Description><![CDATA[Standard opensourceprojects.eu OSSEval methodology with python]]></Description>
+ <Documentation><![CDATA[]]></Documentation>
+ <Entity Id="1" Name="OSS projects" ActualEntityClass="OSProject" ActualEntityApp="OpenSourceProject"/>
+ </Methodology>
+ <Pages>
+ <Page Id="2" Name="Sustainability" Order="1">
+ <Pages>
+ <Page Id="3" Name="Maturity" Order="1"><Pages/>
+ <Questions>
+ <Question Id="1" Text="Maturity" Order="1">
+ <EvalDescription><![CDATA[if i["days"]>0:
+ description+="Active for " + str(i["days"]) + " days<br>"
+if 'OHLOH' in i.keys() and 'factoids' in i['OHLOH'].keys():
+ for f in i["OHLOH"]["factoids"]:
+ if f["type"]=="FactoidAgeYoung" or f["type"]=="FactoidAgeOld" or f["type"]=="FactoidAgeVeryOld":
+ description+=f["description"] + " (" + f["severity"] + ")<br>"]]></EvalDescription>
+ <EvalValue><![CDATA[value=-1
+if i['days']>0:
+ if (i['days']<365): value=1;
+ if (i['days']<730): value=2;
+ if (i['days']>=730): value=3;]]></EvalValue>
+ <Queries/>
+ <Choices>
+ <Choice Id="1" Text="Age Less than 1 year old" Order="1"><Todo/></Choice>
+ <Choice Id="2" Text="1-3 years old" Order="2"><Todo/></Choice>
+ <Choice Id="3" Text="More than 3 years old" Order="3"><Todo/></Choice>
+ </Choices>
+ </Question>
+ <Question Id="2" Text="Stability" Order="2">
+ <EvalDescription><![CDATA[for f in i["OHLOH"]["factoids"]:
+ if f["type"]=="FactoidActivityDecreasing":
+ description+=f["description"] + " (" + f["severity"] + ")<br>"
+if 'commits_spark' in i["OHLOH"].keys(): description+="<img src='"+i["OHLOH"]["commits_spark"]+"'/>"]]></EvalDescription>
+ <EvalValue><![CDATA[]]></EvalValue>
+ <Queries/>
+ <Choices>
+ <Choice Id="4" Text="Unstable" Order="1"><Todo/></Choice>
+ <Choice Id="5" Text="Stable but old" Order="2"><Todo/></Choice>
+ <Choice Id="6" Text="Stable and maintained " Order="3"><Todo/></Choice>
+ </Choices>
+ </Question>
+ </Questions>
+ </Page>
+ <Page Id="4" Name="Adoption" Order="2">
+ <Pages/>
+ <Questions>
+ <Question Id="3" Text="Popularity" Order="1">
+ <EvalDescription><![CDATA[try:
+ description += "free(code): popularity score " + str(i['FM']['popularity_score']) + " - vitality score " + str(i['FM']['vitality_score']) + " - rating " + str(i['FM']['rating']) + " - rating count " + str(i['FM']['rating_count'])
+except:
+ pass
+SearchEngine.trends_img(i["name"])]]></EvalDescription>
+ <EvalValue><![CDATA[]]></EvalValue>
+ <Queries/>
+ <Choices>
+ <Choice Id="7" Text="Unknown" Order="1"><Todo/></Choice>
+ <Choice Id="8" Text="Small but growing trend" Order="2"><Todo/></Choice>
+ <Choice Id="9" Text="Well known" Order="3"><Todo/></Choice>
+ </Choices>
+ </Question>
+ <Question Id="4" Text="References" Order="2">
+ <EvalDescription><![CDATA[]]></EvalDescription>
+ <EvalValue><![CDATA[]]></EvalValue>
+ <Queries>
+ <Query Id="1">
+ <EvalText><![CDATA[q="%2B\"" + i['name'] + "\"%20%2B\"open source\"%20%2B\"case study\"%20%2B\"how to\""]]></EvalText>
+ <EvalSite><![CDATA[sites=[i['siteforsearchengine']]]]></EvalSite>
+ </Query>
+ </Queries>
+ <Choices>
+ <Choice Id="10" Text="Unknown" Order="1"><Todo/></Choice>
+ <Choice Id="11" Text="Case studies available on the website" Order="2"><Todo/></Choice>
+ <Choice Id="12" Text="Case studies and implementations available on the net" Order="3"><Todo/></Choice>
+ </Choices>
+ </Question>
+ <Question Id="5" Text="Books" Order="3">
+ <EvalDescription><![CDATA[]]></EvalDescription>
+ <EvalValue><![CDATA[if int(search_count)==0:
+ value=0
+if int(search_count)>0:
+ value=1
+if int(search_count)>50:
+ value=2]]></EvalValue>
+ <Queries>
+ <Query Id="14">
+ <EvalText><![CDATA[q="%2B\"" + i['name'] + "\"%20%2B\"open source\""]]></EvalText>
+ <EvalSite><![CDATA[sites=["packtpub.com", "amazon.com", "oreilly.com"]]]></EvalSite>
+ </Query>
+ </Queries>
+ <Choices>
+ <Choice Id="13" Text="None" Order="1"><Todo/></Choice>
+ <Choice Id="14" Text="Few (less than 5)" Order="2"><Todo/></Choice>
+ <Choice Id="15" Text="Many (more than 5)" Order="3"><Todo/></Choice>
+ </Choices>
+ </Question>
+ </Questions>
+ </Page>
+ <Page Id="5" Name="Leadership" Order="3">
+ <Pages/>
+ <Questions>
+ <Question Id="6" Text="Team size" Order="1">
+ <EvalDescription><![CDATA[description = ""
+if 'OHLOH' in i.keys() and 'factoids' in i['OHLOH'].keys():
+ for f in i["OHLOH"]["factoids"]:
+ if f["type"][:15]=="FactoidTeamSize":
+ description+=f["description"] + " (" + f["severity"] + ")<br>"]]></EvalDescription>
+ <EvalValue><![CDATA[if 'OHLOH' in i.keys() and 'factoids' in i['OHLOH'].keys():
+ for f in i["OHLOH"]["factoids"]:
+ if f["type"]=="FactoidTeamSizeLarge" or f["type"]=="FactoidTeamSizeVeryLarge":
+ value = 2]]></EvalValue>
+ <Queries/>
+ <Choices>
+ <Choice Id="16" Text="Between 1 and 5" Order="1"><Todo/></Choice>
+ <Choice Id="17" Text="Between 5 and 10" Order="2"><Todo/></Choice>
+ <Choice Id="18" Text="More than 10" Order="3"><Todo/></Choice>
+ </Choices>
+ </Question>
+ <Question Id="7" Text="Management style" Order="2">
+ <EvalDescription><![CDATA[]]></EvalDescription>
+ <EvalValue><![CDATA[]]></EvalValue>
+ <Queries/>
+ <Choices>
+ <Choice Id="19" Text="Monarchy" Order="1"><Todo/></Choice>
+ <Choice Id="20" Text="Company-led" Order="2"><Todo/></Choice>
+ <Choice Id="21" Text="Community-led" Order="3"><Todo/></Choice>
+ </Choices>
+ </Question>
+ </Questions>
+ </Page>
+ </Pages>
+ <Questions/>
+ </Page>
+ <Page Id="6" Name="Industrialization" Order="2">
+ <Pages>
+ <Page Id="7" Name="Services" Order="1">
+ <Pages/>
+ <Questions>
+ <Question Id="8" Text="Training" Order="1">
+ <EvalDescription><![CDATA[]]></EvalDescription>
+ <EvalValue><![CDATA[]]></EvalValue>
+ <Queries>
+ <Query Id="15">
+ <EvalText><![CDATA[q="%2B\"" + i['name'] + "\"%20%2B\"open source\"%20training"]]></EvalText>
+ <EvalSite><![CDATA[]]></EvalSite>
+ </Query>
+ </Queries>
+ <Choices>
+ <Choice Id="22" Text="Not available" Order="1"><Todo/></Choice>
+ <Choice Id="23" Text="Available only in a geographic area-language" Order="2"><Todo/></Choice>
+ <Choice Id="24" Text="Available from multiple vendors and in different languages" Order="3"><Todo/></Choice>
+ </Choices>
+ </Question>
+ <Question Id="9" Text="Commercial Support" Order="2">
+ <EvalDescription><![CDATA[]]></EvalDescription>
+ <EvalValue><![CDATA[]]></EvalValue>
+ <Queries>
+ <Query Id="4">
+ <EvalText><![CDATA[q="%2B\"" + i['name'] + "\"%20%2B\"open source\"%20%2B\"merchant support\""]]></EvalText>
+ <EvalSite><![CDATA[]]></EvalSite>
+ </Query>
+ </Queries>
+ <Choices>
+ <Choice Id="25" Text="Available only from the author" Order="1"><Todo/></Choice>
+ <Choice Id="26" Text="Available from the community" Order="2"><Todo/></Choice>
+ <Choice Id="27" Text="Available from multiple vendors and in different languages" Order="3"><Todo/></Choice>
+ </Choices>
+ </Question>
+ </Questions>
+ </Page>
+ <Page Id="8" Name="Documentation" Order="2">
+ <Pages/>
+ <Questions>
+ <Question Id="10" Text="Documentation" Order="1">
+ <EvalDescription><![CDATA[if 'documentation_url' in i.keys() and i['documentation_url'][:4]=="http":
+ description+= '<a href="'+i['documentation_url']+'" target="_blank">Documentation</a>'
+
+ if 'wiki_url' in i.keys() and i['wiki_url'][:4]=="http":
+ description+= '<a href="'+i['wiki_url']+'" target="_blank">Wiki</a>'
+
+ if 'faq_url' in i.keys() and i['faq_url'][:4]=="http":
+ description+= '<a href="'+i['faq_url']+'" target="_blank">FAQ</a>']]></EvalDescription>
+ <EvalValue><![CDATA[]]></EvalValue>
+ <Queries>
+ <Query Id="8">
+ <EvalText><![CDATA[q="%2B\"" + i['name'] + "\"%20%2B\"open source\"%20\"tutorial\"%20\"manual\""]]></EvalText>
+ <EvalSite><![CDATA[]]></EvalSite>
+ </Query>
+ </Queries>
+ <Choices>
+ <Choice Id="28" Text="Not available" Order="1"><Todo/></Choice>
+ <Choice Id="29" Text="Available only in one language" Order="2"><Todo/></Choice>
+ <Choice Id="30" Text="Available in many languages" Order="3"><Todo/></Choice>
+ </Choices>
+ </Question>
+ </Questions>
+ </Page>
+ <Page Id="9" Name="QA" Order="3">
+ <Pages/>
+ <Questions>
+ <Question Id="11" Text="Bugs reactivity" Order="1">
+ <EvalDescription><![CDATA[if 'numBugsTotal' in i.keys() and int(i['numBugsTotal'])>0:
+ description='Total bugs: ' + str(i['numBugsTotal'])]]></EvalDescription>
+ <EvalValue><![CDATA[]]></EvalValue>
+ <Queries/>
+ <Choices>
+ <Choice Id="31" Text="Scarce" Order="1"><Todo/></Choice>
+ <Choice Id="32" Text="Formalized but not reactive" Order="2"><Todo/></Choice>
+ <Choice Id="33" Text="Formalized and reactive" Order="3"><Todo/></Choice>
+ </Choices>
+ </Question>
+ <Question Id="12" Text="QA Process" Order="2">
+ <EvalDescription><![CDATA[]]></EvalDescription>
+ <EvalValue><![CDATA[]]></EvalValue>
+ <Queries>
+ <Query Id="9">
+ <EvalText><![CDATA[q="%2B\"" + i['name'] + "\"%20%2B\"open source\"%20%2B\"bug track\""]]></EvalText>
+ <EvalSite><![CDATA[]]></EvalSite>
+ </Query>
+ </Queries>
+ <Choices>
+ <Choice Id="34" Text="Not existent" Order="1"><Todo/></Choice>
+ <Choice Id="35" Text="Existing but not supported by tools" Order="2"><Todo/></Choice>
+ <Choice Id="36" Text="Supported by tools" Order="3"><Todo/></Choice>
+ </Choices>
+ </Question>
+ <Question Id="13" Text="QA tools" Order="3">
+ <EvalDescription><![CDATA[if 'FM' in i.keys() and 'url_bugtracker' in i['FM'].keys() and i['FM']['url_bugtracker'] is not None:
+ description+="<a href=\""+i['FM']['url_bugtracker']+"\" target=\"_blank\">Bug tracker</a>"]]></EvalDescription>
+ <EvalValue><![CDATA[]]></EvalValue>
+ <Queries/>
+ <Choices>
+ <Choice Id="37" Text="Not available" Order="1"><Todo/></Choice>
+ <Choice Id="38" Text="Existing but not much used" Order="2"><Todo/></Choice>
+ <Choice Id="39" Text="Very active use of tools" Order="3"><Todo/></Choice>
+ </Choices>
+ </Question>
+ </Questions>
+ </Page>
+ <Page Id="10" Name="Packaging" Order="4">
+ <Pages/>
+ <Questions>
+ <Question Id="14" Text="Source" Order="1">
+ <EvalDescription><![CDATA[if 'download_url' in i.keys():
+ description+= '<a href="'+i['download_url']+'" target="_blank">Download</a>']]></EvalDescription>
+ <EvalValue><![CDATA[]]></EvalValue>
+ <Queries/>
+ <Choices>
+ <Choice Id="40" Text="To be compiled" Order="1"><Todo/></Choice>
+ <Choice Id="41" Text="Binaries available" Order="2"><Todo/></Choice>
+ <Choice Id="42" Text="Virtual appliance available" Order="3"><Todo/></Choice>
+ </Choices>
+ </Question>
+ <Question Id="15" Text="Red Hat" Order="2">
+ <EvalDescription><![CDATA[if 'download_url' in i.keys():
+ description+= '<a href="'+i['download_url']+'" target="_blank">Download</a>']]></EvalDescription>
+ <EvalValue><![CDATA[]]></EvalValue>
+ <Queries>
+ <Query Id="10">
+ <EvalText><![CDATA[q="%2B\"" + i['name'] + "\""]]></EvalText>
+ <EvalSite><![CDATA[sites=['redhat.com/wapps/isvcatalog']]]></EvalSite>
+ </Query>
+ </Queries>
+ <Choices>
+ <Choice Id="43" Text="Not available" Order="1"><Todo/></Choice>
+ <Choice Id="44" Text="Supported by third parties" Order="2"><Todo/></Choice>
+ <Choice Id="45" Text="Certified" Order="3"><Todo/></Choice>
+ </Choices>
+ </Question>
+ <Question Id="16" Text="Non RHEL commercial Linux distros (e.g. Ubuntu, Suse, Mandriva, etc)" Order="3">
+ <EvalDescription><![CDATA[if 'download_url' in i.keys():
+ description+= '<a href="'+i['download_url']+'" target="_blank">Download</a>']]></EvalDescription>
+ <EvalValue><![CDATA[]]></EvalValue>
+ <Queries/>
+ <Choices>
+ <Choice Id="46" Text="One or less" Order="1"><Todo/></Choice>
+ <Choice Id="47" Text="Some (2-3)" Order="2"><Todo/></Choice>
+ <Choice Id="48" Text="Many (more than 3)" Order="3"><Todo/></Choice>
+ </Choices>
+ </Question>
+ <Question Id="17" Text="Windows" Order="4">
+ <EvalDescription><![CDATA[if 'download_url' in i.keys():
+ description+= '<a href="'+i['download_url']+'" target="_blank">Download</a>']]></EvalDescription>
+ <EvalValue><![CDATA[]]></EvalValue>
+ <Queries/>
+ <Choices>
+ <Choice Id="49" Text="Not available" Order="1"><Todo/></Choice>
+ <Choice Id="50" Text="Supported by third parties" Order="2"><Todo/></Choice>
+ <Choice Id="51" Text="Certified" Order="3"><Todo/></Choice>
+ </Choices>
+ </Question>
+ </Questions>
+ </Page>
+ <Page Id="11" Name="Maintainability" Order="5">
+ <Pages/>
+ <Questions>
+ <Question Id="18" Text="Amount of comments" Order="1">
+ <EvalDescription><![CDATA[if 'OHLOH' in i.keys() and 'size_fact' in i['OHLOH'].keys() and 'comment_ratio_pp' in i['OHLOH']['size_fact'].keys():
+ description+="Comment/code ratio: " + i['OHLOH']['size_fact']['comment_ratio_pp']]]></EvalDescription>
+ <EvalValue><![CDATA[]]></EvalValue>
+ <Queries/>
+ <Choices>
+ <Choice Id="52" Text="None " Order="1"><Todo/></Choice>
+ <Choice Id="53" Text="Poorly commented" Order="2"><Todo/></Choice>
+ <Choice Id="54" Text="Well commented" Order="3"><Todo/></Choice>
+ </Choices>
+ </Question>
+ <Question Id="19" Text="Programming languages" Order="2">
+ <EvalDescription><![CDATA[if 'OHLOH' in i.keys() and 'widget_languages' in i['OHLOH'].keys():
+ description+=i["OHLOH"]["widget_languages"]]]></EvalDescription>
+ <EvalValue><![CDATA[]]></EvalValue>
+ <Queries/>
+ <Choices>
+ <Choice Id="55" Text="More than 3 languages" Order="1"><Todo/></Choice>
+ <Choice Id="56" Text="One main language" Order="2"><Todo/></Choice>
+ <Choice Id="57" Text="One unique language" Order="3"><Todo/></Choice>
+ </Choices>
+ </Question>
+ <Question Id="20" Text="Modularity" Order="3">
+ <EvalDescription><![CDATA[]]></EvalDescription>
+ <EvalValue><![CDATA[]]></EvalValue>
+ <Queries>
+ <Query Id="11">
+ <EvalText><![CDATA[q="%2B\"" + i['name'] + "\"%20%2B\"open source\"%20%2Bmodularity"]]></EvalText>
+ <EvalSite><![CDATA[]]></EvalSite>
+ </Query>
+ </Queries>
+ <Choices>
+ <Choice Id="58" Text="Not modular" Order="1"><Todo/></Choice>
+ <Choice Id="59" Text="Modular" Order="2"><Todo/></Choice>
+ <Choice Id="60" Text="Available tools to create extensions" Order="3"><Todo/></Choice>
+ </Choices>
+ </Question>
+ </Questions>
+ </Page>
+ </Pages>
+ <Questions/>
+ </Page>
+ <Page Id="12" Name="Strategy" Order="2">
+ <Pages>
+ <Page Id="13" Name="License" Order="1">
+ <Pages/>
+ <Questions>
+ <Question Id="21" Text="License" Order="1">
+ <EvalDescription><![CDATA[for f in i["OHLOH"]["factoids"]:
+ if f["type"]=="FactoidGplConflict":
+ description+=f["description"] + " (" + f["severity"] + ")"]]></EvalDescription>
+ <EvalValue><![CDATA[]]></EvalValue>
+ <Queries/>
+ <Choices>
+ <Choice Id="61" Text="Copyleft (e.g.: GPL, EUPL)" Order="1"><Todo/></Choice>
+ <Choice Id="62" Text="Corporate (e.g.: EPL, MPL)" Order="2"><Todo/></Choice>
+ <Choice Id="63" Text="Permissive (e.g.: Apache, BSD)" Order="3"><Todo/></Choice>
+ </Choices>
+ </Question>
+ </Questions>
+ </Page>
+ <Page Id="14" Name="Modifiability" Order="2">
+ <Pages/>
+ <Questions>
+ <Question Id="22" Text="Modificability" Order="1">
+ <EvalDescription><![CDATA[]]></EvalDescription>
+ <EvalValue><![CDATA[]]></EvalValue>
+ <Queries/>
+ <Choices>
+ <Choice Id="64" Text="No way to propose modifications" Order="1"><Todo/></Choice>
+ <Choice Id="65" Text="Tools to access and modify code available, but the process is not well defined" Order="2"><Todo/></Choice>
+ <Choice Id="66" Text="Tools and procedures to propose modifications are available" Order="3"><Todo/></Choice>
+ </Choices>
+ </Question>
+ </Questions>
+ </Page>
+ <Page Id="15" Name="Roadmap" Order="3">
+ <Pages/>
+ <Questions>
+ <Question Id="23" Text="Roadmap" Order="1">
+ <EvalDescription><![CDATA[]]></EvalDescription>
+ <EvalValue><![CDATA[]]></EvalValue>
+ <Queries>
+ <Query Id="12">
+ <EvalText><![CDATA[q="%2B\"" + i['name'] + "\"%20%2B\"open source\"%20%2Broadmap"]]></EvalText>
+ <EvalSite><![CDATA[]]></EvalSite>
+ </Query>
+ </Queries>
+ <Choices>
+ <Choice Id="67" Text="Not available" Order="1"><Todo/></Choice>
+ <Choice Id="68" Text="Not detailed roadmap available" Order="2"><Todo/></Choice>
+ <Choice Id="69" Text="Detailed roadmap available" Order="3"><Todo/></Choice>
+ </Choices>
+ </Question>
+ </Questions>
+ </Page>
+ <Page Id="16" Name="Sponsor" Order="4">
+ <Pages/>
+ <Questions>
+ <Question Id="24" Text="Sponsor" Order="1">
+ <EvalDescription><![CDATA[]]></EvalDescription>
+ <EvalValue><![CDATA[]]></EvalValue>
+ <Queries>
+ <Query Id="13">
+ <EvalText><![CDATA[q="%2B\"" + i['name'] + "\"%20%2B\"open source\"%20%2Bsponsor"]]></EvalText>
+ <EvalSite><![CDATA[]]></EvalSite>
+ </Query>
+ </Queries>
+ <Choices>
+ <Choice Id="70" Text="Unique sponsor" Order="1"><Todo/></Choice>
+ <Choice Id="71" Text="Community sponsor" Order="2"><Todo/></Choice>
+ <Choice Id="72" Text="Foundation/consortium-sponsor" Order="3"><Todo/></Choice>
+ </Choices>
+ </Question>
+ </Questions>
+ </Page>
+ </Pages>
+ <Questions/>
+ </Page>
+ </Pages>
+ <WeightScenarios>
+ <WeightScenario Id="1" Name="default" Active="True">
+ <Weights/>
+ </WeightScenario>
+ <WeightScenario Id="2" Name="Borrow" Active="False">
+ <Weights/>
+ </WeightScenario>
+ <WeightScenario Id="3" Name="Share" Active="False">
+ <Weights>
+ <Weight question_id="7" weight="4.0"/>
+ <Weight question_id="12" weight="4"/>
+ <Weight question_id="13" weight="2"/>
+ <Weight question_id="14" weight="4"/>
+ <Weight question_id="15" weight="2"/>
+ <Weight question_id="16" weight="4"/>
+ <Weight question_id="20" weight="4"/>
+ </Weights>
+ </WeightScenario>
+ </WeightScenarios>
+ </MethodologyVersion>
+</osseval>