Commit 60e06bdf authored by Dave Cooper's avatar Dave Cooper
Browse files

updating site and training

parent 63fd5a1d
......@@ -4,7 +4,7 @@
:author
"Genworks and Dave Cooper unless otherwise indicated"
:license "AGPL unless otherwise indicated" :serial t
:version "2012042500" :depends-on (:gdl-gwl-graphics)
:version "2012042700" :depends-on (:gdl-gwl-graphics)
:components
((:file "robot/source/package")
(:file "robot/source/assembly")
......@@ -27,6 +27,7 @@
(:file "newsite/source/product-licensing")
(:file "newsite/source/products")
(:file "newsite/source/publish")
(:file "newsite/source/survey")
(:file "twenty-four/source/infpre")
(:file "twenty-four/source/assembly")
(:file "twenty-four/source/cards-by-number")
......
......@@ -64,7 +64,7 @@
(otherwise (the acl-32))))
(lw-uplift 1)
(acl-uplift 3/2)
(acl-uplift 1)
(discount-func #'(lambda(price key)
(ecase key
......@@ -110,30 +110,49 @@
:current-price
(funcall (the discount-func)
(ecase (the selected-gendl-license)
(:agpl 3000)
(:agpl (if (the academic?) 4500 6000))
(:trial 0)
(:student 100)
(:professional 1500)
(:enterprise 3000))
(:professional (if (the academic?) 3000 4500))
(:enterprise (if (the academic?) 4500 6000)))
(first (the-child root-path))))
(acl-64 :type 'radio-price-choice
:string (locale-string :franz-allegro-cl-64)
:disabled? (eql (the selected-gendl-license) :trial)
:disabled? (or (eql (the selected-gendl-license) :trial)
(eql (the selected-gendl-license) :student))
:disabled-message (string-append
(locale-string :please-select)
" "
(locale-string :a)
" "
(locale-string :gendl-license)
" "
(locale-string :other-than)
" "
(locale-string :student)
" or "
(locale-string :evaluation)
" "
(locale-string :to-enable-this-option))
:current-price
(funcall (the discount-func)
(ecase (the selected-gendl-license)
(:agpl 5500)
(:agpl (if (the academic?) 4500 6000))
(:trial 0)
(:student 150)
(:professional 4200)
(:enterprise 5500))
(:student 100)
(:professional (if (the academic?) 3000 4500))
(:enterprise (if (the academic?) 4500 6000)))
(first (the-child root-path))))
(lw-32-base :type 'radio-price-choice
:string (locale-string :lispworks-32-basic)
:disabled? (eql (the selected-gendl-license) :trial)
:current-price (funcall (the discount-func) (if (the academic?) 1100 1700) (first (the-child root-path))))
:current-price (funcall (the discount-func)
(if (the academic?) 1100 1700)
(first (the-child root-path))))
(lw-32-full :type 'radio-price-choice
:string (locale-string :lispworks-32-expanded)
......@@ -202,29 +221,45 @@
(define-object support-level-choice (wizard-screen)
:computed-slots ((heading (locale-string :technical-support-level))
:computed-slots
((heading (locale-string :technical-support-level))
(default (the none))
(default (cond ((and (member (the selected-cl-engine) '(:acl-32 :acl-64 :lw-32-full :lw-64-full))
(eql (the selected-gendl-license) :enterprise))
(the production))
((and (member (the selected-cl-engine) '(:acl-32 :acl-64 :lw-32-full :lw-64-full))
(eql (the selected-gendl-license) :professional))
(the development))
((and (member (the selected-cl-engine) '(:acl-32 :acl-64 :lw-32-full :lw-64-full))
(eql (the selected-gendl-license) :agpl))
(the production))
(t (the none))))
(surcharge-function (ecase (the selected-cl-engine)
(:none #'(lambda(num) (* num 5/2)))
((:acl-32 :acl-64) #'identity)
((:lw-32-base :lw-32-full :lw-64-full) #'(lambda(num) (+ 3600 num)))))
(surcharge-function
(ecase (the selected-cl-engine)
(:none #'identity)
(:sbcl #'(lambda(num) (* num 5/2)))
((:acl-32 :acl-64) #'identity)
((:lw-32-base :lw-32-full :lw-64-full)
#'(lambda(num) (+ 3600 num)))))
(money-saving-tip (when (eql (the selected-cl-engine) :none)
(with-cl-who-string ()
(str (locale-string :select))
" "
(str (locale-string :a))
" "
(str (locale-string :commercial))
" "
((:span :class :clickme
:onclick (the (gdl-ajax-call :function-key :set-current-sheet
:arguments (list (the cl-engine)))))
(str (locale-string :common-lisp-engine)))
(str (locale-string :to-reduce-tech-support-prices))))))
(money-saving-tip
(when (eql (the selected-cl-engine) :none)
(with-cl-who-string ()
(str (locale-string :select))
" "
(str (locale-string :a))
" "
(str (locale-string :commercial))
" "
((:span :class :clickme
:onclick (the (gdl-ajax-call :function-key :set-current-sheet
:arguments (list (the cl-engine)))))
(str (locale-string :common-lisp-engine)))
(str (locale-string :to-reduce-tech-support-prices))))))
:objects ((none :type 'radio-price-choice
......@@ -233,21 +268,73 @@
(locale-string :i-e)
" "
(locale-string :self-provided-or-third-party))
:disabled? (member (the selected-cl-engine) '(:acl-32 :acl-64))
:disabled-message (string-append (locale-string :please-select)
" "
(locale-string :a)
" "
(locale-string :common-lisp-engine)
" "
(locale-string :other-than)
" "
(locale-string :franz-allegro-cl-32)
" "
(locale-string :or)
" "
(locale-string :franz-allegro-cl-64)
" "
(locale-string :to-enable-this-option) ".")
:current-price (funcall (the discount-func) 0))
(install :type 'radio-price-choice
:string (locale-string :installation-and-configuration)
:disabled? (member (the selected-gendl-license) '(:trial :student))
:disabled? (or (member (the selected-gendl-license) '(:trial :student))
(eql (the selected-cl-engine) :none)
(member (the selected-cl-engine) '(:acl-32 :acl-64)))
:disabled-message (when (the-child disabled?)
(let ((trial? (eql (the selected-gendl-license) :trial))
(student? (eql (the selected-gendl-license) :student)))
(format nil "~a a ~a ~a ~a."
(locale-string :please-select)
(cond (trial? (locale-string :non-trial))
(student? (locale-string :non-student)))
(locale-string :gendl-license)
(locale-string :to-enable-this-option)
)))
(let ((trial? (eql (the selected-gendl-license) :trial))
(student? (eql (the selected-gendl-license) :student)))
(format nil "~a~a~a~a."
(locale-string :please-select)
(if (member (the selected-gendl-license) '(:trial :student))
(format nil " ~a ~a ~a "
(locale-string :a)
(cond (trial? (locale-string :non-trial))
(student? (locale-string :non-student)))
(locale-string :gendl-license)) "")
(cond ((eql (the selected-cl-engine) :none)
(format nil " ~a~a ~a ~a "
(if (and (member (the selected-gendl-license) '(:trial :student))
(eql (the selected-cl-engine) :none))
(format nil "~a " (locale-string :and))
"")
(locale-string :a)
(locale-string :known)
(locale-string :common-lisp-engine)))
((the none disabled?)
(format nil " ~a~a"
(if (and (member (the selected-gendl-license) '(:trial :student))
(eql (the selected-cl-engine) :none))
(format nil "~a " (locale-string :and))
"")
(string-append
(locale-string :a)
" "
(locale-string :common-lisp-engine)
" "
(locale-string :other-than)
" "
(locale-string :franz-allegro-cl-32)
" "
(locale-string :or)
" "
(locale-string :franz-allegro-cl-64))))
(t " "))
(locale-string :to-enable-this-option))))
:current-price (funcall (the discount-func)
(ecase (the selected-geometry-kernel)
......@@ -256,16 +343,33 @@
(how-to :type 'radio-price-choice
:string (locale-string :technical-how-to-q-a)
:disabled? (member (the selected-gendl-license) '(:trial :student))
:disabled? (or (member (the selected-gendl-license) '(:trial :student))
(eql (the selected-cl-engine) :none))
:disabled-message (when (the-child disabled?)
(let ((trial? (eql (the selected-gendl-license) :trial))
(student? (eql (the selected-gendl-license) :student)))
(format nil "~a a ~a ~a ~a."
(locale-string :please-select)
(cond (trial? (locale-string :non-trial))
(student? (locale-string :non-student)))
(locale-string :gendl-license)
(locale-string :to-enable-this-option))))
(let ((trial? (eql (the selected-gendl-license) :trial))
(student? (eql (the selected-gendl-license) :student)))
(format nil "~a~a~a~a."
(locale-string :please-select)
(if (member (the selected-gendl-license) '(:trial :student))
(format nil " ~a ~a ~a "
(locale-string :a)
(cond (trial? (locale-string :non-trial))
(student? (locale-string :non-student)))
(locale-string :gendl-license)) "")
(if (eql (the selected-cl-engine) :none)
(format nil " ~a~a ~a ~a "
(if (and (member (the selected-gendl-license) '(:trial :student))
(eql (the selected-cl-engine) :none))
(format nil "~a " (locale-string :and))
"")
(locale-string :a)
(locale-string :known)
(locale-string :common-lisp-engine))
" ")
(locale-string :to-enable-this-option))))
:current-price (funcall (the surcharge-function)
(funcall (the discount-func)
......@@ -275,15 +379,32 @@
(development :type 'radio-price-choice
:string (locale-string :application-code-nda)
:disabled? (member (the selected-gendl-license) '(:trial :student))
:disabled? (or (member (the selected-gendl-license) '(:trial :student))
(eql (the selected-cl-engine) :none))
:disabled-message (when (the-child disabled?)
(let ((trial? (eql (the selected-gendl-license) :trial))
(student? (eql (the selected-gendl-license) :student)))
(format nil "~a a ~a ~a ~a."
(format nil "~a~a~a~a."
(locale-string :please-select)
(cond (trial? (locale-string :non-trial))
(student? (locale-string :non-student)))
(locale-string :gendl-license)
(if (member (the selected-gendl-license) '(:trial :student))
(format nil " ~a ~a ~a "
(locale-string :a)
(cond (trial? (locale-string :non-trial))
(student? (locale-string :non-student)))
(locale-string :gendl-license)) "")
(if (eql (the selected-cl-engine) :none)
(format nil " ~a~a ~a ~a "
(if (and (member (the selected-gendl-license) '(:trial :student))
(eql (the selected-cl-engine) :none))
(format nil "~a " (locale-string :and))
"")
(locale-string :a)
(locale-string :known)
(locale-string :common-lisp-engine))
" ")
(locale-string :to-enable-this-option))))
:current-price (funcall (the surcharge-function)
......@@ -294,15 +415,25 @@
(production :type 'radio-price-choice
:string (locale-string :mission-critical-prod-env)
:disabled? (not (or (eql (the selected-gendl-license) :enterprise)
(eql (the selected-gendl-license) :agpl)))
:disabled? (or (not (or (eql (the selected-gendl-license) :enterprise)
(eql (the selected-gendl-license) :agpl)))
(not (member (the selected-cl-engine) '(:acl-32 :acl-64 :lw-32-base :lw-32-full :lw-64-full))))
:disabled-message (format nil "~a ~a ~a ~a ~a ~a."
:disabled-message (format nil "~a ~a ~a ~a ~a~a~a."
(locale-string :please-select)
(locale-string :an-open-source)
(locale-string :or)
(locale-string :enterprise-class)
(locale-string :gendl-license)
(if (member (the selected-cl-engine) '(:acl-32 :acl-64 :lw-32-base :lw-32-full :lw-64-full))
" "
(format nil " ~a ~a ~a ~a "
(locale-string :and)
(locale-string :a)
(locale-string :commercial)
(locale-string :common-lisp-engine)))
(locale-string :to-enable-this-option))
......
......@@ -6,7 +6,8 @@
((inner-html (with-cl-who-string ()
(:h2 "Licensing Levels Explained")
"Genworks Gendl is so-called "
((:a :href "http://en.wikipedia.org/wiki/Multi-licensing") "\"dual-licensed\"")
((:a :href "http://en.wikipedia.org/wiki/Multi-licensing")
"\"dual-licensed\"")
" software, available under an open-source license ("
((:a :href "http://www.gnu.org/licenses/agpl-3.0.txt") "AGPL")
") and alternatively under various proprietary
......@@ -53,7 +54,8 @@
(:ol
(:li "Contribute the code to the Gendl project
under our standard "
((:a :href "/newsite-static/documents/contributor.pdf") "Contributor's Agreement")
((:a :href "/newsite-static/documents/contributor.pdf")
"Contributor's Agreement")
", sharing with Genworks the copyright to any
original work. After suitable review, Genworks may
choose to include the code either in the mainline
......@@ -73,7 +75,8 @@
Gendl from its source code on startup. By using the
Evaluation license, you agree to both the \"share and
share alike\" terms of the "
((:a :href "http://www.gnu.org/licenses/agpl-3.0.txt") "AGPL Open Source license")
((:a :href "http://www.gnu.org/licenses/agpl-3.0.txt")
"AGPL Open Source license")
", as well as the \"No Commercial Use\" and other terms of the"
((:a :href "/newsite-static/documents/eval.txt") "Evaluation license")
". The Evaluation license may be renewed a
......@@ -102,7 +105,8 @@
its source code on startup. By using the Student
license, you agree to both the \"share and share
alike\" terms of the "
((:a :href "http://www.gnu.org/licenses/agpl-3.0.txt") "AGPL Open Source license")
((:a :href "http://www.gnu.org/licenses/agpl-3.0.txt")
"AGPL Open Source license")
", as well as the \"No Commercial Use\" terms of the "
((:a :href "/newsite-static/documents/eval.txt") "Evaluation license")
". The Student license also
......@@ -114,56 +118,73 @@
((:div :class "profile")
((:div :class "people")
(:p "The "
((:a :href "/newsite-static/documents/gendl-development.pdf") "Professional License")
((:a :href "/newsite-static/documents/gendl-development.pdf")
"Professional License")
" is intended for use in the early phases of
proprietary application development. It does not include the
capability to generate runtime application distributions. The
Professional Edition may also be appropriate for providing additional
Development seats within an organization or department which already
has at least one Enterprise seat. Gendl source code developed with
Professional Edition may be distributed as proprietary, closed-source
compiled binaries (so-called \"fasl\" files) for use on licensed
installations of Gendl Runtime.")
(:p "The Professional license is a perpetual Gendl license; from date of
initiation, you may continue to develop and distribute closed-source
compiled files, with the initiated Gendl version, into perpetuity. As
an option you may renew maintenance and support on an annual basis for
25% of the initiation price for Gendl-related components and support, and 50% for
SMLib-related components.")))
proprietary application development. It does
not include the capability to generate runtime
application distributions. The Professional
Edition may also be appropriate for providing
additional Development seats within an
organization or department which already has
at least one Enterprise seat. Gendl source
code developed with Professional Edition may
be distributed as proprietary, closed-source
compiled binaries (so-called \"fasl\" files)
for use on licensed installations of Gendl
Runtime.")
(:p "The Professional license is a perpetual Gendl
license; from date of initiation, you may continue
to develop and distribute closed-source compiled
files, with the initiated Gendl version, into
perpetuity. As an option you may renew maintenance
and support on an annual basis for 25% of the
initiation price for Gendl-related components and
support, and 50% for SMLib-related components.")))
((:a :name "enterprise-license"))
((:a :href "#Top") (:h3 "Enterprise"))
((:div :class "profile")
((:div :class "people")
(:p "The "
((:a :href "/newsite-static/documents/gendl-development.pdf") "Enterprise License")
" Enterprise license allows all uses provided by
the Professional license, with the additional ability to generate
closed-source, proprietary, self-contained Runtime applications. These
Runtime applications may be used free of charge in")
((:a :href "/newsite-static/documents/gendl-development.pdf")
"Enterprise License")
" Enterprise license allows all uses provided
by the Professional license, with the
additional ability to generate closed-source,
proprietary, self-contained Runtime
applications. These Runtime applications may be
used free of charge in")
(:ol
(:li "Noncommercial deployments (e.g. for testing and demonstration purposes)")
(:li "Noncommercial deployments (e.g. for testing
and demonstration purposes)")
(:li "In Academic (e.g. University research lab) settings."))
(:p " For commercial closed-source runtime deployments, Gendl Runtime licenses are
available under a flat-fee, internal model or a percentage-based VAR distribution model.")
(:p " For commercial closed-source runtime
deployments, Gendl Runtime licenses are available
under a flat-fee, internal model or a
percentage-based VAR distribution model.")
(:p "Professional license is a perpetual Gendl
license; from date of initiation, you may continue to develop and
distribute closed-source compiled files, with the initiated Gendl
version, into perpetuity. In order to generate closed-source
self-contained Runtime applications, your Gendl Enterprise license
must be paid-up with maintenance on an annual basis, at a price of 25%
of the initiation price for Gendl-related components, and 50% for
SMLib-related components.")))
license; from date of initiation, you may continue
to develop and distribute closed-source compiled
files, with the initiated Gendl version, into
perpetuity. In order to generate closed-source
self-contained Runtime applications, your Gendl
Enterprise license must be paid-up with maintenance
on an annual basis, at a price of 25% of the
initiation price for Gendl-related components, and
50% for SMLib-related components.")))
((:a :name "academic-pricing"))
((:a :href "#Top") (:h2 "Academic Pricing"))
(:p "As our investment in the future, and in the possible
improvement of Gendl from research results, Genworks
offers a 50% discount for most Gendl components for
use in Academic institutions. Academic settings which qualify for Academic pricing include:")
(:p "As our investment in the future, and in the
possible improvement of Gendl from research results,
Genworks offers a 50% discount for most Gendl
components for use in Academic institutions. Academic
settings which qualify for Academic pricing
include:")
(:ol
(:li "Academic Institutions of higher learning (i.e. Universities)")
(:li "Government research laboratories")
......@@ -183,15 +204,35 @@ SMLib-related components.")))
((inner-html (with-cl-who-string ()
(:h2 "CL Engines Explained")
(:p "Common Lisp (CL) is an industry-standard dialect
of the Lisp programming language, available today in
several commercial as well as community-supported
(:p ((:a :href "http://en.wikipedia.com/Common_Lisp"r)
"Common Lisp")
" (CL) is an industry-standard programming
language, available today in several commercial as
well as community-supported Open Source
implementations. It is a goal of the Gendl project
to run on all major CL implementations, and as of
today, Gendl builds are available for three: Allegro
CL from Franz Inc, LispWorks from LispWorks Ltd, and
SBCL, an Open Source implementation supported by the
community and by several third-party firms.")
today, Gendl builds are available for three: "
((:a :href "http://www.franz.com/products/allegro-common-lisp/")
"Allegro CL")
" from "
((:a :href "http://www.franz.com") "Franz Inc")
((:a :href "http://www.lispworks.com/products/index.html")
"LispWorks")
" from "
((:a :href "http://www.lispworks.com") "LispWorks Ltd")
" and "
((:a :href "http://www.sbcl.org") "SBCL")
", an Open Source implementation supported
by the community and by several third-party firms.")
(:p "It is possible to obtain Gendl seats bundled
with one of the commercial CL engines, with one of
......@@ -213,59 +254,154 @@ SMLib-related components.")))
((:div :class "profile")
((:div :class "people")
(:p "With this option, you will have to provide for
your own CL infrastructure as well as your own Technical Support. This
option may be appropriate if you already have an existing CL
infrastructure in place, and you are equipped to handle your own Gendl
technical support.")))
your own CL infrastructure as well as your own
Technical Support. This option may be appropriate
if you already have an existing CL infrastructure
in place, and you are equipped to handle your own
Gendl technical support.")))
((:a :name "cl-sbcl"))
((:a :href "#Top") (:h3 "Steel Bank Common Lisp"))
((:div :class "profile")
((:div :class "people")
(:p "Of course you are free to use SBCL with any
GDL installation, including with a \"No CL Engine\" option. But by
choosing this option explicitly, we are able to offer Genworks
Technical Support because we do have experience running Gendl with
SBCL ourselves. The Technical Support prices are higher than with a
commercial CL engine, because the SBCL price (zero) includes no
support. In order to support Gendl on SBCL, Genworks will have to
become more familiar with SBCL internals, or contract with a
third-party such as Steel Bank Studios.")))
(:p "By choosing this option explicitly, you enable
Genworks to offer Technical Support, because we do
have experience running Gendl with SBCL
ourselves. The Technical Support prices are higher
than with a commercial CL engine, because the SBCL
price (zero) includes no support. In order to
support Gendl on SBCL, Genworks will from time to
time have to become more familiar with SBCL
internals, or contract with a third-party such as "
((:a :href "") "Steel Bank Studios")
".")))
((:a :name "cl-acl-32"))
((:a :href "#Top") (:h3 "Allegro CL 32-bit"))
((:a :href "#Top")
(:h3 "Allegro CL 32-bit"))
((:div :class "profile")
((:div :class "people")
(:p "Allegro CL 32-bit has been the primary deployment platform for
Gendl for over 10 years...")))
(:p
((:a :href "http://www.franz.com/products/allegro-common-lisp/")
"Allegro CL")
" 32-bit has been the primary deployment platform
for Gendl for over 10 years and remains a trusty
workhorse for small to medium sized applications
and models. Allegro CL also ships with a wide
array of supported add-on products, some of which
are available with standard Allegro CL Gendl at no
extra charge. The Professional and Enterprise
editions of Gendl correspond to the Professional
and Enterprise editions of Allegro CL.")
(:p "Allegro CL is supported on Windows, Linux,
FreeBSD, MacOS, and several commercial Unix
systems.")
(:p "The pricing model for Allegro CL is inclusive
of technical support, so selecting Allegro CL will
result in a reduction of Genworks' listed support
prices relative to the other CL choices
available. As with Gendl, Allegro CL's pricing