Join us for this interactive event and get your hands dirty with some WildFly 9 hacking!
Our host Kabir Khan will explain how you can contribute to the WildFly project at many different levels, from properly reporting bugs in the forums and issue tracker, to actually being able to submit a pull request.
During this interactive event you will have a chance to play with WildFly 9 and try some of the following:
• Find a JIRA you want to work on.
• See how to check-out the code and setup your IDE.
• Build WildFly
• Code walkthrough - code organisation, jboss-modules etc.
• Debug something from a stack trace in a JIRA issue to nail down the problem.
• Try the testsuite
• And more!
1. Hacking on WildFly 9
Kabir Khan, Principal Software Engineer, Red Hat
kabir.khan@jboss.com
Darran Lofthouse, Principal Software Engineer, Red Hat
darran.lofthouse@jboss.com
2. Agenda
• Getting set up
• Open source community
• Fix a bug
• Useful Maven tricks
4. GitHub
• Log in to www.github.com
• Set up local git + SSH as described in
• https://help.github.com/articles/set-up-git
• https://help.github.com/articles/generating-ssh-keys
• The ‘bible’ of git, ‘Pro Git’: http://git-scm.com/book/en/v2
• Wildfly
• Core https://github.com/wildfly/wildfly-core
• EE/Clustering/console etc. https://github.com/wildfly/wildfly
• Fork into your repository
• Clone your fork!
• $git clone git@github.com:londonjbug/wildfly.git
5. Build
• Pre-requisites:
• JDK 7
• Maven 3.2.3+
• export $MAVEN_OPTS=-Xmx768m
• Set up ~/.m2/settings.xml to include jboss-public-repository-group from
https://developer.jboss.org/wiki/MavenSettingsExample-Users
• Do the build
• Wait!
$cd checkout/folder/wildfly-core
$mvn install
8. What is an Open Source Community?
• 99.9%(*) of people NOT involved in open source say:
• Developers!
* Totally made up statistic!
9. Open Source Community
• Helping each other
• Early testing of features
• Bug reporting
• Feature requests
• Documentation
• Code contributions
• www.jboss.org entry point
• www.wildfly.org
10. Forums
• If you have a problem ask!
• Include necessary information
• Don’t post same question multiple times!
• Search first
• People tend to be helpful
• Others might have had the same problem
• Very important way for us to find out about bugs
• Rapid feedback of user testing
• A lot of contributors, low barrier to entry
• Normally first way people get involved
11. Jira
• Our issue tracker
• Forum posts with new bugs -> Jira issue
• Not a replacement for forums!
• If in doubt, start in the forums
• Medium volume of contributors
• https://issues.jboss.org/browse/WFLY
• https://issues.jboss.org/browse/WFCORE
13. Code contributions
• Find a Jira issue you would like to work on
• Or create one!
• Get in touch with the team
• Mailing list
• IRC #wildfly-dev on freenode
• We’ll demo the process
• Less contributors, “hardest”
• But often not as hard as you might think!
14. jboss.org + wildfly.org
• Your entry points
• jboss.org - all JBoss projects
• Account used for Jira/Forums etc.
• wildfly.org - more relevant for WildFly
• Downloads
• Get Help -> Forum, Wiki, IRC
• Documentation - hint, hint, you can edit ;-)
• Join Us
• development mailing list
• http://jira.jboss.org/browse/WFLY
• https://community.jboss.org/wiki/HackingOnWildFly
16. Useful maven tricks
• A full rebuild takes a long time
• Want to avoid that for the code-test-code cycle
• Only build a set of modules
• mvn clean install -pl controller/,build
• Only build a set of modules and their deps
• mvn clean install -pl controller,build -am
• Restart the build from a location
• mvn clean install -rf controller
• Can combine
• mvn clean install -pl testsuite/integration/smoke -am -
rf jmx/
build
assembles
server
17. • By default we run
• unit test for each module
• the ‘smoke’ tests
• To build without running tests do
• mvn clean install -DskipTests
• We don’t just have ‘smoke’ tests!
• mvn clean install -DallTests
• Most tests are in testsuite/integration/basic
• Good command to run before submitting PR:
• mvn clean install -DallTests -pl
testsuite/integration/basic -am
Useful testsuite tricks
19. Commands/useful stuff
• build/ - assembles WF
• build/target/wildfly-xxx-SNAPSHOT/ - the built WF instance
• bin/ - the startup scripts
• standalone.sh - start a standalone instance
• standalone.conf - enable debug
• domain.sh - start up a domain (more advanced…)
• standalone/configuration/standalone.xml - the config of
a standalone instance
• domain/configuration/domain.xml and host.xml - the
config of a domain and its hosts
• https://docs.jboss.org/author/display/WFLY8/Getting+Started+Guide
20. Wrap-up
• Git clone
• Build & import into IDE
• Found + fixed bug in Jira
• Opened PR
• Community is more than just code!