other domain." # ); # $domain = array( # "Base System (Kernel, Driver, OS utilities, Administration Tool)", # "Development Application (Compiler, Interpreter IDE, Debugger)", # "Code Library or Development Infrastructure (lib*, CORBA, Database # lib)", # "Server Application (Database, Webserver, Network application # server)", # "End-User Application (Word Processor, Browser, Game, Web Application, Network client)" # ); // XXX: do we need to change this to process expertise to avoid the code // whore effect? # addQuest( # "Initial developer expertise", # "How would you rate the programming and architectural expertise of # the developer group at start?", # "initial_ability", # "makeRadio", # "This question attempts to raise the matter of developer expertise: how # experienced with other software projects and software development in # general the developers involved were. This is made up by a combination # of abilities: coding, design, specification; try and summarize them into # one of the categories I've provided." # ); # addQuest( # "Non-public releases", # "Did internal, non-public releases happen? For example, was there a 0.1.2 # version that was never announced publically beyond the private group of # developers?", # "internal_release", # "makeRadio", # "Sometimes development before public release happens in a very orderly # fashion, with no public announcement being made, but numbered releases # being made periodically. If yours was developed like this, say yes here." # ); # addQuest( # "Time to first release", # "How long did it take for an initial public release to be produced? # Count time as beginning when coding was actually started.", # "release_time", # "makeRadio", # "This measures the time it took from project start to the initial public # release. This is the time when it was first announced through public # media, such as a mailing list, newsgroup or Freshmeat.net." # ); # addQuest( # "Release functionality", # "In your opinion, how feature complete was the software upon its first # release?", # "release_readiness", # "makeRadio", # "" # ); # $release_readiness = array( # "Very complete, ready for general public use", # "Reasonably well developed but lacking some important features", # "Bare minimum features to be publically useful", # "It ran, but didn't do anything useful", # ); # # $release_time = array( # "Up to 1 week", # "From 1 week to 1 month", # "From 1 to 6 months", # "Over 6 months", # ); global $questions, $qnum, $snum; $questions = array(); $qnum = 0; $snum = 1; function addQuest($title, $desc, $items, $func, $help) { global $questions, $qnum, $snum; $qnum++; $questions[] = array( "title" => $title, "desc" => $desc, "items" => $items, "func" => $func, "snum" => $snum, "qnum" => $qnum, "help" => $help ); } function nextSection() { global $snum, $qnum; $snum++; $qnum = 0; // var_dump( $snum ); } addQuest( "Motivations", "With respect to the initial motivations for starting this project, please mark ALL the sentences below that are true.", "motivation", "makeChecks", 'I would like to find out the reasons that explain why your particular project was started. I want to correlate the information here with the type of process that is used in the project, to find out if they have some sort of influence on the way it works today.

If you don\'t understand one of the questions, please add a comment explaining which.

You should mark here all the phrases that apply.' ); $motivation = array( "The project was started primarily for personal reasons (had desire to learn, found technology interesting, etc).", "The project was started primarily to produce software to support another Open Source/Free Software project", "The project was started (or sponsored) by a company or organization.", "The project was started as part of academic (university) work or research.", "The project's intention from the beginning was to produce at least part of its software as Open Source/Free Software.", "The project began based on pre-existing Open Source/Free Software (code fork, etc.).", "The project began based on pre-existing proprietary/closed source software." ); addQuest( "User Base", "Who are the main users for your project's software? Please mark ALL that apply.", "userbase", "makeChecks", 'Every software has a number of users that make up its user base. Think about who actually uses the software your project produces, and classify them according to the items listed.' ); $userbase = array( "Yourself.", "The project team", "Users that are not computer-proficient or non-technical.", "Users in specific fields of expertise (e.g. amateur radio enthusiasts, mathematicians, engineers, software developers). Please specify which in the comment box below.", "Users in a particular company, site or organization", "One or more specific commercial customers (sponsors/paying).", "The Free Software/Open Source community.", "The computing community." ); addQuest( "Project age", "How long ago was the first public version of the project's software released?", "project_age", "makeRadio", "I would like to know here how long it has been since the first version of the software your project produces was publically released. This means when it was first placed on a download site and publicized somehow (using a mailing list, a site like Freshmeat.net, etc.)" ); $project_age = array( "Less than 6 months", "6 months to a year", "1-2 years", "2-5 years", "Over 5 years" ); addQuest( "Pre-existing standard", "Was there a pre-existing standard or public specification previously available that helped define a significant part of the project? If so, please add a comment stating the most important of them.
Example: HTTP (Internet RFCs 1945 and 2616) for Apache.", "standard", "makeRadio", "Some projects have their existence tied to one or more specifications, which determines to a large extent what functionality it has to implement. The specification(s) should be produced by a third party, such as a standards organization, though members of your project team may participate in it.

An example is a web server, tied to HTTP RFCs, or a C compiler, which has to implement at least a common subset of the C language.

If your project is fundamentally based on one or more standards, say yes here. If a standard touches only peripheral or non-core aspects of the project (for instance, the HTML specification for a Web project), say no." ); $standard = array( "Yes.", "No." ); nextSection(); addQuest( "Team size", "How many people would you estimate make up the project team? If in doubt, consider the project team is made up of the frequent and active contributors (including non-code contributors).", "teamsize", "makeRadio", 'Answer here how many people you consider to be an actual part of the project\'s team. Many times it can be hard to determine if a person is part of the team or not (since membership of the team is often informally determined); if you are unsure, consider the frequent and active contributors as making up the team. Consider a contributor a person who has sent in material that is usable in the project: code, patches, documentation, screen mockups and translations are good examples.

Provide an estimate here; don\'t worry about being too exact.' ); $teamsize = array( "1", "2-5", "6-15", "16-25", "26-50", "More than 50" ); addQuest( "Leadership model", "If you were to choose, what sort of leadership model best describes the project today?", "leadership", "makeRadio", "It's usually said that a project will have some sort of leadership, which consists generally of an authority and responsibility hierarchy. Select from the list the description you think applies best to your project, or add your own description." ); $leadership = array( "The project has a single leader and a number of people that are formally responsible for parts of it.", "The project has a single leader, which delegates responsibility occasionally to others.", "The project is led by a core group or committee of people that is responsible for making decisions; there is no single leader.", "There is no effective leadership structure.", "This is a single-person project.", ); addQuest( "General team aspects", "With relation to this project's team and community, please mark ALL phrases below that apply.", "team", "makeChecks", 'I am trying here to define certain aspects of Open Source/Free Software teams to differentiate them from conventional software teams.

Mark here all that apply.' ); $team = array( "Most people in the team know each other only through the Internet, and have never met physically/personally.", "Most people in the team work physically close, and meet personally with some frequency.", "The team includes people that have more than 5 years experience in serious software development.", "The project provides a high barrier of entry to new participants, even to those that are skilled in software development.", "A contributor to the project will often participate in more than one project activity: functionality definition, architectural design, designing user interfaces , coding, testing, project management, etc.", "Code contributors tend to work only on one specific language or technology used in the project (the one which they are most familiar with).", ); nextSection(); addQuest( "Defining Functionality", "This question aims to find out how the behavior and functionality of your software were defined. Please mark ALL phrases that apply to your project.", "functionality", "makeChecks", "Every software has a set of functionality it implements: in common terms, what it should do and how to do it. In Software Engineering terms, this is called Requirements. To reach an agreement on what functionality is necessary, it is common to have discusions (meetings, conversations), sometimes along with some sort of written document(s), to define this.

This question focuses on the definition of the actual user-visible or externally-visible functionality of your software, not on the internal design of it.

Please mark all phrases that apply here."); $functionality = array( "The project's software explicitly mimics (or is significantly based upon) the functionality or behavior of an existing (proprietary or Free Software/Open Source) software package. If so, please specify which?", "A significant amount of effort is spent defining what the software functionality and behavior (the requirements) should be.", "This project has no end-users apart from the project team.", "There have been meetings or discussions with end-users to define significant parts of the software functionality or behavior.", "These meetings/discussions occur frequently, and can be considered an important part of defining the project's software.", "The software functionality is implemented according to what the team thinks is correct, without significant external end-user input.", "I believe much of the expected functionality and behavior is not completely known or understood by the project team as a whole.", ); addQuest( "Usability", "This question touches the issue of usability: what sort of approach and how much effort is placed upon making the software more usable (i.e. easier, more efficient and more pleasant to use). Please mark ALL that apply.", "usability", "makeChecks", "Usability describes the overall fitness of a certain kind of software to its target user base. This question tries to understand how important UI design is considered to be in the project, and who takes care of it. If your application doesn't really have a user interface, select the appropriate option. Remember, this question is about end-user interface, not API.

Mark all phrases that apply to your project. " ); $usability = array ( "The user interfaces for the project are designed (or prototyped) and refined before actually being implemented.", "We have conducted serious usability tests and studies on the project's user interfaces.", "Developers are not allowed to implement or change the user interfaces before the implementation/change has been reviewed and approved.", "A part of the team is specifically in charge of UI design.", "We would like to invest more in usability, but we are hampered by lack of documentation and/or team knowledge on the subject.", "This project doesn't have any significant user interface." ); addQuest( "Documentation", "In this question I try to determine information on documentation produced in/for the project. Please mark ALL that apply.", "documentation", "makeChecks", 'Documentation consists of written or graphical descriptions, in the case of software being geared to one of two groups: software end-users, and software developers. This question covers the documentation activities the project engages in: how much is done, who it is targeted at, how up to date it is, and who actually takes care of writing and maintaining the documents.

Please mark all that apply' ); $documentation = array( "We have produced documents that describe at least some of the expected functionality and behavior (requirements) of our software.", "The project produces and maintains documents for developers that describe how the code is organized (architecture), and/or how parts of it work.", "There is a reasonably complete coding standards guide that is actively followed by the team.", "There is documentation for the end-user available for the project's software (consider also third-party documents available).", "End-user documentation is provided to a large extent by people or groups external to the project team.", "A significant part of the available documentation is frequently updated and revised to be up to date." ); addQuest( "Quality Assurance", "This question covers activities that are performed with the intention to assure or improve the quality of the software produced by your project. Please mark ALL that apply.", "qa", "makeChecks", 'Some software development activities are performed to specifically enhance and guarantee the quality of the software produces. There are a number of common approaches to this: testing, review, public tests and others.

Mark all the items that apply to your project. ' ); $qa = array( "There is an [automated] test suite for the project's software, that is used to validate it.", "There is a test plan (a written document describing tests) for the project's software, that is used by the project team.", "Periodic (i.e. nightly, weekly) snapshots of the project's code (or binaries) are distributed and used as an significant means of testing the software.", "There is an active code review process, where code is read by other members of the team.", "The project team members have formal rules for integrating code changes into the main codebase, and review is a strict requirement.", "Usually, an unexpected amount of bugs are discovered after a version has been publically released (this includes public release candidates).", "There is a tendency (or policy) to release a public version only when it has been extensively tested by the team.", ); addQuest( "Tools", "Select ALL of the software or communication tools that you actively use during development (don't select it if is available but rarely or never used):", "tools", "makeChecks", "List here the tools that you actually (and actively) use to support the development of the project's software. If you just installed the tool, or it is available to your project's environment, but it isn't actively used, don't select it! If you would like to specify a tool not listed, please add to the Other: item.

Please mark all that apply. " ); $tools = array( "A project hosting site such as Sourceforge.net, Savannah or Collab.net (mark all others applicable as well)", "One or more Web sites", "A WikiWikiWeb site (SWiki, TWiki, PHPWiki, ZWiki, etc.)", "A Frequently Asked Questions document", "A version control tool such as CVS, RCS, Subversion or Bitkeeper", "A bug database such as GNATS or Bugzilla", "One or more mailing lists", "Network news (NNTP)", "User forums/BBS", "IRC", "An instant messaging system like ICQ, Jabber or AIM" ); include_once("form.inc"); ?>