Permalink
Browse files

Merge tag 'v0.12.3'

Releasing 0.12.3
  • Loading branch information...
2 parents bef62b0 + 3c0d3a5 commit a14f453c85c83ad5d002973edfdaae6b0ccf8ee8 @sritchie-stripe sritchie-stripe committed Dec 2, 2016
Showing with 7,422 additions and 1,552 deletions.
  1. +3 −0 .gitignore
  2. +18 −1 .travis.yml
  3. +38 −0 CHANGES.md
  4. +2 −1 COMMITTERS.md
  5. +125 −11 CONTRIBUTING.md
  6. +1 −3 NOTICE
  7. +39 −47 README.md
  8. +10 −7 algebird-benchmark/README.md
  9. +36 −0 algebird-benchmark/src/main/scala/com/twitter/algebird/benchmark/AveragedValueBenchmark.scala
  10. +19 −2 algebird-benchmark/src/main/scala/com/twitter/algebird/benchmark/CMSBenchmark.scala
  11. +3 −3 algebird-benchmark/src/main/scala/com/twitter/algebird/benchmark/HLLBenchmark.scala
  12. +19 −1 algebird-benchmark/src/main/scala/com/twitter/algebird/benchmark/TopCMSBenchmark.scala
  13. +57 −0 algebird-benchmark/src/main/scala/com/twitter/algebird/benchmark/Tuple4Benchmark.scala
  14. +4 −4 algebird-core/src/main/scala/com/twitter/algebird/Aggregator.scala
  15. +138 −36 algebird-core/src/main/scala/com/twitter/algebird/AveragedValue.scala
  16. +13 −0 algebird-core/src/main/scala/com/twitter/algebird/BufferedOperation.scala
  17. +17 −1 algebird-core/src/main/scala/com/twitter/algebird/CMSHasher.scala
  18. +11 −11 algebird-core/src/main/scala/com/twitter/algebird/CountMinSketch.scala
  19. +31 −36 algebird-core/src/main/scala/com/twitter/algebird/Eventually.scala
  20. +419 −0 algebird-core/src/main/scala/com/twitter/algebird/ExpHist.scala
  21. +78 −0 algebird-core/src/main/scala/com/twitter/algebird/First.scala
  22. +381 −337 algebird-core/src/main/scala/com/twitter/algebird/GeneratedAbstractAlgebra.scala
  23. +423 −1 algebird-core/src/main/scala/com/twitter/algebird/GeneratedProductAlgebra.scala
  24. +1 −0 algebird-core/src/main/scala/com/twitter/algebird/Group.scala
  25. +101 −68 algebird-core/src/main/scala/com/twitter/algebird/HyperLogLog.scala
  26. +84 −28 algebird-core/src/main/scala/com/twitter/algebird/HyperLogLogSeries.scala
  27. +68 −0 algebird-core/src/main/scala/com/twitter/algebird/Last.scala
  28. +188 −0 algebird-core/src/main/scala/com/twitter/algebird/Max.scala
  29. +108 −0 algebird-core/src/main/scala/com/twitter/algebird/Min.scala
  30. +28 −40 algebird-core/src/main/scala/com/twitter/algebird/MomentsGroup.scala
  31. +2 −1 algebird-core/src/main/scala/com/twitter/algebird/Monoid.scala
  32. +0 −96 algebird-core/src/main/scala/com/twitter/algebird/OrderedSemigroup.scala
  33. +2 −0 algebird-core/src/main/scala/com/twitter/algebird/Ring.scala
  34. +28 −3 algebird-core/src/main/scala/com/twitter/algebird/Semigroup.scala
  35. +89 −0 algebird-core/src/main/scala/com/twitter/algebird/SetDiff.scala
  36. +1 −1 algebird-core/src/main/scala/com/twitter/algebird/SummingIterator.scala
  37. +3 −4 algebird-core/src/main/scala/com/twitter/algebird/legacy/package.scala
  38. +0 −81 algebird-core/src/main/scala/com/twitter/algebird/macros/Cuber.scala
  39. +86 −0 algebird-core/src/main/scala/com/twitter/algebird/macros/Roller.scala
  40. +4 −4 algebird-core/src/main/scala/com/twitter/algebird/statistics/GaussianDistributionMonoid.scala
  41. +32 −34 algebird-test/src/main/scala/com/twitter/algebird/ApproximateProperty.scala
  42. +242 −89 algebird-test/src/main/scala/com/twitter/algebird/BaseProperties.scala
  43. +61 −0 algebird-test/src/main/scala/com/twitter/algebird/MetricProperties.scala
  44. +36 −9 algebird-test/src/main/scala/com/twitter/algebird/MonadLaws.scala
  45. +53 −0 algebird-test/src/main/scala/com/twitter/algebird/PredecessibleLaws.scala
  46. +7 −35 algebird-test/src/main/scala/com/twitter/algebird/{SucPredLaws.scala → SuccessibleLaws.scala}
  47. +58 −0 algebird-test/src/main/scala/com/twitter/algebird/scalacheck/Arbitrary.scala
  48. +57 −0 algebird-test/src/main/scala/com/twitter/algebird/scalacheck/ExpHistInstances.scala
  49. +55 −0 algebird-test/src/main/scala/com/twitter/algebird/scalacheck/Gen.scala
  50. +73 −0 algebird-test/src/main/scala/com/twitter/algebird/scalacheck/IntervalInstances.scala
  51. +32 −0 algebird-test/src/main/scala/com/twitter/algebird/scalacheck/NonEmptyVector.scala
  52. +27 −0 algebird-test/src/main/scala/com/twitter/algebird/scalacheck/PosNum.scala
  53. +0 −14 algebird-test/src/test/scala/com/twitter/algebird/AbstractAlgebraTest.scala
  54. +6 −16 ...rd-test/src/test/scala/com/twitter/algebird/{AdJoinedUnitRing.scala → AdJoinedUnitRingLaws.scala}
  55. +0 −62 algebird-test/src/test/scala/com/twitter/algebird/AggregationMonoids.scala
  56. +71 −0 algebird-test/src/test/scala/com/twitter/algebird/AveragedValueLaws.scala
  57. +7 −2 algebird-test/src/test/scala/com/twitter/algebird/BatchedTest.scala
  58. +26 −47 algebird-test/src/test/scala/com/twitter/algebird/CollectionSpecification.scala
  59. +13 −26 algebird-test/src/test/scala/com/twitter/algebird/CombinatorTest.scala
  60. +35 −18 algebird-test/src/test/scala/com/twitter/algebird/CountMinSketchTest.scala
  61. +16 −6 algebird-test/src/test/scala/com/twitter/algebird/{DecayedValueTest.scala → DecayedValueLaws.scala}
  62. +2 −1 algebird-test/src/test/scala/com/twitter/algebird/DecayedVectorProperties.scala
  63. +53 −16 algebird-test/src/test/scala/com/twitter/algebird/EventuallyTest.scala
  64. +294 −0 algebird-test/src/test/scala/com/twitter/algebird/ExpHistLaws.scala
  65. +27 −0 algebird-test/src/test/scala/com/twitter/algebird/FirstLaws.scala
  66. +4 −0 algebird-test/src/test/scala/com/twitter/algebird/FromIntLike.scala
  67. +8 −17 algebird-test/src/test/scala/com/twitter/algebird/FunctionMonoidTests.scala
  68. +90 −0 algebird-test/src/test/scala/com/twitter/algebird/GeneratedAbstractAlgebraLaws.scala
  69. +111 −0 algebird-test/src/test/scala/com/twitter/algebird/GeneratedProductAlgebraLaws.scala
  70. +0 −81 algebird-test/src/test/scala/com/twitter/algebird/Generators.scala
  71. +61 −10 algebird-test/src/test/scala/com/twitter/algebird/HyperLogLogSeriesTest.scala
  72. +22 −14 algebird-test/src/test/scala/com/twitter/algebird/HyperLogLogTest.scala
  73. +2 −1 algebird-test/src/test/scala/com/twitter/algebird/IntervalLaws.scala
  74. +0 −1 algebird-test/src/test/scala/com/twitter/algebird/JavaBoxedTests.scala
  75. +27 −0 algebird-test/src/test/scala/com/twitter/algebird/LastLaws.scala
  76. +50 −0 algebird-test/src/test/scala/com/twitter/algebird/MaxLaws.scala
  77. +12 −36 algebird-test/src/test/scala/com/twitter/algebird/MetricProperties.scala
  78. +5 −4 algebird-test/src/test/scala/com/twitter/algebird/MinHasherTest.scala
  79. +40 −0 algebird-test/src/test/scala/com/twitter/algebird/MinLaws.scala
  80. +6 −14 ...est/src/test/scala/com/twitter/algebird/{MinMaxAggregatorTest.scala → MinMaxAggregatorSpec.scala}
  81. +25 −8 algebird-test/src/test/scala/com/twitter/algebird/{MomentsGroupTest.scala → MomentsLaws.scala}
  82. +5 −14 ...st/src/test/scala/com/twitter/algebird/{PredecessibleTests.scala → PredecessibleProperties.scala}
  83. +135 −0 algebird-test/src/test/scala/com/twitter/algebird/SetDiffTest.scala
  84. +7 −3 algebird-test/src/test/scala/com/twitter/algebird/SketchMapTest.scala
  85. +5 −1 algebird-test/src/test/scala/com/twitter/algebird/SpaceSaverTest.scala
  86. +3 −12 algebird-test/src/test/scala/com/twitter/algebird/SuccessibleProperties.scala
  87. +4 −6 algebird-test/src/test/scala/com/twitter/algebird/TopKTests.scala
  88. +14 −2 algebird-util/src/main/scala/com/twitter/algebird/util/UtilAlgebras.scala
  89. +48 −23 algebird-util/src/test/scala/com/twitter/algebird/util/UtilAlgebraProperties.scala
  90. +85 −9 build.sbt
  91. +293 −0 docs/src/main/resources/microsite/data/menu.yml
  92. +16 −0 docs/src/main/tut/cookbook.md
  93. +3 −0 docs/src/main/tut/cookbook/cookbook.md
  94. +14 −0 docs/src/main/tut/datatypes.md
  95. +22 −0 docs/src/main/tut/datatypes/adaptive_matrix.md
  96. +17 −0 docs/src/main/tut/datatypes/adaptive_vector.md
  97. +17 −0 docs/src/main/tut/datatypes/affine_function.md
  98. +13 −0 docs/src/main/tut/datatypes/approx.md
  99. +18 −0 docs/src/main/tut/datatypes/approx/approximate.md
  100. +29 −0 docs/src/main/tut/datatypes/approx/bloom_filter.md
  101. +78 −0 docs/src/main/tut/datatypes/approx/countminsketch.md
  102. +162 −0 docs/src/main/tut/datatypes/approx/exponential_histogram.md
  103. +117 −0 docs/src/main/tut/datatypes/approx/hyperloglog.md
  104. +20 −0 docs/src/main/tut/datatypes/approx/hyperloglog_series.md
  105. +18 −0 docs/src/main/tut/datatypes/approx/min_hasher.md
  106. +91 −0 docs/src/main/tut/datatypes/approx/q_tree.md
  107. +18 −0 docs/src/main/tut/datatypes/approx/space_saver.md
  108. +109 −0 docs/src/main/tut/datatypes/averaged_value.md
  109. +33 −0 docs/src/main/tut/datatypes/bytes.md
  110. +13 −0 docs/src/main/tut/datatypes/combinator.md
  111. +17 −0 docs/src/main/tut/datatypes/combinator/caseclass.md
  112. +31 −0 docs/src/main/tut/datatypes/combinator/collections.md
  113. +44 −0 docs/src/main/tut/datatypes/combinator/cuber.md
  114. +18 −0 docs/src/main/tut/datatypes/combinator/eventually.md
  115. +13 −0 docs/src/main/tut/datatypes/combinator/java_collections.md
  116. +18 −0 docs/src/main/tut/datatypes/combinator/monoid_statistics.md
  117. +17 −0 docs/src/main/tut/datatypes/combinator/option_monoid.md
  118. +17 −0 docs/src/main/tut/datatypes/combinator/priority.md
  119. +18 −0 docs/src/main/tut/datatypes/combinator/product_algebra.md
  120. +44 −0 docs/src/main/tut/datatypes/combinator/roller.md
  121. +76 −0 docs/src/main/tut/datatypes/decayed_value.md
  122. +18 −0 docs/src/main/tut/datatypes/decayed_vector.md
  123. +80 −0 docs/src/main/tut/datatypes/first_and_last.md
  124. +16 −0 docs/src/main/tut/datatypes/five_moments.md
  125. +16 −0 docs/src/main/tut/datatypes/gaussian_distribution.md
  126. +16 −0 docs/src/main/tut/datatypes/interval.md
  127. +113 −0 docs/src/main/tut/datatypes/min_and_max.md
  128. +25 −0 docs/src/main/tut/datatypes/min_plus_algebra.md
  129. +16 −0 docs/src/main/tut/datatypes/reset_state.md
  130. +38 −0 docs/src/main/tut/datatypes/right_folded.md
  131. +18 −0 docs/src/main/tut/datatypes/set_diff.md
  132. +20 −0 docs/src/main/tut/datatypes/sgd.md
  133. +26 −0 docs/src/main/tut/datatypes/summer.md
  134. +17 −0 docs/src/main/tut/datatypes/summer/adaptive_cache.md
  135. +24 −0 docs/src/main/tut/datatypes/summer/batched.md
  136. +18 −0 docs/src/main/tut/datatypes/summer/sum_all.md
  137. +21 −0 docs/src/main/tut/datatypes/summer/summingcache.md
  138. +20 −0 docs/src/main/tut/datatypes/summer/summingiterator.md
  139. +22 −0 docs/src/main/tut/datatypes/summer/summingqueue.md
  140. +18 −0 docs/src/main/tut/datatypes/topk.md
  141. +34 −0 docs/src/main/tut/faq.md
  142. +56 −0 docs/src/main/tut/index.md
  143. +37 −0 docs/src/main/tut/resources_for_learners.md
  144. +18 −0 docs/src/main/tut/typeclasses.md
  145. +29 −0 docs/src/main/tut/typeclasses/abstract_algebra.md
  146. +16 −0 docs/src/main/tut/typeclasses/aggregator.md
  147. +32 −0 docs/src/main/tut/typeclasses/applicative.md
  148. +21 −0 docs/src/main/tut/typeclasses/buffered.md
  149. +18 −0 docs/src/main/tut/typeclasses/fold.md
  150. +27 −0 docs/src/main/tut/typeclasses/functor.md
  151. +29 −0 docs/src/main/tut/typeclasses/group.md
  152. +17 −0 docs/src/main/tut/typeclasses/hash128.md
  153. +27 −0 docs/src/main/tut/typeclasses/metric.md
  154. +35 −0 docs/src/main/tut/typeclasses/monad.md
  155. +29 −0 docs/src/main/tut/typeclasses/monoid.md
  156. +18 −0 docs/src/main/tut/typeclasses/predecessible.md
  157. +20 −0 docs/src/main/tut/typeclasses/preparer.md
  158. +45 −0 docs/src/main/tut/typeclasses/ring.md
  159. +27 −0 docs/src/main/tut/typeclasses/semigroup.md
  160. +18 −0 docs/src/main/tut/typeclasses/successible.md
  161. +90 −0 docs/src/main/tut/typeclasses/typeclasses.md
  162. +0 −43 project/DocGen.scala
  163. +1 −1 project/build.properties
  164. +4 −2 project/plugins.sbt
  165. +47 −32 scripts/ntuple_generators.rb
  166. +40 −14 scripts/product_generators.rb
  167. +1 −1 version.sbt
View
@@ -49,3 +49,6 @@ project/build/target/
project/plugins/target/
project/plugins/lib_managed/
project/plugins/src_managed/
+
+# Auto-copied by sbt-microsites
+docs/src/main/tut/contributing.md
View
@@ -6,10 +6,19 @@ matrix:
script: ./sbt ++$TRAVIS_SCALA_VERSION clean test
- scala: 2.11.8
- script: ./sbt ++$TRAVIS_SCALA_VERSION clean coverage test coverageReport mimaReportBinaryIssues
+ script: ./sbt ++$TRAVIS_SCALA_VERSION clean coverage test coverageReport mimaReportBinaryIssues docs/makeMicrosite
after_success:
- bash <(curl -s https://codecov.io/bash)
+before_install:
+ - export PATH=${PATH}:./vendor/bundle
+
+install:
+ - rvm use 2.2.3 --install --fuzzy
+ - gem update --system
+ - gem install sass
+ - gem install jekyll -v 3.2.1
+
cache:
directories:
- $HOME/.sbt/0.13/dependency
@@ -23,3 +32,11 @@ before_cache:
- du -h -d 2 $HOME/.sbt/
- find $HOME/.sbt -name "*.lock" -type f -delete
- find $HOME/.ivy2/cache -name "ivydata-*.properties" -type f -delete
+
+notifications:
+ webhooks:
+ urls:
+ - https://webhooks.gitter.im/e/83f5f34730d7a004992f
+ on_success: change
+ on_failure: always
+ on_start: never
View
@@ -1,5 +1,43 @@
# Algebird #
+### Version 0.12.3 (Not yet released) ###
+
+* Add `SetDiff` data structure to `algebird-core`: https://github.com/twitter/algebird/pull/555
+* Add `Ring[BigDecimal]`, modeled after `Ring[BigInt]`: https://github.com/twitter/algebird/pull/553
+* "Exponential Histogram" sliding window counter implementation added to `algebird-core` as `ExpHist`: https://github.com/twitter/algebird/pull/568
+* improve HLLSeries performance: https://github.com/twitter/algebird/pull/575
+* Add a microsite at <https://twitter.github.io/algebird> via the `sbt-microsites` plugin, along with docs for all typeclasses and data structures: https://github.com/twitter/algebird/pull/576
+* Adds lots of scalacheck `Arbitrary` and `Gen` instances to `algebird-test`, under `com.twitter.algebird.scalacheck.{ gen, arbitrary }`: https://github.com/twitter/algebird/pull/579
+* Add `Monoid[Max[Vector[T]]]`, `Monoid[Max[Stream[T]]]`: https://github.com/twitter/algebird/pull/579
+* Add `FirstAggregator` and `LastAggregator`, and docs and API / perf improvements for `First`, `Last`, `Min`, `Max`: https://github.com/twitter/algebird/pull/579
+* Add `LawsEquiv` versions of all laws: https://github.com/twitter/algebird/pull/584
+* Deprecates broken group/ring for `Future`/`Try`: https://github.com/twitter/algebird/pull/584
+* Add `metricsLaws[T]` to `BaseProperties` in `algebird-test`: https://github.com/twitter/algebird/pull/584
+* Modify generated `Tuple2Monoid`, etc to extend `TupleNSemigroup`, giving subclasses access to efficient `sumOption`: https://github.com/twitter/algebird/pull/585
+* optimize `Generated{Abstract,Product}Algebra.sumOption` with benchmarking https://github.com/twitter/algebird/pull/591
+* Add an efficient `sumOption`, `+`, `-`, methods and docs to `AveragedValue`: https://github.com/twitter/algebird/pull/589
+
+### Version 0.12.2 ###
+
+* optimize `CMS.create(Seq[K])`: https://github.com/twitter/algebird/pull/537
+* Update to sbt 0.13.11: https://github.com/twitter/algebird/pull/540
+* Add `Semigroup.maybePlus`: https://github.com/twitter/algebird/pull/544
+* Improve the build and test times and add Codecov.io: https://github.com/twitter/algebird/pull/541
+
+### Version 0.12.1 ###
+
+* Add `Identity` class and `Monad` instance: https://github.com/twitter/algebird/pull/511
+* Using `dropRight` instead of `tail` for shortening `BytesSpec` array: https://github.com/twitter/algebird/pull/510
+* Fix flaky `MinHasherSpec` test: https://github.com/twitter/algebird/pull/514
+* fix input type of `toRichTraversable`: https://github.com/twitter/algebird/pull/518
+* build in scala 2.11 by default: https://github.com/twitter/algebird/pull/520
+* make `SSOne`/`SSMany` constructors private and add apply method with count: https://github.com/twitter/algebird/pull/519
+* Fix `BytesSpec` to not reference head on an empty list https://github.com/twitter/algebird/pull/525
+* Add an `Aggregator.randomSample` aggregator: https://github.com/twitter/algebird/pull/529
+* Add `sortedTakeBy` and `sortedReverseTakeBy` to `Aggregator.scala`: https://github.com/twitter/algebird/pull/527
+* Add `Batched[A]` type for efficient lazy addition: https://github.com/twitter/algebird/pull/530
+* Add a default `k` value for `Aggregator.approximatePercentile`: https://github.com/twitter/algebird/pull/531
+
### Version 0.12.0 ###
* Implement an appendMonoid Aggregator factory which yields aggregators…: https://github.com/twitter/algebird/pull/501
View
@@ -15,5 +15,6 @@ Please see our [Project Governance](https://github.com/twitter/analytics-infra-g
| Piyush Narang | [@piyushnarang](https://github.com/piyushnarang) |
| Ruban Monu | [@rubanm](https://github.com/rubanm) |
| Sriram Krishnan | [@sriramkrishnan](https://github.com/sriramkrishnan) |
+| Sam Ritchie | [@sritchie](https://github.com/sritchie) |
-##Emeritus
+##Emeritus
View
@@ -1,15 +1,129 @@
-Recommendations and requirements for how to best contribute to Algebird.
+---
+layout: page
+title: "Contributing"
+section: "contributing"
+position: 5
+---
-We strive to obey these as best as possible. As always, thanks for contributing--we hope these guidelines make it easier and shed some light on our approach and processes.
+# Contributing to Algebird
-### Key branches
-- `master` is the latest, deployed version
-- `develop` is where development happens and all pull requests should be submitted
+This page lists recommendations and requirements for how to best contribute to Algebird. We strive to obey these as best as possible. As always, thanks for contributing--we hope these guidelines make it easier and shed some light on our approach and processes.
-### Pull requests
-- Submit pull requests against the `develop` branch
-- Try not to pollute your pull request with unintended changes--keep them simple and small
+## Key branches
-### License
-By contributing your code, you agree to license your contribution under the terms of the APLv2:
-https://github.com/twitter/algebird/blob/master/LICENSE
+- `master` is the latest, deployed version.
+- `develop` is where development happens and all pull requests should be submitted.
+
+## Pull requests
+
+Submit pull requests against the `develop` branch. Try not to pollute your pull request with unintended changes. Keep it simple and small.
+
+## Contributing Tests
+
+All tests go into the test directory of the `algebird-test` subproject. This is because Algebird publishes a module of helpful functions and Scalacheck laws that anyone can use to test the algebraic properties of their own data structures.
+
+We don't have strong conventions around our tests, but here are a few guidelines that will help both for contributing, and when trying to find tests for existing data structures.
+
+### Scalacheck Properties
+
+If you're adding [scalacheck](https://scalacheck.org/) properties, make a new class that extends `com.twitter.algebird.CheckProperties`. Here's an example of a new file of tests:
+
+```scala
+package com.twitter.algebird
+
+import org.scalacheck.Prop
+
+class MaxLaws extends CheckProperties {
+ property("test description") {
+ // Any instance of Prop will work.
+ Prop.forAll { x: Int => x + 0 == x }
+ }
+
+ // Prop instances defined elsewhere work too:
+ property("Max[Long] is a commutative monoid") {
+ BaseProperties.commutativeMonoidLaws[Max[Long]]
+ }
+}
+```
+
+### Scalatest
+
+We use [scalatest](http://www.scalatest.org/) for all of our other tests. [OperatorTest.scala](https://github.com/twitter/algebird/blob/1520068ae296d65ce3c4af7a0dc40137349f76f0/algebird-test/src/test/scala/com/twitter/algebird/OperatorTest.scala#L7) provides a nice example of this style of testing.
+
+### What need testing the most?
+
+The best way to figure out where we need tests is to look at our [Codecov coverage report](https://codecov.io/github/twitter/algebird). Codecov has an incredible [browser extension](http://docs.codecov.io/docs/browser-extension) that will embed coverage information right into the GitHub file browsing UI.
+
+Once you've got the extension installed, navigate to the [algebird-core index](https://github.com/twitter/algebird/tree/develop/algebird-core/src/main/scala/com/twitter/algebird) to see file-by-file coverage percentages. Inside each file, lines that aren't covered by tests will be highlighted red.
+
+## Contributing Documentation
+
+The documentation for Algebird's website is stored in the `docs/src/main/tut` directory of the [docs subproject](https://github.com/twitter/algebird/tree/develop/docs).
+
+Algebird's documentation is powered by [sbt-microsites](https://47deg.github.io/sbt-microsites/) and [tut](https://github.com/tpolecat/tut). `tut` compiles any code that appears in the documentation, ensuring that snippets and examples won't go out of date.
+
+We would love your help making our documentation better. If you see a page that's empty or needs work, please send us a pull request making it better. If you contribute a new data structure to Algebird, please add a corresponding documentation page. To do this, you'll need to:
+
+- Add a new Markdown file to `docs/src/main/tut/datatypes` with the following format:
+
+```markdown
+---
+layout: docs
+title: "<Your Page Title>"
+section: "data"
+source: "algebird-core/src/main/scala/com/twitter/algebird/<YourDataType>.scala"
+scaladoc: "#com.twitter.algebird.<YourDataType>"
+---
+
+# Your Data Type
+
+.....
+```
+
+- Make sure to add some code examples! Any code block of this form will get compiled using `tut`:
+
+
+ ```toot:book
+ <your code>
+ ```
+
+(Please replace `toot` with `tut`!) `tut` will evaluate your code as if you'd pasted it into a REPL and insert each line's results in the output. State persists across `tut` code blocks, so feel free to alternate code blocks with text discussion. See the [tut README](https://github.com/tpolecat/tut) for more information on the various options you can use to customize your code blocks.
+- Add your page to the appropriate section in [the menu](https://github.com/twitter/algebird/tree/develop/docs/src/main/resources/microsite/data/menu.yml)
+
+### Generating the Site
+
+run `sbt docs/makeMicrosite` to generate a local copy of the microsite.
+
+### Previewing the site
+
+1. Install jekyll locally, depending on your platform, you might do this with any of the following commands:
+
+```
+yum install jekyll
+apt-get install jekyll
+gem install jekyll
+```
+
+2. In a shell, navigate to the generated site directory in `docs/target/site`
+3. Start jekyll with `jekyll serve --incremental`
+4. Navigate to http://127.0.0.1:4000/algebird/ in your browser
+5. Make changes to your site, and run `sbt docs/makeMicrosite` to regenerate the site. The changes should be reflected as soon as `sbt docs/makeMicrosite` completes.
+
+## Post-release
+
+After the release occurs, you will need to update the documentation. Here is a list of the places that will definitely need to be updated:
+
+ * `README.md`: update version numbers
+ * `CHANGES.md`: summarize changes since last release
+
+(Other changes may be necessary, especially for large releases.)
+
+You can get a list of changes between release tags `v0.1.2` and `v0.2.0` via `git log v0.1.2..v0.2.0`. Scanning this list of commit messages is a good way to get a summary of what happened, although it does not account for conversations that occured on Github. (You can see the same view on the Github UI by navigating to <https://github.com/twitter/algebird/compare/v0.1.2...v0.2.0>.)
+
+Once the relevant documentation changes have been committed, new [release notes](https://github.com/twitter/algebird/releases) should be added. You can add a release by clicking the "Draft a new release" button on that page, or if the relevant release already exists, you can click "Edit release".
+
+The website should then be updated via `sbt docs/publishMicrosite`.
+
+## License
+
+By contributing your code, you agree to license your contribution under the terms of the [APLv2](LICENSE).
View
@@ -1,4 +1,2 @@
MurmurHash implementation provided by software developed by The Apache Software
-Foundation (http://www.apache.org/).
-
-
+Foundation (http://www.apache.org/).
Oops, something went wrong. Retry.

0 comments on commit a14f453

Please sign in to comment.