Concept:

101project

Headline

What's the 101project

Description

The 101companies Project (or "101project" or even just "101" for short) is an open knowledge resource covering software technologies, technological spaces, software languages, and software concepts. 101 targets programmers, software engineers, teachers, learners, and technologists; they can leverage 101 and they are encouraged to contribute to 101. The project relies on the aggregation, organization, annotation, and analysis of an open-source corpus of contributions: these are implementations and other manifestations of the system:Company, which is an imaginary Human Resource Management System with various (mostly) optional features. Contributions are maintained in the 101repo and documented on the 101wiki and organized in themes. All available knowledge is processed by the 101worker; derived resources are made available as 101data; all relevant resources are made available as Linked Data explorable through 101explorer.

Why the name "101companies"?

The "companies" postfix in "101companies" refers to the kind of system that is built time again in this project: a system that models companies, department structure, employees, salaries, etc. The "101" prefix in "101companies" refers to the idiom of doing something in "101 ways", namely building said system. Actually, there are more than "101 ways" of building a human resource management system with different software technologies and software languages.

History of the 101project

  • Apr 2008: Ralf Lämmel initiates a related course on programming techniques and technologies at the University of Koblenz-Landau.
  • June 2010: Jean-Marie Favre, Dragan Gasevic, and Ralf Lämmel meet in Malaga to discuss technological spaces and related publication and teaching efforts.
  • Aug 2010: 101repo starts to take shape thanks to Thomas Schmorleiz who enters the 101project for several years to come.
  • Oct 2011: Jean-Marie Favre, Dragan Gasevic, and Ralf Lämmel present a related tutorial at GPCE/SLE 2010 in Eindhoven.
  • Feb 2011: Andrei Varanovich joins the Software Languages Team to focus his research and developer energy around the project.
  • Mar 2011: Ralf Lämmel releases 101wiki at AOSD 2011 in Brazil. Many other presentations of the project have followed.
  • Spring 2012: First publication on the project at TOOLS 2012. Other papers have followed at MODELS 2012 and WCRE 2012.
  • Since summer 2012: many 101contributors have implemented the system:Company with their preferred languages and technologies and contributed thus to the 101repo.
  • August 2012: The SoTeSoLa summer school leverages the project as part of its design, e.g., for hackathon-like efforts.
  • Winter 2012-Summer 2013: Complete re-design of 101wiki, 101repo, 101worker underway.
  • April 2013: The project is now used in two courses simultaneously at the University of Koblenz-Landau.
All 101companies content and code is subject to the 101license.

9KDcxuhgbRDy-w Check out some videos on the YouTube channel of the project.


System:

Company

Headline

An imaginary HRMS system

Description

System:Company is an imaginary 'Human resource management system (HRMS)' (i.e., an information system) implementations of which ('contributions') are documented on 101wiki. The system is supposed to model the company structure in terms of employees and possibly the hierarchical structure of departments. Employees are modeled in terms of their names, addresses, salaries, and possibly additional properties. The system is supposed to meet certain functional requirements such as totaling all salaries in the company. The system may also be subjected to non-functional requirements such as persistence or distribution. Features are not collected for the sake of an interesting HRMS system. Instead, features are designed to exercise interesting characteristics of software languages and software technologies. Most features are optional so that contributions have the freedom of choice to focus on features that are particularly interesting for a certain objective of language or technology demonstration.

There are the following features:

  • Company: Companies, department, employees
  • Total: Total the salaries of employees
  • Median: Compute the median of the salaries
  • Cut: Cut the salaries of employees in half
  • Depth: Compute nesting depth of departments
  • COI: Conflicts of interests for employees
  • Mentoring: Associate mentors and mentees
  • Ranking: Enforce salary to correlate with ranks
  • Singleton: Constrain for a single company
  • History: Maintain and analyze company history
  • Serialization: De-/serialize companies
  • Persistence: Persist companies
  • Mapping: Map companies across technological space
  • Distribution: Distribute companies
  • Parallelism: Total or cut in parallel
  • Logging: Log company changes
  • Browsing: Browse companies interactively
  • Editing: Edit companies interactively
  • Restructuring: Restructure companies interactively
  • Web UI: Operate on companies in a web browser
  • Parsing: Parse companies in concrete syntax
  • Unparsing: Pretty print companies
The set of all features can also be arranged in a feature model as defined by the following constraints:

This specification is under construction.

We use the following informal notation here:

  • f? means that the feature f is optional.
  • f (OR) means that f is an OR feature; any operands may be chosen, but at least one, unless f is optional.
  • f (XOR) means that f is an XOR feature; either of its operands must be selected, but not several of them.
  • f1 => f2 means that if f1 is selected then f2 must be selected.
  • f (i.e., f with strikethrough) means that the feature is only emerging or already vanishing.

Illustration

The following UML class diagram models the basic structure of the system.

media:https://github.com/101companies/101repo/raw/master/contributions/argoUML/composition.jpg

See Theme:Starter for a few very simple contributions in varying languages. These are mostly implementations of the system in varying programming languages, but a UML-based model (as shown above) is also included.


Concept:

Software concept

Headline

An (ontological) concept in the broader context of software

Description

Software concepts are (ontological) concepts in the broader context of software. They are not tied to the 101companies project. Software concepts are supposed to be described already elsewhere on the web.

Discussion

In the 101wiki, this is not properly instantiated. Everything that is in the namespace "Concept" should be instance of this.


Concept:

101project

Headline

What's the 101project

Description

The 101companies Project (or "101project" or even just "101" for short) is an open knowledge resource covering software technologies, technological spaces, software languages, and software concepts. 101 targets programmers, software engineers, teachers, learners, and technologists; they can leverage 101 and they are encouraged to contribute to 101. The project relies on the aggregation, organization, annotation, and analysis of an open-source corpus of contributions: these are implementations and other manifestations of the system:Company, which is an imaginary Human Resource Management System with various (mostly) optional features. Contributions are maintained in the 101repo and documented on the 101wiki and organized in themes. All available knowledge is processed by the 101worker; derived resources are made available as 101data; all relevant resources are made available as Linked Data explorable through 101explorer.

Why the name "101companies"?

The "companies" postfix in "101companies" refers to the kind of system that is built time again in this project: a system that models companies, department structure, employees, salaries, etc. The "101" prefix in "101companies" refers to the idiom of doing something in "101 ways", namely building said system. Actually, there are more than "101 ways" of building a human resource management system with different software technologies and software languages.

History of the 101project

  • Apr 2008: Ralf Lämmel initiates a related course on programming techniques and technologies at the University of Koblenz-Landau.
  • June 2010: Jean-Marie Favre, Dragan Gasevic, and Ralf Lämmel meet in Malaga to discuss technological spaces and related publication and teaching efforts.
  • Aug 2010: 101repo starts to take shape thanks to Thomas Schmorleiz who enters the 101project for several years to come.
  • Oct 2011: Jean-Marie Favre, Dragan Gasevic, and Ralf Lämmel present a related tutorial at GPCE/SLE 2010 in Eindhoven.
  • Feb 2011: Andrei Varanovich joins the Software Languages Team to focus his research and developer energy around the project.
  • Mar 2011: Ralf Lämmel releases 101wiki at AOSD 2011 in Brazil. Many other presentations of the project have followed.
  • Spring 2012: First publication on the project at TOOLS 2012. Other papers have followed at MODELS 2012 and WCRE 2012.
  • Since summer 2012: many 101contributors have implemented the system:Company with their preferred languages and technologies and contributed thus to the 101repo.
  • August 2012: The SoTeSoLa summer school leverages the project as part of its design, e.g., for hackathon-like efforts.
  • Winter 2012-Summer 2013: Complete re-design of 101wiki, 101repo, 101worker underway.
  • April 2013: The project is now used in two courses simultaneously at the University of Koblenz-Landau.
All 101companies content and code is subject to the 101license.

9KDcxuhgbRDy-w Check out some videos on the YouTube channel of the project.


Concept:

Software language

Headline

A software language

Quote

The following quote, which was extracted on 1 March 2011 from the website http://www.sleconf.org/2011/ of "The International Conference on Software Language Engineering (SLE 2011)", serves as the approximation of a description: "The term “software language” comprises all sorts of artificial languages used in software development including general-purpose programming languages, domain-specific languages, modeling and meta-modeling languages, data models, and ontologies. Used in its broadest sense, examples include modeling languages such as UML-based and domain-specific modeling languages, business process modeling languages, and web application modeling languages. The term “software language” also comprises APIs and collections of design patterns that are implicitly defined languages."


Concept:

101wiki


Concept:

101contributor

Headline

A contributor to the 101project

Description

The most obvious type of 101contributor is the developer, co-developer, or maintainer of a 101contribution, i.e., an implementation or a model of the system:Company. Such work on 101contributions includes indeed efforts on programming and documentation. Another type of 101contributor is concerned with the infrastructure and foundation of the 101project such as the 101repo, the 101wiki, and the 101worker.


Concept:

101data

Headline

The Linked Data access point of the 101project

Description

Various data is synthesized from the 101repo and the 101wiki. All such data is provide online through 101data, more specifically through the following link:

http://data.101companies.org

The synthesis of all such data is coordinated by the 101worker which executes various 101modules. The data may be conveniently explored (discovered) with the 101explorer. The data is organized in a way that applies Linked Data principles. In particular, both dumps and smaller slices are provided. JSON is used as the primary format for outputs of 101modules, but RDF is also supported increasingly.

Data from the 101repo

A systematic documentation effort is underway for Namespace:Module.

Here are some pointers:


Concept:

101repo

Headline

The repository of the 101project

Description

101repo is a confederated (thus, virtual) repository in that it actually consists of many physical repositories. The confederated repositories may either cover some architectural component of the 101project (such as the 101worker) or individual 101contributions or collections thereof (such as 101haskell or 101simplejava).

Download

A zip file with all contributions: http://data.101companies.org/zips/101repo.zip