2.2 Growing the Ecosystem
People are central to any software architecture. The ecosystem would not be complete without a supporting documentation of all the functionalities. The ecosystem as it stands now can be recognized as a set of core apps and supporting structures around it. These supporting structures are vital for fostering communities around the ecosystem. This prose elucidates the kind of supporting structures that have been built and analyses rationale behind the creation of these structures from the viewpoints of the end user.
The methodology chosen towards this thesis is to tackle it from the viewpoint of a human centered process to foster a community around these systems. My views on building software was greatly transformed by a short treatise written by Richard Cook called How Systems Fail [Cook 1998] The author suggests that software doesn't exist in a vacuum, it is made alive with the people who use the software to meet their ends. He describes that they adapt the system to maximize production and minimize accidents.
In this sense, it was of foremost importance to value the expectations of the end user and the kind of actions enabled for them by constructing the systems in certain ways. In this process I have identified personas of 3 users among many.
First one: The student Second one: The tutor Third one: The developer
The core focus of this project has been the student and is tackled in detail in the upcoming sections. Hence I will focus on the other two groups and detail in brief how the design decisions made from an architectural perspective adds value to the lives of a faculty member and a developer.
For a faculty member, this ecosystem if extended would enable them to collect student progression datasets in a much smoother way. If appropriate application programming interfaces are put in place, there is a huge potential to structure the ecosystem in a way that it optimizes to collect data on various aspects of student learning. A cursory implementation that can be done with the help of the current set of apps proposed is to learn about interaction of the student with the course materials using the Curriculum app proposed in the discussion section.
From the perspective of a developer, the major advantage over current systems is that all the apps are developed in the open in a modular fashion. This means that reuse of the components developed for these apps can promote code reuse. Moreover, the ecosystem also enables creation of bespoke APIs that takes care of a single facet of student learning. This means that even developers other than the core team under control of these systems (students, faculty members and the like) can build their own applications using the interfaces provided.
2.2.1 Support structures
I have identified that without supporting structures most of the apps however well designed will fail to meet the user expectations. Whereas, when supplied with enough documentation, it helps the user leverage these apps to their full potential.
There are four documentation websites created in order to provide support the NCLVerse. Two sites are dedicated for the developers and designers of these systems, there is a comprehensive documentation of all the core applications in NCLVerse for the potential user of the applications and finally a website that hosts this dissertation itself. They are as follows:
2.2.2 Code Website
The code website provides comprehensive documentation of all code that has been generated towards the project. This is done in Literate programming style. Literate programming style is an approach to programming introduced by Donald Knuth [Knuth 1992] in which a program is given as an explanation of the program logic in for the human reader as opposed to the machine. This can be thought of as a narrative account of the developer's understanding of how the code works.
2.2.3 Design Website
This website details about visual language that comprises of various user interface elements and UI patterns. This was inspired by the works done by Google and Heroku in developing their visual languages. [Material Design 2015] [Heroku Purple 2015]
2.2.4 Documentation Website
The documentation website details about all features of all the apps that have been built for NCLVerse. A feature that has not yet been implemented but not too hard to achieve is to have a contextual help menu. What this means is that, whenever a user wants help about a certain interface element, she can click on the help button and then choose the part that she is confused about and it would redirect her to that part of the documentation website where the interface element would be mentioned in detail. This can be implemented with the help of hyperlinks that map the interface element on to fragment identifiers on the documentation website.
I have devoted a about 1/5th of my time developing this dissertation towards developing these support structures since they were a vital aspect for the students to learn about the new technologies in the ecosystem. But even then there are drawbacks to spreading the structures around. Having more than one entry point into these sites means that they remain hidden for a user who doesn't actively seek out for them.