# ndncert Authors

The following lists maintainers, primary developers, and all much-appreciated contributors to ndncert in alphabetic order.
The specific contributions of individual authors can be obtained from the git history of the [official ndncert repository](https://github.com/named-data/ndncert).
If you would like to become a contributor to the official repository, please follow the recommendations in https://github.com/named-data/.github/blob/master/CONTRIBUTING.md.

* Alexander Afanasyev <https://users.cs.fiu.edu/~afanasyev/>
* Ashlesh Gawande <https://www.linkedin.com/in/agawande>
* Siqi Liu <https://github.com/tylerliu>
* Eric Newberry <https://ericnewberry.com>
* Davide Pesavento <https://github.com/Pesa>
* Md Ashiqur Rahman <https://ashiqrahman.com>
* Junxiao Shi <https://cs.arizona.edu/~shijunxiao>
* Yufeng Zhang <https://yufengzh.io>
* ***(Maintainer)*** Zhiyi Zhang <https://zhiyi-zhang.com>

# Technical Advisors

* Lixia Zhang <https://web.cs.ucla.edu/~lixia>
