HydraEcosystem GSoC 2019 Summary

Vishal Desai
3 min readAug 25, 2019

--

At HydraEcosystem we were working on hydrus a server which uses Hydra(http://www.hydra-cg.com) Specification for creation and documentation of its APIs.

The primary goal of my GSoC project was to make hydrus compatible with new developments made at Hydra. Besides that it also involved adding back-end of the synchronization mechanism and improving tests. Below I’ll summarize all the tasks which I have completed during GSoC and link to the code I submitted.

Pagination

Utilized hydra:PartialCollectionView and other related classes.
Link to the code(PR): https://github.com/HTTP-APIs/hydrus/pull/391

Search interface

Added IriTemplate and other related classes at hydra-python-core:
Link to the code(PR): https://github.com/HTTP-APIs/hydra-python-core/pull/22

Utilized hydra:IriTemplate and other related classes at hydrus to implement searching interface.
Link to the code(PR): https://github.com/HTTP-APIs/hydrus/pull/403

Client-initiated pagination

Here we utilized IriTemplate to provide client the control over how pagination is done at hydrus.
Link to the code(PR): https://github.com/HTTP-APIs/hydrus/pull/409

Standardized the response format

Added HydraStatus and HydraError classes to the hydra-python-core.
Link to the code(PRs):
https://github.com/HTTP-APIs/hydra-python-core/pull/19 https://github.com/HTTP-APIs/hydra-python-core/pull/21 https://github.com/HTTP-APIs/hydra-python-core/pull/23

Added and adapted functions in doc_maker to add possible statuses.
Link to the code(PR): https://github.com/HTTP-APIs/hydra-python-core/pull/24

Utilized HydraStatus and HydraError at hydrus to generate status responses.
Link to the code(PR): https://github.com/HTTP-APIs/hydrus/pull/402

Updated hydrus with latest changes made in the Spec:

Added new elements and renamed read-only and write-only to readable and writeable at hydra-python-core.
Link to the code(commits):
https://github.com/HTTP-APIs/hydra-python-core/pull/28/commits/949d728627055f5042bd7bca3c1842e601b50712
https://github.com/HTTP-APIs/hydra-python-core/pull/28/commits/54530cde0e32d880ba633de73ec879354c255630

Updated hydrus accordingly.
Link to the work(commit): https://github.com/HTTP-APIs/hydrus/pull/411/commits/429e009ee653b39950cf430aabd38b566e55a037

Refactored crud functions
Link to the code(PR): https://github.com/HTTP-APIs/hydrus/pull/413

Back-end of client-server synchronization

Added synchronization backend at hydrus to keep clients updated.
Link to the code(PR): https://github.com/HTTP-APIs/hydrus/pull/414

Added Support for Hydra:Link

Added HydraLink class at hydra-python-core which will provide a template for creating predicates with type hydra:Link.
Link to the code(PR): https://github.com/HTTP-APIs/hydra-python-core/pull/31

Utilized HydraLink at hydrus to improve handling of nested resources.
Link to the code(PR): https://github.com/HTTP-APIs/hydrus/pull/415

Implemented middle-layer for the agent GUI

Implemented send_command and apidoc_graph endpoint of the middle-layer.

Link to the code(PR): https://github.com/HTTP-APIs/hydra-python-agent-gui/pull/2

PRs and commits extending and improving tests

Documentation PRs

Besides all this work, we had some really interesting discussions on different issues and slack threads, it was the most time consuming yet most important part of my GSoC journey, and for that I would like to thank Akshay, Chris and Lorenzo. The support and cooperation they provide for discussion converted old school mechanical engineering/developing process into a completely new and exciting process, I would call it “Deliberative Software Engineering” if such a term exist. And it would be impossible to summarize my GSoC journey without mentioning Gustavo and the heavy-lifting he did in some tasks which made my work way simpler. And we all couldn’t thank him enough for the cool GUI he created for the agent(hydra-python-agent-gui).

Links to previous blogs:

--

--