sounds *very* promising
On Fri, Nov 15, 2013 at 11:56 AM, Matthew Dempsky <mdemp...@google.com>wrote: > Last night I wrote a quick one-off javac-based tool to parse and analyze > all of GWT's source code, and to extract out inter-file dependencies (e.g., > dev/core/src/com/google/gwt/dev/GWTShell.java depends on > dev/core/src/com/google/gwt/dev/cfg/ModuleDef.java). I then ran a > strongly-connected components analysis on the resulting graph to form a DAG. > > My expectation was our interdependencies would be hairy and cyclic enough > that the DAG would probably already be pretty constrained. But it turns > out that our 6022 source files form 5206 SCCs. If I first collapse all > source files into a single vertex, then our 502 packages still form 394 > SCCs. Ignoring test sources, I still get 246 packages grouped into 138 > SCCs. > > I think that's still too many to be immediately useful, so probably my > next step is to write a tool to let me interactively find components that > share a lot of incoming and outgoing edges and merge them together. > > If anyone has suggestions on additional criteria I can easily take into > account, I'm interested. (E.g., I know I should probably take into account > super source and/or gwt.xml files, but javac doesn't know about those, so I > just skipped them for now for simplicity. ;)) > > > Also, as something maybe interesting, here's a map from our third party > libraries to source directories where we use them. (For simplicity, I'm > running this against the copy of GWT we're using within Google; e.g., we > haven't merged the HtmlUnit/Jetty/JSON changes yet. Oh, and this skips > JUnit and Selenium for no particular reason, but JUnit uses are pretty > obvious and Selenium is only used by RunStyleSelenium.) > > lib/apache/ant-1.6.5.jar: > dev/core/src/com/google/gwt/dev/resource/impl > dev/core/src/com/google/gwt/dev/shell/jetty > dev/core/test/com/google/gwt/dev/resource/impl > > lib/apache/commons/commons-collections-3.2.1.jar: > dev/core/test/org/apache/commons/collections/iterators > dev/core/test/org/apache/commons/collections/map > user/test/com/google/gwt/i18n > user/test/org/apache/commons/collections > > lib/apache/tapestry-util-text-4.0.2.jar: > user/src/com/google/gwt/i18n/rebind > > lib/cldr/21/icu4j.jar: > user/src/com/google/gwt/i18n/rebind > > lib/easymock/easymock-3.0.jar: > user/test/com/google/gwt/resources/rg > user/test/com/google/gwt/uibinder/rebind > > lib/eclipse/jdtCompilerAdapter-3.8.3.v20130121-145325.jar: > dev/core/src/com/google/gwt/dev/shell/jetty > > lib/eclipse/org.eclipse.jdt.core_3.8.3.v20130121-145325.jar: > dev/core/src/com/google/gwt/dev/javac > dev/core/src/com/google/gwt/dev/jdt > dev/core/src/com/google/gwt/dev/jjs/ast > dev/core/src/com/google/gwt/dev/jjs/impl > dev/core/test/com/google/gwt/dev/javac > > lib/guava/guava-15.0/guava-15.0-rebased.jar: > dev/codeserver/java/com/google/gwt/dev/codeserver > dev/core/src/com/google/gwt/core/ext > dev/core/src/com/google/gwt/core/ext/linker/impl > dev/core/src/com/google/gwt/core/linker > dev/core/src/com/google/gwt/dev > dev/core/src/com/google/gwt/dev/cfg > dev/core/src/com/google/gwt/dev/javac > dev/core/src/com/google/gwt/dev/javac/asm > dev/core/src/com/google/gwt/dev/javac/typemodel > dev/core/src/com/google/gwt/dev/jjs > dev/core/src/com/google/gwt/dev/jjs/ast > dev/core/src/com/google/gwt/dev/jjs/ast/js > dev/core/src/com/google/gwt/dev/jjs/impl > dev/core/src/com/google/gwt/dev/jjs/impl/codesplitter > dev/core/src/com/google/gwt/dev/jjs/impl/gflow > dev/core/src/com/google/gwt/dev/jjs/impl/gflow/cfg > dev/core/src/com/google/gwt/dev/jjs/impl/gflow/constants > dev/core/src/com/google/gwt/dev/jjs/impl/gflow/copy > dev/core/src/com/google/gwt/dev/jjs/impl/gflow/liveness > dev/core/src/com/google/gwt/dev/jjs/impl/gflow/unreachable > dev/core/src/com/google/gwt/dev/js > dev/core/src/com/google/gwt/dev/js/ast > dev/core/src/com/google/gwt/dev/resource/impl > dev/core/src/com/google/gwt/dev/shell > dev/core/src/com/google/gwt/dev/util > dev/core/src/com/google/gwt/dev/util/arg > dev/core/src/com/google/gwt/soyc > dev/core/test/com/google/gwt/core/ext/linker/impl > dev/core/test/com/google/gwt/dev/cfg > dev/core/test/com/google/gwt/dev/javac > dev/core/test/com/google/gwt/dev/jjs/impl > dev/core/test/com/google/gwt/dev/jjs/impl/codesplitter > dev/core/test/com/google/gwt/dev/jjs/impl/gflow > dev/core/test/com/google/gwt/dev/jjs/impl/gflow/cfg > dev/core/test/com/google/gwt/dev/js > user/src/com/google/gwt/editor/rebind > user/src/com/google/gwt/i18n/rebind > user/src/com/google/gwt/junit > user/src/com/google/gwt/resources/rg > user/src/com/google/gwt/safecss/shared > user/src/com/google/gwt/safehtml/rebind > user/src/com/google/gwt/safehtml/shared > user/src/com/google/gwt/uibinder/rebind > user/src/com/google/gwt/useragent/rebind > user/src/com/google/gwt/user/rebind > user/src/com/google/gwt/user/rebind/rpc > user/src/com/google/gwt/user/rebind/ui > user/src/com/google/gwt/validation/rebind > user/test/com/google/gwt/validation/rebind > user/test/org/hibernate/jsr303/tck/util > > lib/hibernate/validator/hibernate-validator-4.1.0.Final.jar: > user/src/com/google/gwt/validation/rebind > user/src/org/hibernate/validator/engine > > lib/hibernate/validator/tck/jsr303-tck-1.0.3.GA.jar: > user/test/org/hibernate/jsr303/tck/tests/bootstrap > user/test/org/hibernate/jsr303/tck/tests/bootstrap/customprovider > user/test/org/hibernate/jsr303/tck/tests/constraints/application > user/test/org/hibernate/jsr303/tck/tests/constraints/builtinconstraints > > user/test/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition > > user/test/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/nestedconstraintcomposition > user/test/org/hibernate/jsr303/tck/tests/constraints/constraintdefinition > user/test/org/hibernate/jsr303/tck/tests/constraints/customconstraint > user/test/org/hibernate/jsr303/tck/tests/constraints/groups > user/test/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequence > > user/test/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequenceisolation > user/test/org/hibernate/jsr303/tck/tests/constraints/groups/inheritance > user/test/org/hibernate/jsr303/tck/tests/constraints/inheritance > > user/test/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions > user/test/org/hibernate/jsr303/tck/tests/constraints/validatorresolution > user/test/org/hibernate/jsr303/tck/tests/messageinterpolation > user/test/org/hibernate/jsr303/tck/tests/metadata > user/test/org/hibernate/jsr303/tck/tests/traversableresolver > user/test/org/hibernate/jsr303/tck/tests/validation > user/test/org/hibernate/jsr303/tck/tests/validation/graphnavigation > user/test/org/hibernate/jsr303/tck/tests/validation/validatorcontext > user/test/org/hibernate/jsr303/tck/tests/validatorfactory > user/test/org/hibernate/jsr303/tck/tests/xmlconfiguration > > user/test/org/hibernate/jsr303/tck/tests/xmlconfiguration/constraintdeclaration > > user/test/org/hibernate/jsr303/tck/tests/xmlconfiguration/constraintdeclaration/clazzlevel > > user/test/org/hibernate/jsr303/tck/tests/xmlconfiguration/constraintdeclaration/fieldlevel > > user/test/org/hibernate/jsr303/tck/tests/xmlconfiguration/constraintdeclaration/propertylevel > > user/test/org/hibernate/jsr303/tck/tests/xmlconfiguration/constraintdefinition > > lib/htmlunit/htmlunit-2.9/htmlunit-2.9.jar: > dev/core/src/com/google/gwt/dev/shell > dev/core/test/com/google/gwt/core/ext/linker/impl > user/src/com/google/gwt/junit > > lib/htmlunit/htmlunit-2.9/htmlunit-core-js-2.9.jar: > dev/core/src/com/google/gwt/dev/shell > user/src/com/google/gwt/junit > > lib/javax/validation/validation-api-1.0.0.GA.jar: > user/src/com/google/gwt/editor/client > user/src/com/google/gwt/editor/client/impl > user/src/com/google/gwt/editor/client/testing > user/src/com/google/gwt/validation/client > user/src/com/google/gwt/validation/client/constraints > user/src/com/google/gwt/validation/client/impl > user/src/com/google/gwt/validation/client/impl/metadata > user/src/com/google/gwt/validation/client/spi > user/src/com/google/gwt/validation/rebind > user/src/com/google/web/bindery/requestfactory/gwt/client/testing > user/src/com/google/web/bindery/requestfactory/server > user/src/com/google/web/bindery/requestfactory/shared > user/src/com/google/web/bindery/requestfactory/shared/impl > user/src/javax/validation > user/src/org/hibernate/validator/engine > user/test/com/google/gwt/editor/client > user/test/com/google/gwt/editor/rebind/model > user/test/com/google/gwt/validation/client > user/test/com/google/gwt/validation/client/constraints > user/test/com/google/gwt/validation/client/impl > user/test/com/google/gwt/validation/client/impl/metadata > user/test/com/google/gwt/validation/example/client > user/test/com/google/gwt/validation/rebind > user/test/com/google/gwt/validation/testing/constraints > user/test/com/google/web/bindery/requestfactory/gwt/client > user/test/com/google/web/bindery/requestfactory/gwt/client/ui > user/test/com/google/web/bindery/requestfactory/server > user/test/com/google/web/bindery/requestfactory/shared > user/test/org/hibernate/jsr303/tck/tests/bootstrap > user/test/org/hibernate/jsr303/tck/tests/bootstrap/customprovider > user/test/org/hibernate/jsr303/tck/tests/constraints/application > user/test/org/hibernate/jsr303/tck/tests/constraints/builtinconstraints > > user/test/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition > > user/test/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/nestedconstraintcomposition > user/test/org/hibernate/jsr303/tck/tests/constraints/constraintdefinition > user/test/org/hibernate/jsr303/tck/tests/constraints/customconstraint > user/test/org/hibernate/jsr303/tck/tests/constraints/groups > user/test/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequence > > user/test/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequenceisolation > user/test/org/hibernate/jsr303/tck/tests/constraints/groups/inheritance > user/test/org/hibernate/jsr303/tck/tests/constraints/inheritance > > user/test/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions > user/test/org/hibernate/jsr303/tck/tests/constraints/validatorresolution > user/test/org/hibernate/jsr303/tck/tests/messageinterpolation > user/test/org/hibernate/jsr303/tck/tests/metadata > user/test/org/hibernate/jsr303/tck/tests/traversableresolver > user/test/org/hibernate/jsr303/tck/tests/validation > user/test/org/hibernate/jsr303/tck/tests/validation/graphnavigation > user/test/org/hibernate/jsr303/tck/tests/validation/validatorcontext > user/test/org/hibernate/jsr303/tck/tests/validatorfactory > user/test/org/hibernate/jsr303/tck/tests/xmlconfiguration > > user/test/org/hibernate/jsr303/tck/tests/xmlconfiguration/constraintdeclaration > user/test/org/hibernate/jsr303/tck/util > > lib/jetty/jetty-6.1.11.jar: > dev/codeserver/java/com/google/gwt/dev/codeserver > dev/core/src/com/google/gwt/dev/shell/jetty > user/src/com/google/gwt/junit > user/test/com/google/web/bindery/requestfactory/server > > lib/jscomp/20131014/compiler-rebased.jar: > dev/core/src/com/google/gwt/dev/js > > lib/jscomp/20131014/sourcemap-rebased.jar: > dev/codeserver/java/com/google/gwt/dev/codeserver > dev/core/src/com/google/gwt/core/ext/soyc > dev/core/src/com/google/gwt/core/linker > user/src/com/google/gwt/core/server > user/src/com/google/gwt/user/tools > > lib/jsr305/jsr305.jar: > user/test/com/google/gwt/core/client/testing > user/test/com/google/gwt/dev/jjs/test/unusedimports > user/test/com/google/gwt/dev/jjs/test/usedimports > > lib/protobuf/protobuf-2.5.0/protobuf-java-rebased-2.5.0.jar: > dev/core/src/com/google/gwt/dev/shell/remoteui > dev/core/test/com/google/gwt/dev/shell/remoteui > > > lib/streamhtmlparser/streamhtmlparser-jsilver-r10/streamhtmlparser-jsilver-r10-1.5-rebased.jar: > user/src/com/google/gwt/safehtml/rebind > user/src/com/google/gwt/safehtml/shared > > lib/tomcat/servlet-api-2.5.jar: > dev/codeserver/java/com/google/gwt/dev/codeserver > dev/core/src/com/google/gwt/dev/shell > dev/core/src/com/google/gwt/dev/shell/log > user/src/com/google/gwt/core/server > user/src/com/google/gwt/junit/server > user/src/com/google/gwt/rpc/server > user/src/com/google/gwt/user/server > user/src/com/google/gwt/user/server/rpc > user/src/com/google/web/bindery/requestfactory/server > user/test/com/google/gwt/core/server > user/test/com/google/gwt/http/server > user/test/com/google/gwt/jsonp/server > user/test/com/google/gwt/module/server > user/test/com/google/gwt/user/server > user/test/com/google/gwt/user/server/rpc > user/test/com/google/gwt/user/server/runasync > user/test/com/google/gwt/user/server/ui > user/test/com/google/web/bindery/requestfactory/server > > lib/w3c/flute/flute-1.3-gg2.jar: > user/src/com/google/gwt/resources/css > > lib/w3c/sac/sac-1.3.jar: > user/src/com/google/gwt/junit > user/src/com/google/gwt/resources/css > > -- > http://groups.google.com/group/Google-Web-Toolkit-Contributors > --- > You received this message because you are subscribed to the Google Groups > "GWT Contributors" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.