Anahita Project

The #Anahita #project management group. Visit https://github.com/anahitasocial for more information about Anahita code and how to get started.

Stories

Rastin Mehr

Rastin Mehr shared a photo

Like/Unlike actions are working. Furthermore, revised a design pattern of handling actions in browse views. The Follow action implementation is also another example. #Anahita #Hackathon #ReactJS #ReduxJS #MaterialUI
Ildemaro  Martinez Jr

Ildemaro Martinez Jr and Rastin Mehr commented on the note

During the last 2 weeks our focus has been on ways to deploy #Anahita using #Docker and #Kubernetes on cloud platforms such as #AWS we're going to make this happen and it will be a great milestone ... Read More
During the last 2 weeks our focus has been on ways to deploy #Anahita using #Docker and #Kubernetes on cloud platforms such as #AWS we're going to make this happen and it will be a great milestone for Anahita. Read Less
Hello Rastin: any progress/approximate timeline on this? We want to deploy #Anahita using #Docker and #Kubernetes and are waiting for official Anahita DK8s tools
Rastin Mehr
Rastin Mehr
February 13 2019 Permalink
Don't wait for us, build one of your own. We first want to build the Anahita React app, then reduce the back-end code base to APIs only, then we build the DK8 tools for the new architecture. Right now we don't want to... Read More
Don't wait for us, build one of your own. We first want to build the Anahita React app, then reduce the back-end code base to APIs only, then we build the DK8 tools for the new architecture. Right now we don't want to build DK8 tools for the existing release only to throw it out later. Read Less
Rastin Mehr

Rastin Mehr shared a photo

This weekend we performed more work on #Anahita stories in our #ReactJS app. Implemented localization, container to construct story messages. Also performed some refactoring and UI adjustments. Most of Anahita React development work isn't about building features, but finding new software design patterns for a complex graph architecture system. This will be our ongoing obsession. #Anahita #Hackathon
2 people liked this
Rastin Mehr

Rastin Mehr shared a note

For this week's #anahita #hackathon the focus is on elaborating the story cards and finding good design patterns for story actions.
Rajkumar Mundel liked this
Rastin Mehr

Rastin Mehr shared a note

This weekend we further refactored the Anahita-React app containers and components. Worked on basic implementation of story cards and story title. Also added a list of utility functions for parsing... Read More
This weekend we further refactored the Anahita-React app containers and components. Worked on basic implementation of story cards and story title. Also added a list of utility functions for parsing an entity's url, portrait, and cover. #Anahita #Hackathon #ReactJS #MaterialUI Read Less
Ildemaro  Martinez Jr

Ildemaro Martinez Jr and Rastin Mehr commented on the note

We're still working on devops and release engineering options for Anahita. We've been deploying two #kubernetes #cluster to #AWS during the last few weeks. All paving the way to build #Docker and #... Read More
We're still working on devops and release engineering options for Anahita. We've been deploying two #kubernetes #cluster to #AWS during the last few weeks. All paving the way to build #Docker and #k8s deployment tools for #Anahita. I appreciate your patience. Read Less
hello Rastin: any progress/news on officialAnahita DK8s
image+tools?
Rastin Mehr
Rastin Mehr
January 17 2019 Permalink
The DK8 is on hold for now until the Anahita React app has some progress.
Rastin Mehr

Rastin Mehr shared a note

The first #Anahita #Hackathon in the new year started by cleaning up the code in Anahita React repository. We are going to focus on the React app until it is ready and discover new design patterns ... Read More
The first #Anahita #Hackathon in the new year started by cleaning up the code in Anahita React repository. We are going to focus on the React app until it is ready and discover new design patterns that work best for Anahita. Through this process, the back-end API will be improved too. Read Less
Rastin Mehr

Rastin Mehr shared a note

Some improvements are done to the Stories API. The owner field was missing from the story objects. Also for the total number of stories the getTotal() method returns an arbitrary number 777. The qu... Read More
Some improvements are done to the Stories API. The owner field was missing from the story objects. Also for the total number of stories the getTotal() method returns an arbitrary number 777. The query that calculates the total number is processing intensive and useless since users won't request for more than several hundred records anyway in extreme cases. Stories now load a tad bit quicker as a result. Implemented the proof of concept Stories container in our react app. We'll continue working on the stories next week. #Anahita #Hackathon Read Less
Rastin Mehr

Rastin Mehr commented on the Article

Where Is Anahita Heading To? The Action Plan

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 ...

Read More

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.  

Specialization

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 https://tokbox.com
  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

Read Less
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... Read More
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. Read Less
Rastin Mehr

Rastin Mehr published a new Article

Anahita 4.4.0 Birth Release Is Now Available

Anahita 4.4.0 Birth release is now available

We just tagged this release on Github. It doesn't provide any new features, but some significant changes in the core framework has happened that are essential for those of you who are building cust...

Read More

We just tagged this release on Github. It doesn't provide any new features, but some significant changes in the core framework has happened that are essential for those of you who are building custom applications for Anahita. 

How to upgrade

We have merged all the parts that we were using from the legacy Nooku and Koowa frameworks and removed most of the unused code. This has made the Anahita framework API consistent everywhere. So basically:

  1. All classes and objects prefixed with "K" or now prefixed with "An"
  2. All instances of "koowa" in the identifiers are now "anahita"
  3. All instances of "KOOWA" constants are now "ANAHITA"
  4. In the www/configuration.php file, "AnConfig" is now "AnSiteConfig". That's because once we merged the KConfig classes as AnConfig, it interfered with the AnConfig in the config file.     
IT IS IMPORTANT that you update any custom apps or templates in your existing Anahita installation to reflect those changes. There are no database schema changes in this release, so you are ok on that front. To update your existing installation just run the following command in the root of your Anahita installation:
$ composer update

If you had any questions or issues, please start a topic in the Tribe Support group so we can help you. Same goes if you discovered any bugs: https://www.getanahita.com/groups/107732-tribe-support

Here is the CHANGELOG for those who care: https://github.com/anahitasocial/anahita/blob/master/CHANGELOG.md#anahita-440

What's next

We can now fully focus on separating Anahita Client and Server applications. We are currently developing the Anahita React app and refining the RESTful APIs in the server side code. You can read this blog post to learn more about the action plan: 

Enjoy the consistent Anahita framework API

#Anahita #BirthRelease #Framework #Nooku #Koowa

Read Less
Unknown Person liked this
Rastin Mehr

Rastin Mehr shared a note

We just tagged Anahita 4.4.0 on github. Could you please do an test install and report issues if you found any. I'll publish an announcement in the Atrium later today. Thank you! #Anahita #BirthRel... Read More
We just tagged Anahita 4.4.0 on github. Could you please do an test install and report issues if you found any. I'll publish an announcement in the Atrium later today. Thank you! #Anahita #BirthRelease Read Less
Rastin Mehr

Rastin Mehr commented on the Article

Welcome To All Consistent Anahita Framework

Welcome to all consistent Anahita framework

We just reached an important milestone for Anahita. All the Nooku Koowa code which was being used are merged with the Anahita framework and most of the unused code has been removed. 

Our framework ...

Read More

We just reached an important milestone for Anahita. All the Nooku Koowa code which was being used are merged with the Anahita framework and most of the unused code has been removed. 

Our framework is now nice and consistent and no more confusions between "K" and "An" prefixes as well as "koowa" and "anahita" identifiers. Now all the class prefixes are "An" and wherever we had "koowa" it is "anahita". 

This release will be tagged version 4.4 because all your custom apps need to be updated to accommodate the recent changes. 

Our special thanks to the Nooku team for we couldn't have made it this far without their framework. 

Now while we're at it, could you please test installing from the master branch and let me know if everything is working properly? Thank you! 

#Anahita #Framework #nooku #koowa

Read Less
Unknown Person liked this
Rastin Mehr
Rastin Mehr
November 18 2018 Permalink
An important reminder: AnConfig should be AnSiteConfig in the configuration.php file. That's because KConfig is now AnConfig and it was conflicting with the former AnConfig in the configuration file. It's a simple fil... Read More
An important reminder: AnConfig should be AnSiteConfig in the configuration.php file. That's because KConfig is now AnConfig and it was conflicting with the former AnConfig in the configuration file. It's a simple file edit so we don't bother automating it. Read Less
Rastin Mehr

Rastin Mehr published a new Article

Welcome To All Consistent Anahita Framework

Welcome to all consistent Anahita framework

We just reached an important milestone for Anahita. All the Nooku Koowa code which was being used are merged with the Anahita framework and most of the unused code has been removed. 

Our framework ...

Read More

We just reached an important milestone for Anahita. All the Nooku Koowa code which was being used are merged with the Anahita framework and most of the unused code has been removed. 

Our framework is now nice and consistent and no more confusions between "K" and "An" prefixes as well as "koowa" and "anahita" identifiers. Now all the class prefixes are "An" and wherever we had "koowa" it is "anahita". 

This release will be tagged version 4.4 because all your custom apps need to be updated to accommodate the recent changes. 

Our special thanks to the Nooku team for we couldn't have made it this far without their framework. 

Now while we're at it, could you please test installing from the master branch and let me know if everything is working properly? Thank you! 

#Anahita #Framework #nooku #koowa

Read Less
Unknown Person liked this
Rastin Mehr

Rastin Mehr published a new Article

Where Is Anahita Heading To? The Action Plan

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 ...

Read More

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.  

Specialization

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 https://tokbox.com
  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

Read Less
3 people liked this
Nick Swinford

Nick Swinford commented on the note

I just tagged the Anahita 4.3.13 Birth Release. Could you please do a test install and report any issues that you might encounter? Thank you! #Anahita #BirthRelease
Nick Swinford
Nick Swinford
November 08 2018 Permalink
Yup, 5.7.21.
Rastin Mehr liked this
Nick Swinford

Nick Swinford and Rastin Mehr commented on the note

I just tagged the Anahita 4.3.13 Birth Release. Could you please do a test install and report any issues that you might encounter? Thank you! #Anahita #BirthRelease
Nick Swinford
Nick Swinford
November 06 2018 Permalink
I installed Anahita, created an account, logged out and logged back in without any issue. Thanks for the new release Rastin!
Rastin Mehr liked this
Rastin Mehr
Rastin Mehr
November 06 2018 Permalink
Thank you, I just noticed an issue in the video player styling. Need to fix that. It could be the number 13 in the version number.
Rastin Mehr
Rastin Mehr
November 06 2018 Permalink
Oh by the way, did you test on MySQL 5.7?
Rastin Mehr

Rastin Mehr shared a note

I just tagged the Anahita 4.3.13 Birth Release. Could you please do a test install and report any issues that you might encounter? Thank you! #Anahita #BirthRelease
Rastin Mehr

Rastin Mehr commented on the topic

ONLY_FULL_GROUP_BY sql mode causes error

As of MySQL 5.7.5, the ONLY_FULL_GROUP_BY sql mode is default and that causes issues with some errors in Anahita. #bug

Exception in ComStoriesControllerStory : Expression #8 of SELECT list is not ...

Read More

As of MySQL 5.7.5, the ONLY_FULL_GROUP_BY sql mode is default and that causes issues with some errors in Anahita. #bug

Exception in ComStoriesControllerStory : Expression #8 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'demo.story.name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by of the following query : SELECT DISTINCT IF (story.body '' AND story.body IS NOT NULL,story.id,IF(story.story_comment_id IS NOT NULL AND story.story_object_id IS NOT NULL , CONCAT_WS(',',story.name,story.component,DATE(story.created_on), story.story_object_id), CONCAT_WS(',',story.name,story.component,DATE(story.created_on),CASE TRUE WHEN CONCAT(story.name,story.component) LIKE 'cover_editcom_people' THEN CONCAT(story.story_target_id) WHEN CONCAT(story.name,story.component) LIKE 'avatar_editcom_people' THEN CONCAT(story.story_target_id) WHEN story.name LIKE "avatar_edit" THEN IF(story.story_subject_id = story.story_target_id, "", story.id) WHEN story.name LIKE "actor_follow" THEN story.story_subject_id ELSE CONCAT(story.story_target_id,story in /var/www/demo/vendor/anahita/anahita/src/libraries/default/base/controller/resource.php on line 210 The new server comes with an upgraded version of MySQL, 5.7.19, which has the ONLY_FULL_GROUP_BY sql_mode on by default (https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_only_full_group_by) and seems to be causing some issues.

Read Less
Rastin Mehr
Rastin Mehr
November 05 2018 Permalink
@NicholasJohn16 I treated the ONLY_FULL_GROUP_BY issue the same way Wordpress is doing. Removing it per database session.

https://github.com/anahitasocial/anahita/blob/889581806fac594ccadd34f82cb449add1ac04f4/src/... Read More
@NicholasJohn16 I treated the ONLY_FULL_GROUP_BY issue the same way Wordpress is doing. Removing it per database session.

https://github.com/anahitasocial/anahita/blob/889581806fac594ccadd34f82cb449add1ac04f4/src/libraries/anahita/database/adapter/mysqli.php#L193

Out of all the strict MySql 5.7 requirements, this is the only one we are leaving out which I think is a reasonable compromise. The performance overhead seems minimal. In fact there is a bit of performance boost in the Anahita 4.3.13 release. Read Less
Nick Swinford liked this
Rastin Mehr

Rastin Mehr shared a note

Master branch is updated with 4.3.13 code. Could you please try installing #Anahita from master branch and test everything? Thank you!
Rastin Mehr

Rastin Mehr shared a note

Do you notice a speed boost? The 4.3.13 may be a tad bit faster

Photos View All

Articles View All

Topics View All

To-dos View All

Powered by Anahita