What I have understood from reading this document and taking a look at the Eclipse source code is that Eclipse APIs are stored in packages that do not contain the segment "internal" and non-APIs are kept in packages having the segment internal. Please correct me if am wrong.
where Scott writes that "The org.eclipse.equinox.concurrent.future API is currently marked as 'internal' because since it's original contribution has been considered in the 'provisional' state. I would like to request the graduation of this API."
When I checked in Eclipse 3.6 source code, I didn't find this package marked with the segment "internal".
The x-internal directive can be used in an Export-Package header in MANIFEST.MF to specify whether the package is an internal package. I guess "x-internal=true" was used here to mark the org.eclipse.equinox.concurrent.future package as hidden from all bundles (internal).