# \[ANN\] ppx\_deriving\_protocol 0.8

**URL:** <https://discuss.ocaml.org/t/ann-ppx-deriving-protocol-0-8/1133>\
**Category:** Community\
**Tags:** announce\
**Created:** [November 16, 2017, 6:31pm UTC](https://discuss.ocaml.org/t/ann-ppx-deriving-protocol-0-8/1133 "2017-11-16T18:31:18Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![fugmann](https://avatars.discourse-cdn.com/v4/letter/f/c68b51/32.png) [@fugmann](https://discuss.ocaml.org/u/fugmann)\
**Post date:** [November 16, 2017, 6:31pm UTC](https://discuss.ocaml.org/t/ann-ppx-deriving-protocol-0-8/1133/1 "2017-11-16T18:31:18Z")

</div>

I’m happy to announce ppx\_deriving\_protocol v. 0.8

Ppx\_deriving\_protocol is a ppx to serialize and de-serialize ocaml data types. The ppx is generic in the sense that it allows users to plug in concrete protocol serializers and de-serializers without needing to modify the ppx or learning ocaml Ast.

The library include drivers for (de)serializing to/from json (Yojson.Safe.json) and xml\_light (Xml.xml), but users of the library may choose to create their own.

The library currently handles most primitive types (int, string, bool, etc), lists, options, record and tuples types. The goal is to support most types, including sum-types.

More information can be found at [https://github.com/andersfugmann/ppx-deriving-protocol](https://github.com/andersfugmann/ppx-deriving-protocol)

---

<div class="post-metadata">

**Author:** ![rgrinberg](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/rgrinberg/32/40_2.png) [@rgrinberg](https://discuss.ocaml.org/u/rgrinberg)\
**Post date:** [November 17, 2017, 7:10am UTC](https://discuss.ocaml.org/t/ann-ppx-deriving-protocol-0-8/1133/2 "2017-11-17T07:10:24Z")

</div>

A bit of bike shedding here but `ppx_protocol_conv` is the more consistent name if it uses ppx\_type\_conv rather than ppx\_deriving.

---

<div class="post-metadata">

**Author:** ![fugmann](https://avatars.discourse-cdn.com/v4/letter/f/c68b51/32.png) [@fugmann](https://discuss.ocaml.org/u/fugmann)\
**Post date:** [November 17, 2017, 3:31pm UTC](https://discuss.ocaml.org/t/ann-ppx-deriving-protocol-0-8/1133/3 "2017-11-17T15:31:59Z")

</div>

> [@rgrinberg](#):
>
> A bit of bike shedding here but ppx\_protocol\_conv is the more consistent name if it uses ppx\_type\_conv rather than ppx\_deriving.

It’s a good point. I was indeed in doubt of what to call the library, since the stanza for using it is `[@@deriving protocol ~driver=(module ...)]`.

I have no problem renaming library to `ppx_protocol_conv`. How would I deprecate the old opam package? Delete it, and create a new?.  
If I rename the opam package name, I would also rename the git repository which would invalidate links in the old package.

---

<div class="post-metadata">

**Author:** ![rgrinberg](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/rgrinberg/32/40_2.png) [@rgrinberg](https://discuss.ocaml.org/u/rgrinberg)\
**Post date:** [November 17, 2017, 5:58pm UTC](https://discuss.ocaml.org/t/ann-ppx-deriving-protocol-0-8/1133/4 "2017-11-17T17:58:14Z")

</div>

You could simply leave the old package name and make it depend on the correct opam package name. Adding that it is deprecated in the post install messages might be useful as well. Otherwise, I think you simply rename the git repo and submit a new package name as you said.

> I would also rename the git repository which would invalidate links in the old package.

Github leaves redirects for renamed packages. So this shouldn’t be a problem.
