Skip to content

Commit 61b72ef

Browse files
committed
add table of contents / outline / draft
Update README.adoc Cleanup and re-org of setup dev environment page add doc building/configuring_git_workflow.adoc and associated images new image for PDE install tweaks to Rob's building/setup_development_environment.adoc update README to link to Rob's new building/setup_development_environment.adoc; also make sections hotlinkable add marketplace install images setup_development_environment.adoc moved into building/ folder move CONTRIBUTING.adoc into building/CONTRIBUTING.adoc move central and usage stuff into api folder Update configuring_git_workflow.adoc Add git user config and 'ch' alias move issues -> community fix links and case of titles to avoid the Wrath of Max (WoM) Conflicts: README.adoc Added hub reference to configuring dev-env Rewriting target platform for consumers, convert to adoc added title to tp-for-consumers tweak target_platforms_for_consumers.adoc for content, consistent spellings and layout clean up index for 'Setting up the target platform' section bold the left column and add valign/halign/frame/grid options Finishing git workflow Added testing local build file link to all docs in the building/ folder from the README.adoc; replace all .md files with .adoc; fix broken links/formatting fix a couple typos fix a couple typos Fix debug options example add section on keeping git repo clean / purging old topic branches Testing a build added an alias for cleanup remote Added foundation API page Reworking index to be more max-friendly Added content for exporting plugin from eclipse Added runtime workbench file, split up installing local build vs testing local build Added a link to max's updating version blog entry add page re: remote debugging; link to it from multiple places so Rob won't forget how to do it in future; new image w/ port 8000 update build options page to JBT 4.2/4.3; update build from eclipse page to JBT 4.2 add pages about Tycho and commandline building; add more commandline flags into building/build_options.adoc clean up FAQ; reorder README/TOC; add more links to building via commandline and in Eclipse; add note about deprecated -XX flags in JDK 8; add page explaining how to add test plugins/features and itest plugins/features add FAQ entry about libgtk missing .so (from Rob's recent debug session) fix typo and add section about how to mirror requirements w/ build.xml and jbosstools-requirements job Cleanup of nick's recent patches Adding a section on exposing and migrating API Moving source stuff to its own folder Tagging and Branching Adding a section for third party libs Changed a title to be more clear minor tweaks & add TODO markers add doc about code freeze process add doc about update sites, and move two docs in building/ to source/ add doc about ading features to JBT/JBDS, Central, EA, and Marketplace add release guide stub and remove TOC entry for 'documenting API' since that's just done in the source add new list_of_projects page (JBIDE-18846) merge @mickael_istria's commit from Feb 10 into the new target_platforms_for_consumers.adoc [695af23] implement Max's suggestions / review of jbosstools#42 merge in Rob's changes from f763e27 Small typo Remove deleted file
1 parent 695af23 commit 61b72ef

File tree

77 files changed

+2239
-511
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+2239
-511
lines changed

CONTRIBUTING.adoc

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,41 +10,41 @@ The layout of the current documentation is the following:
1010
- link:issues[] - how to use issue tracker, shared queries etc.
1111
- <your topic here> - if you feel an overall issue are missing, create a pull request (PR) and suggest one
1212
13-
To contribute content simply edit live on http://github.com[github] webui or clone the repository and submit a pull-request.
13+
To contribute content, you can clone the repository and submit a pull request, or, you can click on the "pencil" icon to make changes directly.
1414

1515
Content guidelines
1616
==================
1717

18-
* Content should be for how to develop and/or contribute to JBoss Tools
19-
* Should not contain user guides for plugins functionallity unless that guide is needed for debugging/tracing/exploring the plugin. User guides are in each plugin or at http://github.com/jbosstools/jbosstools-documentation
20-
* Use asciidoc (.adoc) wherever possible, see http://asciidoctor.org/docs/asciidoc-quick-reference[Asciidoc quick reference] since it is more portable and has better features than Markdown. MarkDown is also ok if must be.
21-
* If you got existing content you want to convert to asciidoc http://johnmacfarlane.net/pandoc/[Pandoc] works great for almost any reasonable format (especially with https://github.com/jgm/pandoc/pull/868[this patch] applied)
22-
* use lowercase with _'s for space in filenames. (i.e. `how_to_contribute.adoc` is Good, 'How-To-Contribute.adoc' or 'howtocontribute.adoc' is Bad)
18+
* Content should be for how to contribute to or develop JBoss Tools
19+
* Should not contain user guides for individual plugin functionallity unless that guide is likely to be used or extended by many other components. User guides for specific plugins should be placed in each plugin's documentation folder, or at http://github.com/jbosstools/jbosstools-documentation
20+
* Use asciidoc (.adoc). See http://asciidoctor.org/docs/asciidoc-quick-reference[Asciidoc quick reference] as a guide to get up to speed with the syntax.
21+
* If you have existing content that you want to convert to asciidoc, http://johnmacfarlane.net/pandoc/[Pandoc] works great for almost any reasonable format (especially with https://github.com/jgm/pandoc/pull/868[this patch] applied)
22+
* use lowercase filenames with underscores in place of a space character. (i.e. `how_to_contribute.adoc` is good, `How-To-Contribute.adoc` or `howtocontribute.adoc` is bad)
2323
2424
GitHub Web vs local/git
2525
=======================
2626

27-
There are two recommended ways to contribute to the documentation:
27+
There are two recommended ways to contribute to this documentation:
2828

2929
- using the github web ui
3030
- offline local editing by cloning the repository.
3131
32-
You can do almost everything in both places, the main limitations of github web ui is that they currently do not support upload of images.
33-
The table below outlines the various options/workflows:
32+
Almost all features are available in both locations. The main limitation of github's Web UI is that they currently do not support upload of images.
33+
The table below outlines several workflows:
3434

3535
[options="header"]
3636
|=========================
3737
| *Task* | local/offline | github.com/online
3838
| *Create text file* | git add + commit + push | Click the '+' icon, name the file and submit
3939
| *Add image/binary* | git add + commit + push | N/A
40-
| *Edit content* | git commit + push | Click the 'Edit' button, edit and submit
41-
| *Delete content* | git rm + commit + push | Use the new 'Delete' button on the file. http://prose.io/ is an alternative UI that also allows deletes
40+
| *Edit content* | git commit + push | Click the 'Edit' button (appears as a pencil), edit the content, and submit
41+
| *Delete content* | git rm + commit + push | Click the 'Delete' button on the file (appears as a garbage can). http://prose.io/ is an alternative UI that also allows deletes
4242
| *Notifications* | N/A | click 'Watch' repository and you can control the amount of notifications you get
4343
| *Comments* | N/A | use the github issue tracker to ask for clarifications or simply submit suggestions as a pull-request
4444
|=========================
4545

46-
Note: *Everyone* can contribute to the documentation, JBoss Tools committers all have push access and any non-committers can
47-
edit and they will be turned into pull-requests which a committer can then apply. Even if the edits are not applied directly
48-
your edits are visible in your fork.
46+
Note: *Everyone* can contribute to the documentation, JBoss Tools committers all have push access to this repository. Any non-committers can
47+
make edits, which will become pull-requests that any committer can then apply. Even if the edits are not applied directly,
48+
your edits will be visible in your fork.
4949

5050

README.adoc

Lines changed: 58 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,66 @@
1-
== JBoss Tools Developer Documentation
1+
= JBoss Tools Developer Documentation
22

33
This repository contains documentation for building and developing JBoss Tools.
44

55
It is meant to replace the articles related to development at jboss.org wiki found at https://community.jboss.org/wiki/JBossTools
66

77
See link:CONTRIBUTING.adoc[Contributing] for how to write/add to these docs.
88

9-
In general it is to be a wiki all developers can push docs to, external contributors can do pull-requests or report issues
10-
to get things clarified/documented better.
9+
This repo should be considered a wiki, into which all developers can push docs. External contributors can do pull requests or report issues to improve the quality, clarity, and breadth of this documentation.
10+
11+
== Table of Contents
12+
* Getting Started
13+
** link:building/setup_development_environment.adoc[Setting up the eclipse development environment].
14+
** link:building/configuring_git_workflow.adoc[Configuring your git workflow].
15+
** link:building/target_platforms/target_platforms_for_consumers.adoc[Using target platforms in eclipse]
16+
* Target Platforms
17+
** link:building/target_platforms/target_platforms_for_consumers.adoc[Using target platforms in eclipse]
18+
** link:building/target_platforms/target_platforms_updates.adoc[Target platform update process]
19+
** link:building/target_platforms/target_platforms_releases.adoc[Target platform release process]
20+
** link:building/target_platforms/target_platforms_updates.adoc[Requesting Target Platform Updates]
21+
* Building a project (also called module or component)
22+
** link:building/how_to_build_jbosstools_faq.adoc[JBoss Tools Build FAQ]
23+
** link:building/build_from_commandline.adoc[Building from the command line]
24+
*** link:building/build_options.adoc[Build options & flags]
25+
** link:building/build_from_eclipse.adoc[Building with Eclipse (using m2e)]
26+
** link:source/build_source_bundles_features_and_src_zips.adoc[How to build source bundles, features, and source zips]
27+
** link:building/export_plugin_from_eclipse.adoc[Exporting plugins from eclipse]
28+
** link:building/tycho.adoc[All about Tycho]
29+
*** link:building/how_to_test_tycho.adoc[How to test new versions of Tycho]
30+
* Testing & Debugging
31+
** link:debugging/runtime_workbench.adoc[Debugging via Runtime Workbench]
32+
** link:debugging/install_a_local_build.adoc[Installing a local build]
33+
** link:debugging/how_to_test_a_build.adoc[Testing an installed build]
34+
** link:debugging/remote_debugging.adoc#Using-the-Eclipse-debugger[Debugging Surefire Tests w/ Eclipse Remote Debugger]
35+
* Source and Project Management
36+
** link:source/new_project_process.adoc[Adding a new module / repository to JBoss Tools or JBDS]
37+
** link:source/how_to_add_a_plugin_or_feature_to_an_existing_project.adoc[Adding a new plugin or feature to an existing JBoss Tools 4.x module]
38+
** link:source/how_to_add_a_test_plugin_or_feature.adoc[Adding a new unit or integration test and test feature]
39+
** link:building/target_platforms/target_platforms_updates.adoc[Requesting Target Platform Updates]
40+
** link:source/how_to_add_an_update_site.adoc[Adding an update site] or link:source/build_update_sites_using_associate_sites.adoc[associate site]
41+
** link:source/publishing_features_downstream.adoc[Publishing features to JBoss Tools, Red Hat JBoss Developer Studio, JBoss Central, Early Access, and Eclipse Marketplace]
42+
** link:source/third_party.adoc[Bundling Third Party Library Dependencies]
43+
** link:source/versioning.adoc[Versioning rules]
44+
** link:https://developer.jboss.org/en/tools/blog/2011/09/17/coping-with-versions-in-large-multi-module-osgi-projects[Updating Versions for Components]
45+
* Process and Protocol
46+
** link:community/how_to_use_jira.adoc[How to use JIRA]
47+
** link:community/code_freezes.adoc[Code freezes]
48+
** link:community/release_guidelines.adoc[Release guidelines]
49+
** link:source/tagging_branching.adoc[Tagging & branching]
50+
* API
51+
** link:api/exposing_api.adoc[Exposing And Migrating API]
52+
** Common APIs You May Need
53+
*** link:api/foundation/foundation_api.adoc[Foundation - Base Classes for Every Plugin]
54+
*** link:api/usage/usage_api.adoc[Usage tracking]
55+
*** link:api/central/how-to-add-proxy-wizards.adoc[Proxy Wizards]
56+
* link:community/README.adoc[Community contribution and involvement]
57+
58+
=== Other documents
59+
60+
Many of these docs are old and need to be updated, or to be moved to better categories.
61+
62+
* link:building/build_documentation.adoc[How to build JBoss Tools 4.x documentation]
63+
* link:building/build_job_cascade_and_where_to_find_build_results.adoc[Build cascade & results]
64+
* link:building/how_to_build_jbosstools_4.adoc[How to build JBoss Tools 4.0]
65+
1166

api/exposing_api.adoc

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
= Exposing API
2+
3+
When designing a new plugin, it is very important to decide what code will be exposed for other clients to call, and what code will remain internal. If you do not do this properly when first designing your plugin, it is very likely that clients will make use of this code, and you will be forced to support it.
4+
5+
== Package Names
6+
7+
All packages that are meant to hold internal code should have a segment in the package name that reads `internal`. All packages that lack this segment are assumed to be public, and open for anyone to make use of.
8+
9+
== Exposing your API packages
10+
11+
In the `Runtime` tab of your `plugin.xml` editor in Eclipse, you can choose which packages to export. You should export only those packages which you intend others to use. Typically, you would export all packages that do not have .internal in the package name. You may find reason not to expose other packages, as well, but you should consider if perhaps those packages should have `internal` added to them.
12+
13+
== But my test cases need the internal code!
14+
15+
The `Runtime` tab of the `plugin.xml` editor actually persists its changes in the `Manifest.mf` file. When looking at this file, you may see the following:
16+
17+
```
18+
Export-Package: org.jboss.ide.eclipse.archives.core,
19+
org.jboss.ide.eclipse.archives.core.model.internal,
20+
org.jboss.ide.eclipse.archives.core.model.internal.xb,
21+
```
22+
23+
To expose a package to only your test plugins, you can change this as follows:
24+
```
25+
Export-Package: org.jboss.ide.eclipse.archives.core,
26+
org.jboss.ide.eclipse.archives.core.model.internal;x-friends:="org.jboss.ide.eclipse.archives.test",
27+
org.jboss.ide.eclipse.archives.core.model.internal.xb;x-friends:="org.jboss.ide.eclipse.archives.test",
28+
```
29+
30+
This will limit which downstream consumers have access to the classes and may make use of them.
31+
32+
== I accidentally made a package public and others are using it!
33+
34+
In this case, you have a few tasks that need to be done. You are required to maintain the code as API for at least one major release, but you will want to discourage new consumers from using the package. You should mark the package as internal in the following way:
35+
36+
```
37+
Export-Package: org.jboss.ide.eclipse.archives.core,
38+
org.jboss.ide.eclipse.archives.core.asf,
39+
org.jboss.ide.eclipse.archives.core.model.oopsprivate;x-internal:=true,
40+
```
41+
42+
This will discourage new consumers from using this package, but will not prevent it.
43+
44+
At this point, you will need to discover any and all consumers who are using this package, and provide them suitable API replacement in packages that are to be exposed for consumption.
45+
46+
After waiting for a full major release, you may be able to migrate the `oopsprivate` package into an internal one, after fully announcing your intentions to mailto:[email protected][[email protected]] and ensuring that there are no consumers who indicate an issue with the change.
47+
48+
49+
= Evolving APIs
50+
51+
Changing API is always something that should be done very carefully. Changes generally must be source-compatible AND binary compatible. Changing method signatures, class heirarchy, visibility of fields, all have the potential to break binary compatibility.
52+
53+
For more information on this topic, please consult Eclipse's guide link:https://wiki.eclipse.org/Evolving_Java-based_APIs_2[Evolving Java-based APIs] for a comprehensive list of compatibility for various changes.

0 commit comments

Comments
 (0)