HydraEcosystem GSoC 2019 Summary
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
- https://github.com/HTTP-APIs/hydra-python-core/pull/28/commits/ee6651929b7074f95b0c6949ef82784f31c3b0f2
- https://github.com/HTTP-APIs/hydrus/pull/411/commits/943db55bad4b32fb27729cb64a27c7b16f4aac4e
- https://github.com/HTTP-APIs/hydrus/pull/398
- https://github.com/HTTP-APIs/hydrus/pull/399
- https://github.com/HTTP-APIs/hydrus/pull/422
Documentation PRs
- https://github.com/HTTP-APIs/http-apis.github.io/pull/46
- https://github.com/HTTP-APIs/http-apis.github.io/pull/57
- https://github.com/HTTP-APIs/http-apis.github.io/pull/61
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: