Anahita Project

Anahita Project's Articles

Rastin Mehr

Rastin Mehr

November 13 2018

Where is Anahita heading to? The Action Plan

I started an article reflecting on Anahita's history and goals. It was supposed to be just a paragraph, but it grew to become an independent blog post. Apparently, I like to ramble on when it gets to talking about Anahita. You can find the published article here:

TL;DR after building a learning management system for an old-school education company, I was inspired to build a more democratic and distributed online learning and knowledge sharing platform. I left my job, focused on my new company, grew a team, got down to coding. At the time we thought social networking was the solution to all humanity's ailments, but then alternative facts, click-bait content, and extremist ideas started spreading around on mega giant social media. After some reflection, we decided to focus on building tools for open science and data. Our goal is to make Anahita the lightest viable unit required to set up a knowledge sharing and collaboration platform. We want brutal minimalism to be at the core of our design philosophy. 

So as for the action plan, here is what's happening:

Nooku/Koowa Code Refactor

UPDATE: this is already done in Anahita 4.4.0

We are still using some code from Nooku Framework, named Koowa. We're going to merge them all with Anahita framework and take out every bit that isn't being used. We've been doing this quietly in every maintenance release. We expect this refactor to be done in the next couple of maintenance releases.

Separating Client and Server apps

We are developing an Anahita React app which will be the web-based user interface for Anahita. We are also using the React Material UI to build the user interfaces primarily for mobile users while accommodating desktop users too.  A lot of concepts and code used in this app can later be reused in custom mobile or desktop apps for Anahita. Through this process, we are also improving Anahita's RESTful API. The development will continue until we have most of the existing features in the React App, plus some improvements. 

Reducing the server side to APIs only

In the current codebase, Anahita renders most of the user interfaces in the server side and then it uses JQuery to fetch or post data or animate the user interface elements. JQuery is like stick and stone technology in comparison to React or mobile application development frameworks. We are going to get rid of server-side rendering altogether and remove every bit of library and code in Anahita responsible for rendering HTML pages. The Anahita PHP codebase will only provide a RESTful API to a graph architecture on top of a relational database. This API can be extended by installing Anahita apps. This will further reduce the size of the Anahita code base which is currently around 11MB, but we estimate to be cut to half.  


Anahita is a platform and framework. We want it to be specialized enough to function as a graph architecture for developing knowledge sharing apps and services. Meanwhile, we refuse to turn it into a specific product for a specific case scenario and specific target audience. Productization may result in a short-term gain, but it'll take away Anahita's ability to evolve and adapt in an ever-changing environment. With that in mind, we want to build apps and tools that are commonly used by researchers, scientists, and collaborators. For example: 

  1. A Kanban board in the Todo app. 
  2. Publishing tools for Articles. 
  3. Native support for Video files either in the Photos app or an independent Videos app. 
  4. Native support for web links with previews.
  5. Ability to upload and share documents
  6. Integration with Google Drive, Dropbox, Github, and data visualization services
  7. OAuth consumer and supplier
  8. Private Messaging
  9. Integration with chat and video streaming services such as
  10. user onboarding workflows
  11. LMS apps for creating and managing courses, classrooms, and learning objects
  12. Data visualization tools

Devops and Release Engineering 

I think there is no need to explain why we need to start using Docker and Kubernetes technologies as well as other continuous integration and deployment tools. Having proper release engineering tools in place will make Anahita deployment easier on cloud computing platforms such as AWS, Azure, or BlueOcean. 

Questions, comments, feedback? Let me know in the comments please.

#Anahita #ActionPlan #RoadMap #Vision

3 people liked this
Rastin Mehr
Rastin Mehr
November 18 2018 Permalink
Heads up: the Nooku/Koowa Code Refactor is done in Anahita 4.4.0 and we're now focusing on the Anahita React app. In the meantime we're researching and prototyping the best ways to build Devops tools for Anahita. This requires knowing how the Anahita file structure and app distribution going to be in the upcoming releases, which is why we aren't rushing into building Docker and Kubernetes tools yet.

Additional Information


    Powered by Anahita