apps
toolsets
frameworks
explore
share
contribute

Plan
Implement
Execute
Challenges
Benefits
Already had a lot of stuff out there...
So what did we do?
Esri is a very large organization
coolest
largest
popular
relatively easy
support for organizations
tons of features
api
GitHub for Organizations
Free for everyone!
Monthly plan.
learn platform
work-flows
incubation
Membership 101
GitHub has some interesting behaviors...
What happens when you transfer a repo?
Lose ownership
How can you see all private repos?
All Members Team
How do you contact all members?
GET /teams/:id/members
[
{
"login": "octocat",
"id": 1,
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
"gravatar_id": "somehexcode",
"url": "https://api.github.com/users/octocat"
}
]
GET /users/:user
{
...
"email": "mrbob@esri.com",
...
}
Publishing Workflow
Git is not easy to use... at first...
What the heck is a pull request?
Why can't I merge?
Rebase what?
Source Tree
You will do one of three things
1. Steal Code
2. Submit Code
3. Contribute Code
Repo Standards
repo-name-language
e.g. arcgis-flex-viewer
e.g. quickstart-map-js
<140 characters
e.g. ArcGIS JavaScript mapping app to get you started fast.
README.md
There's nothing worse that a bad README.md!
Description
Features
Instructions
Requirements
Resources
Issues
Contributing
Licensing
the ultimate README.md!
Contributions
Contribute
Issues
Licensing
Esri welcomes contributions from anyone and everyone. Please see our
[guidelines for contributing](https://github.com/esri/contributing).
Support
receive notification
issues, comments, pull requests
action
Viewing Apps Live
gh-pages
esri demoserver
Your Web Presence
esri.github.io
Dynamic Build
require "json"
require "yaml"
require "hashie"
require "rest-client"
require "erb"
# Get repos - Limited to 5000 requests per hour
@repo_array = JSON.parse(RestClient.get(@base_url+"/orgs/esri/repos?type=public&page=1&per_page=100", content_type: :json))
@repos ||= @repo_array.collect! do |repo|
if !repo["name"].nil?
# Get repo info
repo_name = repo["name"]
repo_desc = repo["description"]
repo_likes = repo["likes"]
repo_forks = repo["forks"]
# Extract README.md Esri tags
uri = URI(@base_url+"/repos/Esri/" + repo["name"] + "/contents/README.md")
repo_readme = RestClient.get(uri.to_s, content_type: :json)
if !repo_readme.nil?
repo_readme = JSON.parse(repo_readme)
content = Base64.decode64(repo_readme["content"])
if content
tags = content[/.*\(Esri Tags:(.*?)\)/,1]
tags = !tags.nil? ? tags.strip : @default_tag
language = content[/.*\(Esri Language:(.*?)\)/,1]
end
end
Hashie::Mash.new(repo)
end
README.md
...
[](Esri Tags: ArcGIS Web Mapping Leaflet)
[](Esri Language: JavaScript)
Yes, GitHub is new for some people!
Blogs
Workshops
Videos
ArcGIS Online -> GitHub
GitHub -> ArcGIS Online
Open Source Projects
ArcGIS GIS web client
Complete Source code
Very active
Geosearch place finding
ArcGIS JavaScript source
Easy to customize
JavaScript Geo library
GeoJSON, ArcGIS JSON, WKT
Geospatial operations
JavaScript mapping plug-in
ArcGIS basemaps
ArcGIS feature and map services
Discovery tool
Catalog geospatial resources
Metadata
Water Utility Network Editing
Special Event Planning
Address Data Management
Geoprocessing tools
Big data spatial analyses
geometry-api-java
arcgis-viewer-flex
arcgis-viewer-flex-builder
arcgis-osm-editor
sencha-touch-map-checkin-js
maps-app-android
driving-directions-ios
dojo-bootstrap-ui-for-maps-js
3d-cities-template
basic-storytelling-template-js
executive-dashboard
park-and-recreation-finder
citizen-service-request
terraformer
node-geoservices-adaptor/koop
geoservices-js
100 lines or less
So what can you do?
stats
and then something else happened...
Internal GitHub
Your own GitHub
SaaS
Fully featured
Core development
Website development
Wiki
Distributed
Branch and merge
Collaboration
Even support staff use GitHub!
Cross-repo normalization
Limited enterprise-level admin
LDAP for security groups
In the end...
Join us on esri.github.io