Call to arms
Are you interested in a project practical (In german: "Projektpraktikum") in software development? You may just attend (one of) the next Monday meeting(s) of the softlang team to sort things out.
Scope of the practical
Short story
Keep alive and enhance the "101" project to support it as an infrastructure in research and education.
Longer story
For the superficial observer, "101" corresponds to straightforward (?) wiki and a large and polyglot collection of small software systems available over GitHub. This is an Ok view for the basic consumer of "101" assets. In reality, "101" is a rather advanced software ecosystem which requires substantial and continuous efforts to remain functional, relevant, and competitive. Here are some aspects that should interest any student with affinity to software development:
- "101" doesn't use a standard wiki system. In fact, 101wiki is a problem-specific wiki system that includes support for semantic metadata, integration of external knowledge, language-parametric source-code rendering, GitHub integration (e.g., in terms of authentication), and various other features. 101wiki may appear like a straightforward Rails application, but in reality it leverages all kinds of components (e.g., Backbone) and architectural patterns and services. Maintaining and improving the architecture requires dedicated work on analysis, design, deployment, and monitoring.
- "101" doesn't take a static view on source code such as being simply collected in a consolidated repository. Instead, all source code resides in a "virtual" 101repo, which is actually a distributed repository that consists of many physical GitHub repo that are managed by an admin layer of 101(wiki). A computational infrastructure, 101worker, is continuously applied to all source code and derived resources (e.g., API usage or software metrics) are deployed on web server. Dedicated work is needed to maintain and improve 101worker's module system and its features of build management and deployment.
- "101" isn't just consumed through wiki and repository. Instead, "101" also supports the notion Linked Data so that primary and derived resources can be explored and consumed in a manner inspired by Semantic Web. This means that there is a rich, schema-aware HTTP layer and data is also available in RDF through a SPARQL endpoint. Dedicated work is needed to guarantee various aspects of Linked Data, e.g., correctness, actuality, discoverability, schema-awareness, performance, incrementality of updates.
Available roles for students
Engineer in administration
101 has been hacked during summer 2014 twice; different servers were compromised. We need to improve the quality of system administration and align the security policies with the rest of the architecture and practices of 101.
Engineer in testing
101 faces a significant quality and availability issue. Given the rather complex architecture of 101wiki, 101worker, and 101explorer, there are many sources of troubling the system. Putting to work more systematic testing is critical to improving availability.
Engineer in computation
101 uses the 101worker approach to computing derived information and the 101explorer approach to publishing the information. These components are complex and need to improved in terms of API design, incrementality, and others.
Engineer in documentation
101 is suboptimally understandable in so far that there is no comprehensive, discoverable documentation for all the components. This status needs to be improved, as it is an impediment for getting more people involved with the project.
Feature developer
101 is an evolving eco system; there are always ideas for new features regarding, for example, 101wiki. For instance, we would like to provide tool tips / intellisense to 101wiki authors so that they are guided in authoring semantic metadata.
Program manager
As with any project of significant size, 101 also requires program management to define the goals, to assess the status, and to lead the development over time. This sort of work is currently mostly on the shoulders of team leader and PhD students.
Modus operandi
- Attend the softlang meeting, if you want to join or discuss progress and planing.
- You can join at any point in time; there is a push through to start some new efforts in Mid November 2014.
- You are collaborating with students and team members in different occupations (PhD, MSc, BSc thesis as well as practicals and seminars or student assistants). Ralf Lämmel is also involved in supervision.
- We are completely open source-based. In particular, we use GitHub these days; see the 101companies GitHub account.
Further reading
- Early paper introducing the 101 project: "101companies: a community project on software technologies and software languages"
- Rule-based metadata computation for 101: "Linking Documentation and Source Code in a Software Chrestomathy"
- Paper demonstrating some non-obvious capabilities of 101: "Comparison of Feature Implementations across Languages, Technologies, and Styles"
- Martin Leinberger's MSc thesis on 101's Linked Data approach: "Enhancement of a software chrestomathy for open linked data"
- Arkadi Schmidt und Olexiy Lashyn's MSc thesis on 101wiki: "Contributor and administrator support for a software chrestomathy"
- An overview and vision paper on the chrestomathy notion: "Software chrestomathies"
- A draft paper (under development) regarding 101's ontology: "The SoLaSoTe ontology of software languages, technologies, and concepts"
- The Haskell-specific slice of 101 with some emphasis on knowledge integration and education: The 101haskell Chrestomathy (A Whole Bunch of Learnable Lambdas)"