Co-Creating the System Serving the Superalgos Project
The Superalgos ProjectAn open community together with its body of work, implementing a framework to enable a superior trading intelligence evolving within an open global collaboration of humans and machines, at the service of all people. distributes the development and maintenance of the system on a global network of Dev Teams, in the quest to create a highly resilient body of talent in charge of both producing and maintaining the technology required to run the project.
We aim to create a superior trading intelligence capable of outperforming every other participant in the markets. Such intelligence will certainly enable a number of businesses, which will depend on the project's systems to run successfully.
The system is subdivided in tens of components consisting of frontend and backend modules along with some infrastructure and blockchain components.
In order to achieve maximum resilience, Dev Teams develop one or two components each only, with the exception of a few pioneer teams who may have developed more than two in early stages.
This means that only a few dozens of Dev Teams contributing early on will be able to participate in this role.
The Core TeamA growing group of founders tasked with driving the Superalgos Project forwards during the bootstrapping phase, whose members are referred to as "Core Team Members". The Core Team is open to all Team Members who show extraordinary drive to lead the project.Learn more about the Core Team... maintains the Superalgos organization on GitHub. Each part of the system has its own repository to which Dev Teams contribute to.
The chart below is an indication of the current progress on the concepts that have been so far identified.
The chart above shows the current allocation of concepts per Development Team.
The work of Dev Teams is based on undertaking responsibility over specific concepts, which usually map to one or more system components. For instance, the concept of users is handled by the Users Backend Module and the Users Frontend Module.
Each concept is assigned a category, which is a function of the perceived level of criticality, urgency and difficulty entailed in the particular concept. There are fifty categories, from 1 to 50. The more critical, urgent or difficult the concept is perceived to be, the higher the category number, which is pegged to an ALGO StreamA smart contract that allocates ALGO Tokens at a preprogrammed rate to the address of a person or entity working for the Superalgos Project. Learn more about ALGO Streams. of the size corresponding to the concept's category.
The Chart below shows the category of the concepts identified so far.
Dev Teams are expected to assume full responsibility over a specific concept, for instance, users, teams or events. Many times, a concept maps directly to one or more specific components, but is not necessarily limited to that.
This distinction is instrumental to understanding the scope of the responsibility of Dev Teams, in particular because the Superalgos system is meant to evolve over time. Evolution of the system may entail the need to integrate new components or even new requirements that may emerge resulting from the expansion of business needs.
Assuming full responsibility implies that Dev Teams are in charge of producing their own requirements, developing the components and maintaining them in the long term. As such, teams are expected to get truly close to the project, becoming a fundamental piece of the machinery.
While we foresee components stabilizing after a period of time, as explained earlier, the project is in constant evolution. Any new piece of functionality or requirement falling within the scope of a certain concept, requires the prompt attention of the Dev Team responsible for that concept.
In terms of implementation, the Master App is a React / Redux app, which accesses a GraphQL backend API via Apollo.
The Master App API is actually an API Router, forwarding incoming requests to the backend of each individual module.
A module backend consists of a Node.js / Express app, with either MongoDB or Postgre databases depending on the preferences of each individual developer.
As general requirements, Dev Teams are expected to maintain a clear README.md file and a thorough change log. We also encourage proper use of git comments and maintaining a clean git workflow.
Depending on the component, the first working version is estimated to require roughly 1 to 2 months of development effort for a senior developer working full time or a similar time for a team of two developers working part time. Should your team count with more resources, it shouldn't be a problem to deliver the component much faster.
The development workflow exhibits two distinct phases: open requirements and free development.
The first task Dev Teams face after getting acquainted with the system and the functionality falling within the concept on which they are assuming responsibility is to draft their own requirements sheet, kick starting the open requirements phase.
Requirements are then discussed with the Core TeamA growing group of founders tasked with driving the Superalgos Project forwards during the bootstrapping phase, whose members are referred to as "Core Team Members". The Core Team is open to all Team Members who show extraordinary drive to lead the project.Learn more about the Core Team... and the rest of the teams, in particular those responsible for adjacent or intersecting functionality, and are eventually approved, after any number of iterations.
Teams are autonomous and may freely decide how to organize their work internally. However, we do require teams to work under an agile developmentAgile software development is an approach to software development under which requirements and solutions evolve through the collaborative effort of self-organizing and cross-functional teams and their customer(s)/end user(s). It advocates adaptive planning, evolutionary development, early delivery, and continual improvement, and it encourages rapid and flexible response to change.Wikipedia: Agile Software Development approach, attending one technical meeting per week and pushing batches of functionality to the develop branch at least once per month.
Once requirements have been completed, tested and pushed to the production environment, the free development phase starts. The components pushed to production are considered alpha stage, so teams iterate on the first version, making improvements and correcting bugs until the code is stable.
Dev Teams are expected to stay close to the project for the long run, as even after the code has been stabilized, new requirements may arise.
Dev Teams are assigned an ALGO StreamA smart contract that allocates ALGO Tokens at a preprogrammed rate to the address of a person or entity working for the Superalgos Project. Learn more about ALGO Streams. during the final stage of the onboarding process, once they have started works.
However, the stream is activated and started only after the team has pushed the solution for the original requirements into production, having gone through a testing phase in development.
The Superalgos OrganizationA not-for-profit organisation with the main purpose to promote the Superalgos Project. The Superalgos Organization is the legal entity representing the Superalgos Project and serving as the excecutive arm, with attributions in certain management tasks, public awareness and education. supervises the ALGO Stream throughout the life of the project. The ALGO Stream may be paused in cases when a team becomes unresponsive or does not satisfy the service level agreements established for maintenance. Should a Dev Team become a liability for the project for whatever reason, the ALGO Stream Supervisor may decide to stop the miner and find a replacement for the team at fault.
Let's use an example to bring everything said so far down to earth.
A team of three developers wishes to contribute to the development of the Superalgos system. They get in touch with the project, meet the technical Core Team maintaining the Superalgos organization in Github, discuss priorities and apply to work on a specific concept.
The selected concept becomes their Area of ResponsibilityA defined scope of work within a domain. Sometimes an area of responsibility may map with a role, such as in Marketing Direction; other times it may map with an asset, such as Project Website; or with an undefined number of assets of a certain type, for instance, Pitch Decks..
Every piece of functionality identified (or to be identified) that logically falls within the scope of that particular concept becomes the team's responsibility. Their mission is to develop the corresponding components, refine them and maintain them.
The team starts out by joining regular developer meetings, at least once per week; they discuss their concept with other developers, getting acquainted with the system architecture and gathering initial definitions.
They present a requirements sheet and agree with the community on the scope of a first usable version of the components, and start programming.
While developing version one of the components, they stay in touch with other developers and the Core Team, consulting on any issues that may arise, while showcasing their progress at developer meetings.
Eventually, they start integrating the module into the overall system, polishing the rough edges until the functionality becomes usable.
By that time, the rest of developers have become acquainted with the new team, having interacted frequently and followed their work closely. The constant revisions through regular meetings help the new team stay on course, remain focused in priorities and programing following agreed best practices.
This initial piece of work is enough to show the rest of developers that the new team is a worthy acquisition. As soon as the software is up and running in the production environment, the team's ALGO StreamA smart contract that allocates ALGO Tokens at a preprogrammed rate to the address of a person or entity working for the Superalgos Project. Learn more about ALGO Streams. is readily activated and started.
The new team is now a key part of the community. It keeps developing their module until the last bit of functionality is integrated. People report bugs until the module stabilizes and requires less and less work. The team stays alert, updating the module every time a new requirement arises.
If at any point in time an individual contributor wishes to step aside, or fails to deliver as per the expectations of the rest of the Dev Teams, the project will help the person make a clean exit by delegating responsibilities into:
other members of the same team;
In the first case, the team's relationship with the rest of the ecosystem remains the same and the team shall keep all of its responsibilities and entitlements through an internal change in management.
In the second case, the departing team will keep all the ALGO it may have been allocated up to that point in time.
However, the departing team will resign entitlements to any further ALGO allocations.
If you are a talented developer and would like to join the project's Development Team, we would be happy to have you on board.
It is in fact the best way to support the ecosystem that aims to disrupt the trading space.
Please follow these steps:
Study this website thoroughly to gain the best possible understanding of the project.
Read the following articles to get acquainted with the inner workings of the project:
Check the repositories at the Superalgos Github organization.
Join the Superalgos Develop Telegram group and read the pinned welcome message.