@@ -7,16 +7,13 @@ We'd love to get patches from you!
7
7
We are not currently publishing snapshots for Finagle's dependencies, which
8
8
means that it may be necessary to publish the ` develop ` branches of these
9
9
libraries locally in order to work on Finagle's ` develop ` branch. To do so
10
- you can run ` ./bin/travisci ` script and pass it an optional
11
- ` TRAVIS_SCALA_VERSION ` environment variable. For example, the following command
12
- locally publishes all the Finagle dependencies built for Scala 2.11.7.
10
+ you can use our build tool, [ dodo] ( https://github.com/twitter/dodo ) .
13
11
14
- ```
15
- TRAVIS_SCALA_VERSION=2.11.7 ./ bin/travisci
12
+ ``` bash
13
+ curl -s https://raw.githubusercontent.com/twitter/dodo/develop/ bin/build | bash -s -- --no-test finagle
16
14
```
17
15
18
- We are planning to begin publishing snapshots soon, which will make these steps
19
- unnecessary. If you have any questions or run into any problems, please create
16
+ If you have any questions or run into any problems, please create
20
17
an issue here, tweet at us at [ @finagle ] ( https://twitter.com/finagle ) , or email
21
18
the Finaglers mailing list.
22
19
@@ -57,6 +54,31 @@ Travis CI more useful for development, but for now you don't need to worry if
57
54
it's failing (assuming that you are able to build and test your changes
58
55
locally).
59
56
57
+ ## Compatibility
58
+
59
+ We try to keep public APIs stable for the obvious reasons. Often,
60
+ compatibility can be kept by adding a forwarding method. Note that we
61
+ avoid adding default arguments because this is not a compatible change
62
+ for our Java users. However, when the benefits outweigh the costs, we
63
+ are willing to break APIs. The break should be noted in the Breaking
64
+ API Changes section of the [ changelog] ( CHANGES ) . Note that changes to
65
+ non-public APIs will not be called out in the [ changelog] ( CHANGES ) .
66
+
67
+ ## Java
68
+
69
+ While the project is written in Scala, its public APIs should be usable from
70
+ Java. This occasionally works out naturally from the Scala interop, but more
71
+ often than not, if care is not taken Java users will have rough corners
72
+ (e.g. ` SomeCompanion$.MODULE$.someMethod() ` or a symbolic operator).
73
+ We take a variety of approaches to minimize this.
74
+
75
+ 1 . Add a "compilation" unit test, written in Java, that verifies the APIs are
76
+ usable from Java.
77
+ 2 . If there is anything gnarly, we add Java adapters either by adding
78
+ a non-symbolic method name or by adding a class that does forwarding.
79
+ 3 . Prefer ` abstract ` classes over ` traits ` as they are easier for Java
80
+ developers to extend.
81
+
60
82
## Style
61
83
62
84
We generally follow [ Effective Scala] [ es ] and the [ Scala Style Guide] [ ssg ] . When
@@ -166,8 +188,8 @@ simplest solution is to create a symbolic link to `sphinx-build2` named
166
188
` sphinx-build ` somewhere on your path.
167
189
168
190
Please note that any additions or changes to the API must be thoroughly
169
- described in [ ScalaDoc ] [ 8 ] comments. We will also happily consider pull
170
- requests that improve the existing ScalaDocs !
191
+ described in [ Scaladoc ] [ 8 ] comments. We will also happily consider pull
192
+ requests that improve the existing Scaladocs !
171
193
172
194
[ 0 ] : https://github.com/twitter/finagle/pull/267
173
195
[ 1 ] : https://github.com/twitter/finagle/issues?direction=desc&labels=Starter&sort=created&state=open
0 commit comments