sounds *very* promising
On Fri, Nov 15, 2013 at 11:56 AM, Matthew Dempsky <[email protected]>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 [email protected]. > 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 [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
