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.
hydra:PartialCollectionView and other related classes.
Link to the code(PR): https://github.com/HTTP-APIs/hydrus/pull/391
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
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
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
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
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):
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
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
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
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
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: