SIGAda’s Approach to SIGAda’s Approach to the Management of the Management of Ada Bindings to Ada Bindings to Application Program Application Program Interfaces (APIs) Interfaces (APIs) Clyde Roby, SIGAda Clyde Roby, SIGAda Updated After Presentations to Updated After Presentations to SIGAda2002 Workshop (11 December SIGAda2002 Workshop (11 December 2002), 2002), ISO/WG9 Meeting (13 December 2002), ISO/WG9 Meeting (13 December 2002), and and DC SIGAda Meeting (9 January 2003) DC SIGAda Meeting (9 January 2003)
31
Embed
SIGAda’s Approach to the Management of Ada Bindings to Application Program Interfaces (APIs) Clyde Roby, SIGAda Updated After Presentations to SIGAda2002.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
SIGAda’s Approach to SIGAda’s Approach to the Management of Ada the Management of Ada Bindings to Application Bindings to Application
Program Interfaces Program Interfaces (APIs)(APIs)Clyde Roby, SIGAdaClyde Roby, SIGAda
Updated After Presentations toUpdated After Presentations toSIGAda2002 Workshop (11 December SIGAda2002 Workshop (11 December
2002),2002),ISO/WG9 Meeting (13 December 2002), ISO/WG9 Meeting (13 December 2002),
andandDC SIGAda Meeting (9 January 2003)DC SIGAda Meeting (9 January 2003)
Approach for Registered Public APIsApproach for Registered Public APIsResponsibilitiesResponsibilitiesCharter, Membership, …Charter, Membership, …FutureFuture
PurposePurpose
To provide a mechanism for the To provide a mechanism for the management of Ada Bindings to management of Ada Bindings to Application Program Interfaces (ABAPIs) Application Program Interfaces (ABAPIs) for the Ada programming languagefor the Ada programming languageStandardized ABAPIsStandardized ABAPIsRegistered ABAPIs – focus of our discussion Registered ABAPIs – focus of our discussion
and new SIGAda Working Group (APIWG)and new SIGAda Working Group (APIWG)Unregistered ABAPIsUnregistered ABAPIs
BackgroundBackground
Most Ada bindings to APIs are unmanagedMost Ada bindings to APIs are unmanaged Most Ada bindings are hard to findMost Ada bindings are hard to find If found, little information is included with themIf found, little information is included with them No automatic announcement of updates (if any)No automatic announcement of updates (if any) Bindings do not evolve as Ada language evolvesBindings do not evolve as Ada language evolves ISO/WG9 requested proposals from SIGAda and ISO/WG9 requested proposals from SIGAda and
Ada-EuropeAda-Europe ISO/WG9, Ada-Europe, and SIGAda will work ISO/WG9, Ada-Europe, and SIGAda will work
together to manage Ada Bindings to APIs together to manage Ada Bindings to APIs (ABAPIs)(ABAPIs)
OverviewOverview
Registered ABAPIs will be publicly Registered ABAPIs will be publicly availableavailable SIGAda APIWG web pageSIGAda APIWG web page Compilable Ada bindings to APIs (ABAPIs)Compilable Ada bindings to APIs (ABAPIs) Artifacts (sources, examples, tutorials, known Artifacts (sources, examples, tutorials, known
problems, lessons learned, rationale, etc.)problems, lessons learned, rationale, etc.) Procedures to easily Register ABAPIsProcedures to easily Register ABAPIs APIWG responsible for registration and public APIWG responsible for registration and public
availability (on web page or links) – ACM availability (on web page or links) – ACM copyright with permission to copycopyright with permission to copy
APIWG subgroups to develop/maintain/evolve APIWG subgroups to develop/maintain/evolve ABAPI of interest to that particular subgroupABAPI of interest to that particular subgroup
Definition of ABAPIsDefinition of ABAPIs
Standardized ABAPIs – provided in the Ada Standardized ABAPIs – provided in the Ada LRM (e.g., Annexes) or through secondary LRM (e.g., Annexes) or through secondary ISO standards (e.g., ASIS)ISO standards (e.g., ASIS)
Registered ABAPIs – ABAPIs made publicly Registered ABAPIs – ABAPIs made publicly available via the APIWG web page; available via the APIWG web page; individual or organization is responsible for individual or organization is responsible for each Registered (Private or Public) ABAPIeach Registered (Private or Public) ABAPI
Unregistered ABAPIs – neither of the Unregistered ABAPIs – neither of the above, but a link may be provided on the above, but a link may be provided on the APIWG web pageAPIWG web page
Definition of Registered Definition of Registered ABAPIsABAPIs
Registered Private ABAPIs – keeping up with Registered Private ABAPIs – keeping up with who/where ABAPI is developed and/or who/where ABAPI is developed and/or maintained by a third party – maintained by a third party – with their with their permissionpermission Registered Private ABAPIs are Registered Private ABAPIs are NOTNOT standards standards
Registered Public ABAPIs – SIGAda subgroup Registered Public ABAPIs – SIGAda subgroup responsible for (possible development and) responsible for (possible development and) maintenance of ABAPI; changes are maintenance of ABAPI; changes are managed by the Subgroup; Subgroup managed by the Subgroup; Subgroup performs baselining and versioning of their performs baselining and versioning of their own ABAPIown ABAPI
ABAPI Home Web PageABAPI Home Web Page
Includes valuable artifactsIncludes valuable artifacts Compilable Ada source code for Ada Binding Compilable Ada source code for Ada Binding
(Specs) and Ada Bodies (freely available)(Specs) and Ada Bodies (freely available) RationaleRationale Examples, tutorials, useful tipsExamples, tutorials, useful tips Known problems, lessons learned, etc.Known problems, lessons learned, etc. Licenses/Permissions (modification rights)Licenses/Permissions (modification rights)
On SIGAda’s web server (APIWG web pages)On SIGAda’s web server (APIWG web pages) May contain links to Unregistered ABAPIsMay contain links to Unregistered ABAPIs May be mirrored elsewhere (e.g., Ada-May be mirrored elsewhere (e.g., Ada-
Europe)Europe)
API Working Group (APIWG)API Working Group (APIWG)
ACM SIGAda chartered Working ACM SIGAda chartered Working Group to manage Registered Group to manage Registered Private ABAPIs and Registered Private ABAPIs and Registered Public ABAPIsPublic ABAPIs
Chair’s responsibilities includeChair’s responsibilities includeDefining Charter for APIWGDefining Charter for APIWGCoordinating work of all SubgroupsCoordinating work of all SubgroupsUpdating APIWG web site for all Updating APIWG web site for all
Registered (Private and Public) ABAPIsRegistered (Private and Public) ABAPIs
APIWG SubgroupsAPIWG Subgroups
Subgroup exists for each Registered Public Subgroup exists for each Registered Public ABAPIABAPI
Subgroup chairs are responsible for the Subgroup chairs are responsible for the development, maintenance, and evolution development, maintenance, and evolution of their particular Registered Public ABAPIsof their particular Registered Public ABAPIs
Subgroup is responsible for evolving Subgroup is responsible for evolving Registered Public API, including baselining Registered Public API, including baselining their own ABAPI, versioning of new their own ABAPI, versioning of new releases, and identifying associated releases, and identifying associated artifactsartifacts
Approach for Registered Approach for Registered Private ABAPIsPrivate ABAPIs
Provide current set of developed Registered Provide current set of developed Registered Private ABAPIs on web pagePrivate ABAPIs on web page
ABAPI is provided unchanged from originally ABAPI is provided unchanged from originally developed ABAPI, with associated artifactsdeveloped ABAPI, with associated artifacts
If requestor is not the ABAPI developer, APIWG If requestor is not the ABAPI developer, APIWG Chair gets proper permission forms (including Chair gets proper permission forms (including ACM’s forms) signed by submitter, to place ABAPI ACM’s forms) signed by submitter, to place ABAPI on APIWG website to make ABABI publicly on APIWG website to make ABABI publicly availableavailable
If permission is granted, all artifacts, including If permission is granted, all artifacts, including source code, are placed on APIWG web page; source code, are placed on APIWG web page; APIWG Chair announces it; others may also add APIWG Chair announces it; others may also add artifacts (tutorials, examples, etc.)artifacts (tutorials, examples, etc.)
Approach for Registered Approach for Registered Public APIsPublic APIs
Ada Binding evolves as the API evolvesAda Binding evolves as the API evolvesSubgroups responsible for evolution and Subgroups responsible for evolution and
maintenance of each Registered Public APImaintenance of each Registered Public APIWeb page identified and email list createdWeb page identified and email list createdNecessary artifacts can be placed on web Necessary artifacts can be placed on web
site (Ada sources, rationale, site (Ada sources, rationale, documentation, tutorials, examples, etc.)documentation, tutorials, examples, etc.)
Email list used for Subgroup discussions, Email list used for Subgroup discussions, Subgroup business, notification to othersSubgroup business, notification to others
Responsibilities of SIGAda ECResponsibilities of SIGAda EC
Creates APIWG and appoints ChairCreates APIWG and appoints ChairApproves APIWG CharterApproves APIWG CharterApproves creation of APIWG Approves creation of APIWG
Subgroups and ChairsSubgroups and ChairsProvides necessary support to APIWG Provides necessary support to APIWG
and Chair, all Subgroups and Chairsand Chair, all Subgroups and ChairsYearly assessment of Subgroup Yearly assessment of Subgroup
viability and possible dissolutionviability and possible dissolution
Responsibilities of APIWG Responsibilities of APIWG ChairChair
Define WG-approved Procedures for Registered Define WG-approved Procedures for Registered (Private and Public) ABAPIs(Private and Public) ABAPIs
Maintain current artifacts for all such ABAPIsMaintain current artifacts for all such ABAPIs Secure approval to place third party ABAPIs Secure approval to place third party ABAPIs
(usually Registered Private) on APIWG web (usually Registered Private) on APIWG web pagepage
Facilitate SIGAda EC approval of each SubgroupFacilitate SIGAda EC approval of each Subgroup Ensure Subgroups are viable and maintain Ensure Subgroups are viable and maintain
effective web pages for their Registered Public effective web pages for their Registered Public APIAPI
Responsibilities of API Responsibilities of API Subgroup ChairsSubgroup Chairs
Develop, Maintain, Evolve the Ada Develop, Maintain, Evolve the Ada Binding to their Registered Public APIBinding to their Registered Public API
Maintain their API and its artifacts on Maintain their API and its artifacts on their own API’s web pagetheir own API’s web page
Approve baselines and versions of Approve baselines and versions of their own Registered Public APItheir own Registered Public API
Recommend replacements of their Recommend replacements of their own APIs when they are no longer own APIs when they are no longer viableviable
Members of the Ada Members of the Ada CommunityCommunity
Recommend to the APIWG Chair those Ada Recommend to the APIWG Chair those Ada Bindings to APIs to be established as Bindings to APIs to be established as REGISTERED PRIVATE ABAPIsREGISTERED PRIVATE ABAPIs
Recommend to the APIWG Chair those Recommend to the APIWG Chair those ABAPIs to be established as REGISTERED ABAPIs to be established as REGISTERED PUBLIC ABAPIsPUBLIC ABAPIs
Provide feedback to the APIWG Chair and Provide feedback to the APIWG Chair and Registered Public API Subgroup Chairs to Registered Public API Subgroup Chairs to make more (valuable and useful) make more (valuable and useful) information available to the Ada information available to the Ada communitycommunity
APIWG CharterAPIWG Charter
Created from discussions held at the Created from discussions held at the Workshop at SIGAda on Wednesday Workshop at SIGAda on Wednesday evening and at the WG9 meeting evening and at the WG9 meeting held Friday morning – and further held Friday morning – and further email discussions since thenemail discussions since then
As a strong recommendation from As a strong recommendation from the SIGAda Workshop, there the SIGAda Workshop, there WILL WILL NOTNOT be separate Charters for each be separate Charters for each SubgroupSubgroup
MembershipMembership
Membership in the APIWG or any of its Membership in the APIWG or any of its Subgroups is open to any interested Subgroups is open to any interested partyparty
Members are responsible for their own Members are responsible for their own expensesexpenses
SIGAda’s APIWG Chair SIGAda’s APIWG Chair mustmust be a be a member of both ACM and SIGAdamember of both ACM and SIGAda
Other members are encouraged to be Other members are encouraged to be members of ACM, SIGAda, or Ada-Europemembers of ACM, SIGAda, or Ada-Europe
APIWG Home PageAPIWG Home Page
A resource to the entire Ada A resource to the entire Ada communitycommunity
Publicly accessible (no password)Publicly accessible (no password)To upload the necessary artifacts To upload the necessary artifacts
to the APIWG web pages, one to the APIWG web pages, one must have an account on the ACM must have an account on the ACM server (this usually means that server (this usually means that one must be a member of ACM one must be a member of ACM and SIGAda)and SIGAda)
APIWG Email ListsAPIWG Email Lists
Each Subgroup will have their own Each Subgroup will have their own email discussion listemail discussion list
Anybody can be a member of that Anybody can be a member of that Subgroup’s email listSubgroup’s email list
Any member of the list can freely postAny member of the list can freely postOthers’ posts must be approved by the Others’ posts must be approved by the
list ownerlist ownerList owner must be a member of ACM List owner must be a member of ACM
and SIGAdaand SIGAda
Announcement of Registered Announcement of Registered Public API ReleasesPublic API Releases
Each Registered Public API Subgroup is Each Registered Public API Subgroup is responsible for setting the current version responsible for setting the current version of their own APIof their own API
Notification of the latest version should beNotification of the latest version should be Posted on the webPosted on the web Announced in Ada LettersAnnounced in Ada Letters Announced through the Subgroup’s email listAnnounced through the Subgroup’s email list New versions should be in the monthly New versions should be in the monthly
announcements of the SIGAda-Announce list announcements of the SIGAda-Announce list and comp.lang.ada, Team-Ada, and Ada-and comp.lang.ada, Team-Ada, and Ada-Europe – and other lists of related interestsEurope – and other lists of related interests
Why SIGAda and Ada-Europe?Why SIGAda and Ada-Europe?
Lightweight process carried out by Lightweight process carried out by volunteers to share Ada bindings to volunteers to share Ada bindings to APIs among the Ada communityAPIs among the Ada community
Provides a forum and mechanism to Provides a forum and mechanism to evolve ABAPIs as needed so that evolve ABAPIs as needed so that changes can be made without changes can be made without involving ISO/WG9involving ISO/WG9
If/When ready, ABAPIs may be If/When ready, ABAPIs may be formally standardized by ISO/WG9formally standardized by ISO/WG9
Candidates for possible APIs?Candidates for possible APIs?
Possible Subgroups for Registered Public APIsPossible Subgroups for Registered Public APIs Files/Directories – doneFiles/Directories – done Sockets – exists within GNATSockets – exists within GNAT HTTP/CGIHTTP/CGI Time zonesTime zones Environment variablesEnvironment variables ODBC/JDBC or equivalentODBC/JDBC or equivalent XMLXML others…others…
Base APIs upon POSIX and/or Win32 and/or Base APIs upon POSIX and/or Win32 and/or others?others?
Define these quickly for WG9 consideration Define these quickly for WG9 consideration (September 2003)(September 2003)
Results of Workshop DiscussionResults of Workshop Discussion
17 people attended SIGAda API 17 people attended SIGAda API WorkshopWorkshop
APIWG createdAPIWG createdAPIWG Web pages createdAPIWG Web pages createdAPIWG Chair responsibilities definedAPIWG Chair responsibilities definedSubgroups responsibilities definedSubgroups responsibilities definedFirst Subgroup created – XMLFirst Subgroup created – XMLFirst test example – CGIFirst test example – CGIApproach to move forwardApproach to move forward
Workshop Results:Workshop Results:APIWG CreatedAPIWG Created
Charter to be drafted – Draft Charter createdCharter to be drafted – Draft Charter created Clyde Roby is Acting ChairClyde Roby is Acting Chair ““Stamp of Approval”Stamp of Approval”
Provide necessary characteristicsProvide necessary characteristics No judgmentsNo judgments Supported and/or MaintainedSupported and/or Maintained AvailableAvailable Does not change “frequently”Does not change “frequently”
Clear instructions to submit your favorite Clear instructions to submit your favorite Ada Spec or ABAPI, including “dirty” ones – Ada Spec or ABAPI, including “dirty” ones – Draft Procedures created, but needs updatedDraft Procedures created, but needs updated
Workshop Results:Workshop Results:APIWG Web PagesAPIWG Web Pages
ABAPI should never disappearABAPI should never disappear Latest version always availableLatest version always available APIWG License to be with Registered APIWG License to be with Registered
Public APIs (e.g., GPL, GMGPL, BSD, etc.) – Public APIs (e.g., GPL, GMGPL, BSD, etc.) – ONEONE license? Or, license? Or, one of severalone of several licenseslicenses
Sources – not links – as much as possible Sources – not links – as much as possible (no compression of sources)(no compression of sources)
Link to appropriate web page for Ada 200YLink to appropriate web page for Ada 200Y
Announce to SIGAda-Announce, Announce to SIGAda-Announce, comp.lang.ada, etc. when Registered comp.lang.ada, etc. when Registered Public Subgroup artifact(s) readyPublic Subgroup artifact(s) ready
Place Subgroup artifacts on publicly Place Subgroup artifacts on publicly available part of APIWG web pageavailable part of APIWG web page
Guidelines for all Subgroups to follow Guidelines for all Subgroups to follow (including minimal coding standards)(including minimal coding standards)
Veto right over Subgroups ???Veto right over Subgroups ???
Workshop Results:Workshop Results:Responsibilities of SubgroupsResponsibilities of Subgroups
Obtain/develop a specification to an APIObtain/develop a specification to an API Maybe provide/develop a (freely available) Maybe provide/develop a (freely available)
implementationimplementation If more than one Ada Spec exists, thenIf more than one Ada Spec exists, then
Negotiate among all submissions to CHOOSE oneNegotiate among all submissions to CHOOSE one Negotiate among all submissions to CREATE a single Negotiate among all submissions to CREATE a single
oneone Define MULTIPLE Ada bindingsDefine MULTIPLE Ada bindings
Notify WG9 – ISO National Bodies contributeNotify WG9 – ISO National Bodies contribute Create WG9 Rapporteur Group?Create WG9 Rapporteur Group? Public ISO Technical Report(s)?Public ISO Technical Report(s)? Should Ada language be changed?Should Ada language be changed?
1.1. Brief WG9 for comment – most comments incorporatedBrief WG9 for comment – most comments incorporated2.2. Create the Draft “Concept of Operations”, incorporating Create the Draft “Concept of Operations”, incorporating
WG9 comments from discussion – Charter/ProceduresWG9 comments from discussion – Charter/Procedures3.3. Test the “concept” document with Ada CGI bindingTest the “concept” document with Ada CGI binding4.4. Refine the “concept” documentRefine the “concept” document5.5. Publicize on SIGAda, comp.lang.ada, Ada-Europe, WG9 Publicize on SIGAda, comp.lang.ada, Ada-Europe, WG9
discussion listsdiscussion lists6.6. Update the “concept” documentUpdate the “concept” document7.7. Present to SIGAda EC for approvalPresent to SIGAda EC for approval8.8. APIWG chair accepts ABAPIs for registrationAPIWG chair accepts ABAPIs for registration9.9. Subgroups formed to develop/maintain Registered Subgroups formed to develop/maintain Registered
Public APIsPublic APIs
Questions / DiscussionQuestions / Discussion
Better name for the Working Better name for the Working Group?Group?
Pointers to candidates for Pointers to candidates for Registered Private APIs?Registered Private APIs?
Pointers to candidates for Pointers to candidates for Registered Public APIs?Registered Public APIs?