VIJUG_ChapterLab_EclipseRCP_MicroISV.ppt - Kevin Matz

Document Sample
VIJUG_ChapterLab_EclipseRCP_MicroISV.ppt - Kevin Matz Powered By Docstoc
					Building apps with Eclipse RCP and
starting a micro-ISV business
A presentation for the Vancouver Island Java Users’ Group
Kevin Matz

A quick peek at the ChapterLab app   10 min

Building apps with Eclipse RCP       25 min

Starting a Micro-ISV business        25 min

A quick peek at the ChapterLab app
The 30 second pitch
• “Writing a book is hard!”
• Word processors haven’t fundamentally changed in 30+
  years, and don’t offer support for the non-linear workflow
  of planning, researching, writing, editing, and testing a
  lengthy book/manual/thesis
• ChapterLab is a new kind of writing tool
   –   Plan your project, organize notes and materials
   –   Refactor/restructure your document painlessly
   –   Coherence checking: do explanations follow a logical order?
   –   Record thoughts and ideas using visual diagramming*
   –   Structure content into outlines using explanation patterns*
* (not in Beta release)

A quick demo of ChapterLab

Visit for a four-minute demo video

Building apps with Eclipse RCP
Eclipse RCP
• Eclipse
   –   IDE and “open tools platform”
   –   The Eclipse Foundation
   –   Ecosystem of developers, vendors
   –   Open-source, Eclipse Public License
        • Safe for commercial use
• Rich Client Platform (RCP) is a multiplatform
  framework for desktop apps
   – Native look-and-feel for Windows,
     Mac OS X, Linux, AIX, HP-UX, Solaris
   – UI based on SWT, JFace

RCP plugins and features
• Plugins are components (OSGi bundles) that can
  be installed in an Eclipse instance
   – Plugins contribute extension points which allow
     configuration via an XML file (plugin.xml)
• Features are wrappers for bundles of plugins
• You can distribute plugins/features for installation in
  users’ existing Eclipse installations…
• …or bundle them with a workbench and distribute it
  as a standalone app (product)

Major UI components of Eclipse RCP
•   Workbench
•   Perspectives
•   Editors
•   Views
•   Menus, Toolbars
    – Actions, Commands
• Key bindings

•   Creating, registering an editor
•   Configuring perspectives
•   Configuring menus
•   Configuring key bindings
•   Configuring help content
•   Product branding
•   Product definition, export

Distributing/deploying RCP apps
• Java Web Start possible but difficult due to platform-
  specific SWT libraries
• Create installers for each platform
   – Mac: PackageMaker (part of Xcode developer suite)
   – Windows: Many options, e.g., Nullsoft Scriptable Installer
     System (NSIS)
• Java runtime
   – Mac OS X includes JRE 1.6, yay
   – Windows does not
      • During installation, check for Java and ask user to install Java
      • Or, bundle JRE (87MB uncompressed) with your distribution

Some complaints about RCP
• Weak documentation
• SWT and RCP APIs tend not to use generics
• Configuration hell
   – Product definition as plugins  Constant problems, flakiness
   – “Just install feature X”  Great, how/where do I find it?
   – Updating Eclipse IDE tends to leak unwanted crap into your
     product (Surprise! Irrelevant menu commands, toolbar icons)
   – Difference between run/debug configuration and exported
     product configuration  Everything needs regression testing
   • Obfuscation (Obfuscate4e and ProGuard)
   – Class names and public, protected members of classes that
     extend/implement RCP classes/interfaces must remain intact

Eclipse Rich Ajax Platform (RAP)
• Write web apps using the same RCP framework
• RWT = SWT implementation running in a browser
• RCP apps can generally be converted to RAP
  – But only a subset of SWT widgets currently supported
  – Latency is an issue

• Sample showcase app: http://www.cas-

Starting a micro-ISV* business
* “Micro Independent Software Vendor”
What’s involved?
CEO = Chief Everything Officer
•   Business and financial planning
•   Project management
•   Product ideation, design
•   Market research, feasibility studies
•   Product development, testing
•   Web design, copywriting, SEO
•   Marketing, promotion, branding, PR
•   Selling, payment processing
•   Customer service
•   Business administration
    – Accounting, Legal, regulatory paperwork…

Why do it?
Good reasons for starting a business
• Control of your own destiny; design your future
• Desire to build something new/useful/creative
• You’ve got an idea that the world needs and only
  you can bring it to fruition
• Personal development
   – Learn wide range of skills
   – Challenge
• Potential for financial success

Not so good reasons
• I want to escape my bad boss, cubicle job, etc.
• I want to Get Rich Quick!
• I want to be the boss so I
  can tell people what to do!
• I want to live the glamorous
  lifestyle of an entrepreneur!
     – Fantasy and reality are often
       quite different

Photo credit: artist unknown (found on the net)     17
My ideal business
(warning: may not match your ideal!)
• Selling a scalable product/service rather than
  working for an hourly rate
• No employees if possible
• Selling to many customers rather than one or a few
  key client(s)
   – If you have one customer, you have a boss
   – Reduces risk (a customer leaving is no big deal)
   – Freedom to “fire” your bad customers

My ideal business
(warning: may not match your ideal!)
•   Short-term: Can earn enough cash to get by
•   Long-term: Potential to scale to higher earnings
•   Location-independent, portable
•   Night-owl friendly
•   Free of hassles as much as possible
    – Highly-regulated industries? No thanks
• Lets me be creative

“Lifestyle business” and not a startup? OK, fine

What’s your product?
Generating business ideas
• The idea is everything… and nothing
• Many successful businesses exploit existing ideas
     – Microsoft (BASIC, DOS, Windows, Word, Excel, Bing…)
     – McDonalds, Subway
• Ideas without a “barrier to entry” are easily copied
     – Groupon
• New ideas can be good: head start over the copiers
• Borrowed ideas can be good: they’ve been proven to
     – Borrow an idea and make it better (product/market differentiation)
• Best way to get a good idea is to generate TONS of
  ideas and reject 99% of them

Photo credit: Yassine Mrabet                                         20
Business models
• Selling/licensing a product
    – Enterprise sales
    – Shareware/Trialware
    – Shrinkwrap, sell in stores
•   Software-as-a-Service (subscription, pay-per-use)
•   Freemium
•   Advertising-supported
•   Donation-supported
•   Bundling
•   No revenue or business model, but hope for buy-out

Before you build, think about your
marketing strategy:
• Product
   – Target market, wants/needs (“pain point” addressed)
   – Product features/scope
   – Naming, branding, product line strategy
• Pricing
   – Profit optimization; competition
   – Perceived value
• Promotion
   – Advertising, selling, PR, SEO, etc.
• Place (distribution)

Positioning (what sets you apart from the competition) can
  involve any/all of the above

The Lean Startup approach
(Ries, Blank, etc.)
• Minimum Viable Product
     – “Validated learning” about what customers want or do not
     – Not necessarily an actual product (e.g., landing page)
• Frequent contact and testing with real customers
• Rapid iteration, continual deployment
• Pivot
     – Change product, target market, strategy, …
• Customer development alongside product

Photo credit: Eric Ries and Crown Business Publishing        23
Financing your startup
• How much time and money will
  you need for developing and                   marketing
  your product?
• Where will you get the money?
     –   Bootstrapping using your own savings
     –   Venture capital
     –   Angel funding, accelerator programs
     –   Crowdsourcing (e.g., Kickstarter)
     –   Bank loan (haha, good luck)

Photo credit: “Allureme” (wikipedia user)             24
Shifting how you think
• Employee
   –   Specialist
   –   Working long and hard and pleasing the boss is the key to success
   –   Usually plays a small role in implementing someone else’s big idea
   –   Doesn’t take financial risks
• Hacker
   – Creates clever new stuff just for the fun of it, and bragging rights
• Entrepreneur
   – Generalist
   – Thinks about problems/wants/needs that people and businesses
     have and what can be done to solve/satisfy these
   – Fun project, long hours, advanced technology won’t necessarily lead
     to success in the marketplace
   – Takes risks but balances risks with potential rewards
   – Mindset: How do I make this happen? If I can’t do X, can I learn it,
     or how do I find someone to do X and how do I afford it?

Shifting how you think: Thinking
from a business perspective
• $14,000 loss for FY2011
   – Sounds horrible!
   – But it’s mostly owed to me as a shareholder loan for unpaid
     management wages
   – Why wages? So I can make an SR&ED claim that will
     hopefully lead to a cheque for $8,000
   – Plus, a business loss means the business pays no taxes
• Corporation as a separate entity
   – When individual tax year end and company’s fiscal year
     end differ, company can split wages and/or dividends
     across years to minimize taxes and exploit exemption limits

The most important thing of all
             Get started!

             Follow your dreams,
          build something creative,
           take a shot at selling it,
            and if it doesn’t work,
                 learn from it,
     and try again with the next project.

            And tell us about it!

Good luck!

Twitter: @chapterlab


Shared By: