pharodays 2015: publishing libraries and frameworks by sven van caekenberghe

76
Publishing Libraries & Frameworks Sven Van Caekenberghe

Upload: pharo

Post on 18-Jul-2015

265 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

PublishingLibraries & FrameworksSven Van Caekenberghe

Page 2: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Pharo is a platform

Page 3: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Enables you to writereal world applications

Page 4: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Pharo is open source, has an eco system& active community

Page 5: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Pharo needs 3rd party libraries & frameworks

Page 6: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Solve specificenterprise & application needs

Page 7: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Connect & interfaceto the outside world

Page 8: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

You wrote something that might be useful to others

Page 9: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Consider giving back to the community

Page 10: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Publish your library or framework as open source

Page 11: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Pro’s

more users, more testers, more feedback

feature requests, feature additions

higher quality, better maintenance

Page 12: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Con’s

more work, more responsibility

a commitment for the future

need for support, need for marketing

Page 13: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Pharo eco system offers various free tools

Page 14: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Write, publish & maintain high quality code

Page 15: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Let’s get started

Page 16: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Define yourcomponent, library, framework

Page 17: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Boundaries Dependencies

Page 18: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Source Code

Page 19: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Source codepackage definition > Monticello, RPackage

Page 20: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Package names Name space prefix Extensions

Page 21: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe
Page 22: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe
Page 23: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Source code management > Monticello

Page 24: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe
Page 25: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Repository > SmalltalkHub, github, …

Page 26: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe
Page 27: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe
Page 28: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Source code management > Metacello

Page 29: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

One-click loading One-expression loading One-command loading

Page 30: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe
Page 31: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe
Page 32: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe
Page 33: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Dependency management Version management Platform management

Page 34: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

baseline1: spec <version: '1-baseline'> spec for: #common do: [ spec blessing: #baseline; author: 'Sven Van Caekenberghe'; repository: 'http://smalltalkhub.com/mc/SvenVanCaekenberghe/Reddit/main/'.

spec project: 'Seaside3' with: [ spec className: 'ConfigurationOfSeaside3'; versionString: #stable; repository: 'http://www.smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main' ].

spec project: 'Glorp' with: [ spec className: 'ConfigurationOfGlorp'; versionString: #stable; repository: 'http://www.smalltalkhub.com/mc/DBXTalk/Configurations/main' ].

spec project: 'PostgresV2' with: [ spec className: 'ConfigurationOfPostgresV2'; versionString: #stable; repository: 'http://www.smalltalkhub.com/mc/PharoExtras/PostgresV2/main' ].

Page 35: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

baseline1: spec (cont’d)

spec package: 'GlorpDriverPostgreSQL' with: [ spec repository: 'http://www.smalltalkhub.com/mc/PharoExtras/PostgresV2/main'; postLoadDoIt: #postLoadGlorpPostgresNativeDriverDBXTalkPharo; requires: #( 'Glorp' 'PostgresV2' ) ].

spec package: 'Reddit' with: [ spec requires: #( 'Seaside3' 'GlorpDriverPostgreSQL') ].

spec group: 'Core' with: #( 'Reddit' ). spec group: 'default' with: #( 'Reddit' ) ]

Page 36: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Configuration browser One-click install Blessed repo for configurations

Page 37: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Tests

Page 38: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Unit Tests Functional Tests Regression Tests

Page 39: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Validate & Protect your code base

Page 40: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Facilitate > refactoring > porting > contributions

Page 41: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

“Something not tested does not exist”

Page 42: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

“How To” Unit Tests Live, validated examples

Page 43: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Tools

Page 44: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Code critics Lint rules

Page 45: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe
Page 46: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Time/space profilers Coverage tools

Page 47: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

CI

Page 48: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Continuous Integration

Page 49: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe
Page 50: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe
Page 51: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Independent, controlled build

Page 52: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

For each change in source, dependencies or platform

Page 53: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Based on Configuration target Based on Source code repo

Page 54: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Build Matrix Versions, Platforms, VMs

Page 55: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Run all tests Notify on failure Build artefacts

Page 56: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe
Page 57: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe
Page 58: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe
Page 59: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe
Page 60: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Docs

Page 61: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Documentation, documentation, documentation

Page 62: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Even well written code needs documentation

Page 63: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Class names Methods names Style & Design

Page 64: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Class comments Method comments Implementation comments

Page 65: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Not the obvious things Rephrase, externalise Guide new users

Page 66: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Help System In Image Interactive Tutorial

Page 67: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Real, separate documentation

Page 68: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Papers, tutorials, articles, presentations

Page 69: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Pillar Markup Pillar Tool - PillarHub HTML, PDF, Markdown

Page 70: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Markdown Github, SmalltalkHub

Page 71: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Catalog Info on Configurations Project Poster

Page 72: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Use mailing lists Use MC package for contributions Use github issue system - PR

Page 73: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Debugging in the field > PharoDebug.log > Fuel out stack

Page 74: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Support your software Engage your users

Page 75: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

PublishingLibraries & FrameworksThank you for your attention

Page 76: PharoDAYS 2015: Publishing libraries and frameworks by Sven Van Caekenberghe

Q & A