diff --git a/Makefile b/Makefile index dc7acd0..4939fcc 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ #!Makefile -HUGO=hugo +HUGO=hugo-extended .PHONY: build serve draft clean travis netlify diff --git a/assets/images/members/3mdeb.png b/assets/images/members/3mdeb.png new file mode 100644 index 0000000..f64b290 Binary files /dev/null and b/assets/images/members/3mdeb.png differ diff --git a/assets/images/members/Membership Kit/OPF Bylaws. 2015.pdf b/assets/images/members/Membership Kit/OPF Bylaws. 2015.pdf new file mode 100644 index 0000000..ef43a30 Binary files /dev/null and b/assets/images/members/Membership Kit/OPF Bylaws. 2015.pdf differ diff --git a/assets/images/members/Membership Kit/OpenPOWER Membership Agreement.v8Sept.27.2016.pdf b/assets/images/members/Membership Kit/OpenPOWER Membership Agreement.v8Sept.27.2016.pdf new file mode 100644 index 0000000..1bfd81d Binary files /dev/null and b/assets/images/members/Membership Kit/OpenPOWER Membership Agreement.v8Sept.27.2016.pdf differ diff --git a/assets/images/members/Membership Kit/OpenPower Foundation IPR Policy.15July.2015 (1) (2).pdf b/assets/images/members/Membership Kit/OpenPower Foundation IPR Policy.15July.2015 (1) (2).pdf new file mode 100644 index 0000000..78cc7f3 Binary files /dev/null and b/assets/images/members/Membership Kit/OpenPower Foundation IPR Policy.15July.2015 (1) (2).pdf differ diff --git a/assets/images/members/Membership-Kit.9.27.16.zip b/assets/images/members/Membership-Kit.9.27.16.zip new file mode 100644 index 0000000..2d7bfbb Binary files /dev/null and b/assets/images/members/Membership-Kit.9.27.16.zip differ diff --git a/assets/images/members/antmicro.png b/assets/images/members/antmicro.png new file mode 100644 index 0000000..894ca99 Binary files /dev/null and b/assets/images/members/antmicro.png differ diff --git a/assets/images/members/codeconstruct.png b/assets/images/members/codeconstruct.png new file mode 100644 index 0000000..01b554f Binary files /dev/null and b/assets/images/members/codeconstruct.png differ diff --git a/assets/images/members/credativ.png b/assets/images/members/credativ.png new file mode 100644 index 0000000..8cb9508 Binary files /dev/null and b/assets/images/members/credativ.png differ diff --git a/assets/images/members/everspin.jpg b/assets/images/members/everspin.jpg new file mode 100644 index 0000000..aadf013 Binary files /dev/null and b/assets/images/members/everspin.jpg differ diff --git a/assets/images/members/google.png b/assets/images/members/google.png new file mode 100644 index 0000000..773f587 Binary files /dev/null and b/assets/images/members/google.png differ diff --git a/assets/images/members/hitachi.png b/assets/images/members/hitachi.png new file mode 100644 index 0000000..e7a56c5 Binary files /dev/null and b/assets/images/members/hitachi.png differ diff --git a/assets/images/members/ibm.png b/assets/images/members/ibm.png new file mode 100644 index 0000000..74912a4 Binary files /dev/null and b/assets/images/members/ibm.png differ diff --git a/assets/images/members/innoboost.png b/assets/images/members/innoboost.png new file mode 100644 index 0000000..ded248a Binary files /dev/null and b/assets/images/members/innoboost.png differ diff --git a/assets/images/members/inspur-power-systems.png b/assets/images/members/inspur-power-systems.png new file mode 100644 index 0000000..5400942 Binary files /dev/null and b/assets/images/members/inspur-power-systems.png differ diff --git a/assets/images/members/oregonstateuniversity.png b/assets/images/members/oregonstateuniversity.png new file mode 100644 index 0000000..a8bd9f9 Binary files /dev/null and b/assets/images/members/oregonstateuniversity.png differ diff --git a/assets/images/members/raptorcomputingsystems.png b/assets/images/members/raptorcomputingsystems.png new file mode 100644 index 0000000..fd13de0 Binary files /dev/null and b/assets/images/members/raptorcomputingsystems.png differ diff --git a/assets/images/members/redhat.png b/assets/images/members/redhat.png new file mode 100644 index 0000000..1bc346c Binary files /dev/null and b/assets/images/members/redhat.png differ diff --git a/assets/images/members/thomaskrenn.png b/assets/images/members/thomaskrenn.png new file mode 100644 index 0000000..4e53bef Binary files /dev/null and b/assets/images/members/thomaskrenn.png differ diff --git a/assets/images/members/universityoforegon.jpg b/assets/images/members/universityoforegon.jpg new file mode 100644 index 0000000..37bef59 Binary files /dev/null and b/assets/images/members/universityoforegon.jpg differ diff --git a/assets/images/members/vantosh.png b/assets/images/members/vantosh.png new file mode 100644 index 0000000..6ce923c Binary files /dev/null and b/assets/images/members/vantosh.png differ diff --git a/assets/images/members/wistron.jpg b/assets/images/members/wistron.jpg new file mode 100644 index 0000000..165ee26 Binary files /dev/null and b/assets/images/members/wistron.jpg differ diff --git a/assets/images/members/yadro.png b/assets/images/members/yadro.png new file mode 100644 index 0000000..74f33cd Binary files /dev/null and b/assets/images/members/yadro.png differ diff --git a/assets/images/persons/allancantle.jpg b/assets/images/persons/allancantle.jpg new file mode 100644 index 0000000..e0e4eb7 Binary files /dev/null and b/assets/images/persons/allancantle.jpg differ diff --git a/assets/images/persons/artemikoev.jpg b/assets/images/persons/artemikoev.jpg new file mode 100644 index 0000000..b850f42 Binary files /dev/null and b/assets/images/persons/artemikoev.jpg differ diff --git a/assets/images/persons/hughblemings.jpg b/assets/images/persons/hughblemings.jpg new file mode 100644 index 0000000..f5300c3 Binary files /dev/null and b/assets/images/persons/hughblemings.jpg differ diff --git a/assets/images/persons/jameshuang.jpg b/assets/images/persons/jameshuang.jpg new file mode 100644 index 0000000..6dbac5e Binary files /dev/null and b/assets/images/persons/jameshuang.jpg differ diff --git a/assets/images/persons/jameskulina.jpg b/assets/images/persons/jameskulina.jpg new file mode 100644 index 0000000..cc24bf9 Binary files /dev/null and b/assets/images/persons/jameskulina.jpg differ diff --git a/assets/images/persons/mendyfermanuk.jpg b/assets/images/persons/mendyfermanuk.jpg new file mode 100644 index 0000000..d071df9 Binary files /dev/null and b/assets/images/persons/mendyfermanuk.jpg differ diff --git a/assets/images/persons/sameershende.jpg b/assets/images/persons/sameershende.jpg new file mode 100644 index 0000000..614a317 Binary files /dev/null and b/assets/images/persons/sameershende.jpg differ diff --git a/assets/images/persons/timansell.jpg b/assets/images/persons/timansell.jpg new file mode 100644 index 0000000..d4d2f6b Binary files /dev/null and b/assets/images/persons/timansell.jpg differ diff --git a/assets/images/persons/timothypearson.jpg b/assets/images/persons/timothypearson.jpg new file mode 100644 index 0000000..23a17be Binary files /dev/null and b/assets/images/persons/timothypearson.jpg differ diff --git a/assets/images/persons/toshaanbharvani.jpg b/assets/images/persons/toshaanbharvani.jpg new file mode 100644 index 0000000..02cee47 Binary files /dev/null and b/assets/images/persons/toshaanbharvani.jpg differ diff --git a/config/_default/config.toml b/config/_default/config.toml new file mode 100644 index 0000000..5a72fb3 --- /dev/null +++ b/config/_default/config.toml @@ -0,0 +1,24 @@ +### config.toml +title = "OpenPOWER Foundation" +baseURL = "https://openpower.foundation/" +theme = "openpowerfoundation" +languageCode = "en-us" +dataDir = "data" +assetDir = "assets" +PaginatePath = "blog" +sectionPagesMenu = "main" +buildDrafts = false +pygmentsUseClasses = true +enableGitInfo = true +enableRobotsTXT = true + +[outputs] + home = [ "HTML", "Calendar", "JSON" , "RSS" ] + specifications = [ "HTML", "JSON" ] + schedule = [ "HTML", "Calendar" , "RSS" ] + +[outputFormats] +[outputFormats.RSS] + mediatype = "application/rss" + baseName = "feed" + suffix = "xml" diff --git a/config/_default/menus.toml b/config/_default/menus.toml new file mode 100644 index 0000000..410197b --- /dev/null +++ b/config/_default/menus.toml @@ -0,0 +1,133 @@ +[[navbar]] + name = "About" + identifier = "about" + url = "/about/" + weight = -2000 +[[navbar]] + parent = "about" + name = "Board of Directors" + identifier = "bod" + url = "/boardofdirectors/" + weight = -2000 +[[navbar]] + parent = "about" + name = "Steering Committee" + identifier = "steeringcommittee" + url = "/steeringcommittee" + weight = -1900 + +[[navbar]] + name = "Members" + identifier = "members" + url = "/members/" + weight = -1900 + +[[navbar]] + name = "HUB" + identifier = "hub" + url = "/hub/" + weight = -1800 + +[[navbar]] + name = "Community" + identifier = "community" + url = "/community/" + weight = -1700 +[[navbar]] + parent = "community" + name = "Git" + identifier = "git" + url = "https://git.openpower.foundation/" + post = "external link alternate icon" + weight = -2000 +[[navbar]] + parent = "community" + name = "Chat" + identifier = "chat" + url = "https://chat.openpower.foundation/" + post = "external link alternate icon" + weight = -1900 +[[navbar]] + parent = "community" + name = "Discuss" + identifier = "discuss" + url = "https://discuss.openpower.foundation/" + post = "external link alternate icon" + weight = -1800 +[[navbar]] + parent = "community" + name = "Planet" + identifier = "planet" + url = "https://planet.openpower.foundation" + post = "external link alternate icon" + weight = -1700 +[[navbar]] + parent = "community" + name = "GitHub" + identifier = "github" + url = "https://github.com/open-power/" + post = "external link alternate icon" + weight = -1600 +[[navbar]] + parent = "community" + name = "GitLab" + identifier = "gitlab" + url = "https://github.com/open-power/" + post = "external link alternate icon" + weight = -1500 +[[navbar]] + parent = "community" + name = "Slack" + identifier = "slack" + url = "https://openpwoerfoundation.slack.com/" + post = "external link alternate icon" + weight = -1400 +[[navbar]] + parent = "community" + name = "Causeway" + identifier = "causeway" + url = "https://members.openpowerfoundation.org" + post = "external link alternate icon" + weight = -1300 + +[[navbar]] + name = "Events" + identifier = "events" + url = "/events/" + weight = -1600 + +[[navbar]] + name = "Groups" + identifier = "groups" + url = "/groups/" + weight = -1600 + +[[navbar]] + name = "Resources" + identifier = "resources" + url = "/resources/" + weight = -1600 +[[navbar]] + parent = "resources" + name = "Technical Specifications" + identifier = "technicalspecifications" + url = "/specifications/" + weight = -2900 +[[navbar]] + parent = "resources" + name = "Reference Designs" + identifier = "referencedesigns" + url = "/resources/referencedesigns/" + weight = -2800 +[[navbar]] + parent = "resources" + name = "OpenPOWER Ready" + identifier = "ready" + url = "/resources/ready/" + weight = -2700 +[[navbar]] + parent = "resources" + name = "OpenPOWER Use Cases" + identifier = "usecases" + url = "/resources/usecases/" + weight = -2600 diff --git a/config/_default/params.toml b/config/_default/params.toml new file mode 100644 index 0000000..5eca439 --- /dev/null +++ b/config/_default/params.toml @@ -0,0 +1,2 @@ +#[toparea] +# text = "Regional Conference - 4th June 2020 - Intelligent Platforms" diff --git a/config/development/params.toml b/config/development/params.toml new file mode 100644 index 0000000..a9c4341 --- /dev/null +++ b/config/development/params.toml @@ -0,0 +1,5 @@ +#!parms.toml +[forms.contact] + URI = "https://webscripts.vantosh.com/forms/contact/vantoshcom" +[forms.hub] + URI = "http://localhost:8080/forms/hub/test/opf" diff --git a/config/production/params.toml b/config/production/params.toml new file mode 100644 index 0000000..e57c437 --- /dev/null +++ b/config/production/params.toml @@ -0,0 +1,9 @@ +#!parms.toml +[analytics.piwik] + URL = "https://stats.vantosh.com" + ID = "69" +[forms.contact] + URI = "https://webscripts.vantosh.com/forms/contact/opfm" +[forms.hub] + URI = "https://webscripts.vantosh.com/forms/hub/prod/opf" + diff --git a/content/about/_index.md b/content/about/_index.md new file mode 100644 index 0000000..7ecdbbc --- /dev/null +++ b/content/about/_index.md @@ -0,0 +1,6 @@ +--- +title: "About" +navbar: about +date: 2021-03-03 +draft: false +--- diff --git a/content/about/missionstatement.md b/content/about/missionstatement.md new file mode 100644 index 0000000..649dd3a --- /dev/null +++ b/content/about/missionstatement.md @@ -0,0 +1,26 @@ +--- +title: "Mission Statement" +date: 2021-03-06 +draft: false +--- + +The OpenPOWER Foundation Board of Directors is chartered to set the tactical and strategic direction of the organization. +In this capacity the Board has ratified the Foundations Mission Statement and 2019 Focus Areas as follows: + +_"Through the growing open ecosystem of the POWER Architecture and its associated technologies, +the OpenPOWER Foundation facilitates its Members to share expertise, investment and intellectual property to serve the evolving needs of all end users."_ + +Focus Areas : + +Recognizing that truly valuable solutions come from both strong open core technologies and a community that supports same, +the OpenPOWER Foundation (OPF) will focus in 2019 on these key areas : + +- Building and engaging our Developer communities across multiple areas including Open Source Software, Academia, Cloud, HPC, ISVs and AI. + - Increasing geographical and informal collaborations/events for member-to-member communication. +- Through the technical Working Groups continuing to enable the technologies, specifications and project deliverables that underpin Foundation activities. + - Providing/Increasing enablement for integration and information sharing capabilities to ease the ability to develop and integrate technologies. +- Championing the solutions and offerings of Members by encouraging collaboration across the OPF membership and promoting these to the wider marketplace. + - Partnering with other Open Source and Industry organizations to broaden reach. +- Growing membership and engagement at all levels. + - Ensuring membership structure, budget, and activities support long-term sustainability of the foundation, demonstrate business value of membership, and encourage participation. + diff --git a/content/boardofdirectors/_index.md b/content/boardofdirectors/_index.md new file mode 100644 index 0000000..344caa9 --- /dev/null +++ b/content/boardofdirectors/_index.md @@ -0,0 +1,5 @@ +--- +title: "Board of Directors" +date: 2021-03-03 +draft: false +--- diff --git a/content/boardofdirectors/artemikoev.md b/content/boardofdirectors/artemikoev.md new file mode 100644 index 0000000..1b80dd3 --- /dev/null +++ b/content/boardofdirectors/artemikoev.md @@ -0,0 +1,7 @@ +--- +title: "Artem Ikoev" +position: "Chairman" +weight: 1 +date: 2021-03-03 +draft: false +--- diff --git a/content/boardofdirectors/hughblemings.md b/content/boardofdirectors/hughblemings.md new file mode 100644 index 0000000..369daf4 --- /dev/null +++ b/content/boardofdirectors/hughblemings.md @@ -0,0 +1,7 @@ +--- +title: "Hugh Bleming" +position: "Advisor" +weight: 9000 +date: 2021-03-03 +draft: false +--- diff --git a/content/boardofdirectors/jameshuang.md b/content/boardofdirectors/jameshuang.md new file mode 100644 index 0000000..daeb161 --- /dev/null +++ b/content/boardofdirectors/jameshuang.md @@ -0,0 +1,7 @@ +--- +title: "James Huang" +position: "Director" +weight: 1000 +date: 2021-03-03 +draft: false +--- diff --git a/content/boardofdirectors/jameskulina.md b/content/boardofdirectors/jameskulina.md new file mode 100644 index 0000000..a08cdef --- /dev/null +++ b/content/boardofdirectors/jameskulina.md @@ -0,0 +1,8 @@ +--- +title: "James Kulina" +position: "Executive Director" +member: linuxfoundation +weight: 100 +date: 2021-03-03 +draft: false +--- diff --git a/content/boardofdirectors/mendyfurmanek.md b/content/boardofdirectors/mendyfurmanek.md new file mode 100644 index 0000000..9cf0fa5 --- /dev/null +++ b/content/boardofdirectors/mendyfurmanek.md @@ -0,0 +1,7 @@ +--- +title: "Mendy Furmanek" +position: "President" +weight: 10 +date: 2021-03-03 +draft: false +--- diff --git a/content/boardofdirectors/sameershende.md b/content/boardofdirectors/sameershende.md new file mode 100644 index 0000000..14fbb83 --- /dev/null +++ b/content/boardofdirectors/sameershende.md @@ -0,0 +1,7 @@ +--- +title: "Sameer Shende" +position: Director +weight: 4000 +date: 2021-03-03 +draft: false +--- diff --git a/content/boardofdirectors/timansell.md b/content/boardofdirectors/timansell.md new file mode 100644 index 0000000..ac2da00 --- /dev/null +++ b/content/boardofdirectors/timansell.md @@ -0,0 +1,7 @@ +--- +title: "Tim Ansell" +position: Director +weight: 1000 +date: 2021-03-03 +draft: false +--- diff --git a/content/boardofdirectors/timothypearson.md b/content/boardofdirectors/timothypearson.md new file mode 100644 index 0000000..22ac2e2 --- /dev/null +++ b/content/boardofdirectors/timothypearson.md @@ -0,0 +1,7 @@ +--- +title: "Timothy Pearson" +position: "Director" +weight: 3000 +date: 2021-03-03 +draft: false +--- diff --git a/content/community/_index.md b/content/community/_index.md new file mode 100644 index 0000000..7ffafc0 --- /dev/null +++ b/content/community/_index.md @@ -0,0 +1,5 @@ +--- +title: "Community links" +date: 2021-03-15 +draft: false +--- diff --git a/content/events/_index.md b/content/events/_index.md new file mode 100644 index 0000000..96744a3 --- /dev/null +++ b/content/events/_index.md @@ -0,0 +1,5 @@ +--- +title: "OpenPOWER Foundation Event List" +date: 2021-03-11 +draft: false +--- diff --git a/content/events/openpowersummit19eu.md b/content/events/openpowersummit19eu.md new file mode 100644 index 0000000..6e3d2a2 --- /dev/null +++ b/content/events/openpowersummit19eu.md @@ -0,0 +1,7 @@ +--- +title: "OpenPOWER Summit EU 2019" +eventdate: 2019-10-31 +eventplace: "Lyon, France" +date: 2019-10-31 +draft: false +--- diff --git a/content/events/openpowersummit20na.md b/content/events/openpowersummit20na.md new file mode 100644 index 0000000..3c9fea1 --- /dev/null +++ b/content/events/openpowersummit20na.md @@ -0,0 +1,15 @@ +--- +title: "OpenPOWER Summit Virtual 2020" +eventdate: 2020-09-15 +eventlocation: "Virtual" +summary: "The OpenPOWER Summit North America is going virtual on September 15, 2020." +date: 2020-09-15 +draft: false +--- + + +The OpenPOWER Summit North America is going virtual on September 15, 2020. + +The event will bring open hardware and software developers, OpenPOWER Member companies, +researchers and academics across the ecosystem to share learnings, highlight innovation and discuss the future of OpenPOWER +in an online setting. Architects, developers, executives, and end users are all welcome. diff --git a/content/events/openpowersummit21.md b/content/events/openpowersummit21.md new file mode 100644 index 0000000..516ea77 --- /dev/null +++ b/content/events/openpowersummit21.md @@ -0,0 +1,7 @@ +--- +title: "OpenPOWER Summit Virtual 2021" +eventdate: 2021-09-15 +eventlocation: "Virtual" +date: 2021-03-18 +draft: false +--- diff --git a/content/groups/_index.md b/content/groups/_index.md new file mode 100644 index 0000000..973e5d5 --- /dev/null +++ b/content/groups/_index.md @@ -0,0 +1,15 @@ +--- +title: "Workgroup Overview" +date: 2021-03-06 +draft: false +--- + +At the foundation we have 2 different distinct types of working groups. + + +A __Technical Workgroup (TWG)__ is a workgroup that provides technical specifications and will help define next-generation of the specifications, +definitions, and the compliance of these specifications with primary output being specification documents. + + +A __Special Integration Group (SIG)__ is a workgroup that provides an implementation of technical specifications with the goal to produce reference designs. +A SIG will normally provide a reference design, a finished product, or help maintain project for direct usage. diff --git a/content/groups/accelerator.md b/content/groups/accelerator.md new file mode 100644 index 0000000..9de8ae2 --- /dev/null +++ b/content/groups/accelerator.md @@ -0,0 +1,12 @@ +--- +title: "Accelerator Workgroup" +wgtype: sig +chair: curtwollbrink +members: + - ibm + - vantosh + - yadro + - allancantle +date: 2021-03-15 +draft: false +--- diff --git a/content/groups/compliance.md b/content/groups/compliance.md new file mode 100644 index 0000000..1a3e8d8 --- /dev/null +++ b/content/groups/compliance.md @@ -0,0 +1,11 @@ +--- +title: "Compliance Workgroup" +wgtype: twg +chair: sandywoodward +members: + - ibm + - yadro + - vantosh +date: 2021-03-15 +draft: false +--- diff --git a/content/groups/hpc.md b/content/groups/hpc.md new file mode 100644 index 0000000..c7e2f00 --- /dev/null +++ b/content/groups/hpc.md @@ -0,0 +1,12 @@ +--- +title: "High-Performance-Computing Workgroup" +wgtype: sig +chair: allancantle +members: + - allancantle + - ibm + - innoboost + - yadro +date: 2021-03-15 +draft: false +--- diff --git a/content/groups/isa.md b/content/groups/isa.md new file mode 100644 index 0000000..47a65c2 --- /dev/null +++ b/content/groups/isa.md @@ -0,0 +1,13 @@ +--- +title: "Instruction Set Architecture Workgroup" +wgtype: twg +chair: paulmackerras +members: + - ibm + - yadro + - raptorcomputingsystems +date: 2021-03-07 +draft: false +--- + +The OpenPOWER ISA Technical Workgroup is the workgroup that governs over the POWER ISA specifications. diff --git a/content/groups/librebmc.md b/content/groups/librebmc.md new file mode 100644 index 0000000..5ee33b1 --- /dev/null +++ b/content/groups/librebmc.md @@ -0,0 +1,14 @@ +--- +title: "LibreBMC Workgroup" +wgtype: sig +chair: paullecocq +members: + - ibm + - google + - antmicro + - raptorcomputingsystems + - vantosh + - yadro +date: 2021-03-15 +draft: false +--- diff --git a/content/groups/machinelearning.md b/content/groups/machinelearning.md new file mode 100644 index 0000000..72728f9 --- /dev/null +++ b/content/groups/machinelearning.md @@ -0,0 +1,13 @@ +--- +title: "Machine Learning AI Work Group" +wgtype: sig +chair: lionelclavien +members: + - innoboost + - google + - ibm + - vantosh + - yadro +date: 2021-03-15 +draft: false +--- diff --git a/content/groups/memory.md b/content/groups/memory.md new file mode 100644 index 0000000..3e1ffca --- /dev/null +++ b/content/groups/memory.md @@ -0,0 +1,11 @@ +--- +title: "Memory Workgroup" +wgtype: twg +chair: pierreluccantin +members: + - ibm + - google + - vantosh +date: 2021-03-15 +draft: false +--- diff --git a/content/groups/powerpi.md b/content/groups/powerpi.md new file mode 100644 index 0000000..67ba2bb --- /dev/null +++ b/content/groups/powerpi.md @@ -0,0 +1,12 @@ +--- +title: "PowerPi Workgroup" +wgtype: sig +chair: yehowshuaimmanuel +members: + - ibm + - yadro + - vantosh + - chipeleven +date: 2021-03-15 +draft: false +--- diff --git a/content/groups/systemsoftware.md b/content/groups/systemsoftware.md new file mode 100644 index 0000000..d11c779 --- /dev/null +++ b/content/groups/systemsoftware.md @@ -0,0 +1,13 @@ +--- +title: "System Software Workgroup" +wgtype: twg +chair: klauskiwi +members: + - ibm + - vantosh + - yadro + - 3mdeb + - stevenmunroe +date: 2021-03-15 +draft: false +--- diff --git a/content/hub/_index.md b/content/hub/_index.md new file mode 100644 index 0000000..a4bb10a --- /dev/null +++ b/content/hub/_index.md @@ -0,0 +1,9 @@ +--- +title: "Hub providers" +date: 2020-03-10 +draft: false +--- + +Here is a list of OpenPOWER Hub providers. +These providers give you access to OpenPOWER hardware to enable you to get acquinted with the OpenPOWER platform. +Each provider has it's specific setup and you can request access to the OPF Hub through our OPF Hub Request Form. diff --git a/content/hub/oregonstateuniversity.md b/content/hub/oregonstateuniversity.md new file mode 100644 index 0000000..66992f6 --- /dev/null +++ b/content/hub/oregonstateuniversity.md @@ -0,0 +1,10 @@ +--- +title: "OSU Open Source Lab" +member: oregonstateuniversity +provides: + - virtual + - container + - gpu +date: 2021-03-11 +draft: false +--- diff --git a/content/hub/raptorcomputingsystems.md b/content/hub/raptorcomputingsystems.md new file mode 100644 index 0000000..2d7a4f4 --- /dev/null +++ b/content/hub/raptorcomputingsystems.md @@ -0,0 +1,9 @@ +--- +title: "Raptor IntegriCloud" +member: raptorcomputingsystems +provides: + - virtual + - container +date: 2020-03-11 +draft: false +--- diff --git a/content/hub/universityoforegon.md b/content/hub/universityoforegon.md new file mode 100644 index 0000000..f7806f1 --- /dev/null +++ b/content/hub/universityoforegon.md @@ -0,0 +1,10 @@ +--- +title: "University of Oregon Exascale Computing Center" +member: universityoforegon +provides: + - virtual + - container + - gpu +date: 2021-03-11 +draft: false +--- diff --git a/content/hub/vantosh.md b/content/hub/vantosh.md new file mode 100644 index 0000000..bea4026 --- /dev/null +++ b/content/hub/vantosh.md @@ -0,0 +1,9 @@ +--- +title: "VanTosh OpenPOWER Hub" +member: vantosh +provides: + - virtual + - container +date: 2020-03-10 +draft: false +--- diff --git a/content/members/_index.md b/content/members/_index.md new file mode 100644 index 0000000..3290648 --- /dev/null +++ b/content/members/_index.md @@ -0,0 +1,7 @@ +--- +title: "Current Member List" +date: 2021-03-03 +draft: false +--- + +Our current members listed by membership levels : diff --git a/content/members/allancantle.md b/content/members/allancantle.md new file mode 100644 index 0000000..8355391 --- /dev/null +++ b/content/members/allancantle.md @@ -0,0 +1,8 @@ +--- +title: "Allan Cantle" +level: individual +country: "United States of America" +joined: 2020 +date: 2021-03-15 +draft: false +--- diff --git a/content/members/antmicro.md b/content/members/antmicro.md new file mode 100644 index 0000000..bba9feb --- /dev/null +++ b/content/members/antmicro.md @@ -0,0 +1,9 @@ +--- +title: "Antmicro" +level: silver +image: antmicro.png +country: "Poland" +joined: 2020 +date: 2021-03-15 +draft: false +--- diff --git a/content/members/become.md b/content/members/become.md new file mode 100644 index 0000000..338332b --- /dev/null +++ b/content/members/become.md @@ -0,0 +1,6 @@ +--- +title: "Become an OpenPOWER Foundation member" +date: 2021-03-02 +form: true +draft: false +--- diff --git a/content/members/credativ.md b/content/members/credativ.md new file mode 100644 index 0000000..244525c --- /dev/null +++ b/content/members/credativ.md @@ -0,0 +1,7 @@ +--- +title: "Credativ" +#image: credativ-logo.png +level: silver +date: 2021-03-02 +draft: false +--- diff --git a/content/members/google.md b/content/members/google.md new file mode 100644 index 0000000..48af50e --- /dev/null +++ b/content/members/google.md @@ -0,0 +1,9 @@ +--- +title: "Google" +image: "google.png" +level: platinum +country: "United States of America" +joined: 2013 +date: 2021-03-02 +draft: false +--- diff --git a/content/members/hitachi.md b/content/members/hitachi.md new file mode 100644 index 0000000..f8a540c --- /dev/null +++ b/content/members/hitachi.md @@ -0,0 +1,9 @@ +--- +title: "Hitachi" +image: "hitachi.png" +#link: +level: gold +joined: 2014 +date: 2021-03-02 +draft: false +--- diff --git a/content/members/ibm.md b/content/members/ibm.md new file mode 100644 index 0000000..6842842 --- /dev/null +++ b/content/members/ibm.md @@ -0,0 +1,11 @@ +--- +title: "IBM" +image: "ibm.png" +level: platinum +joined: 2013 +link: "https://www.ibm.com" +date: 2021-03-02 +draft: false +--- + +IBM, International Business Machines, the company that started the POWER architecture and a core member of the OpenPOWER foundation. diff --git a/content/members/innoboost.md b/content/members/innoboost.md new file mode 100644 index 0000000..429b901 --- /dev/null +++ b/content/members/innoboost.md @@ -0,0 +1,10 @@ +--- +title: "InnoBoost" +image: innoboost.png +level: silver +link: "https://www.inno-boost.com" +country: "Switzerland" +joined: 2016 +date: 2021-03-15 +draft: false +--- diff --git a/content/members/inspurpowersystems.md b/content/members/inspurpowersystems.md new file mode 100644 index 0000000..5ee7742 --- /dev/null +++ b/content/members/inspurpowersystems.md @@ -0,0 +1,9 @@ +--- +title: "Inspur Power Systems" +image: "inspur-power-systems.png" +level: platinum +country: "China" +joined: 2017 +date: 2021-03-03 +draft: false +--- diff --git a/content/members/oregonstateuniversity.md b/content/members/oregonstateuniversity.md new file mode 100644 index 0000000..b7bc2ca --- /dev/null +++ b/content/members/oregonstateuniversity.md @@ -0,0 +1,7 @@ +--- +title: "Oregon State University" +image: "oregonstateuniversity.png" +level: academic +date: 2021-03-03 +draft: false +--- diff --git a/content/members/raptorcomputingsystems.md b/content/members/raptorcomputingsystems.md new file mode 100644 index 0000000..f9bfdcb --- /dev/null +++ b/content/members/raptorcomputingsystems.md @@ -0,0 +1,9 @@ +--- +title: "Raptor Computing Systems" +image: "raptorcomputingsystems.png" +level: silver +country: "United States of America" +joined: 2018 +date: 2021-03-03 +draft: false +--- diff --git a/content/members/redhat.md b/content/members/redhat.md new file mode 100644 index 0000000..ec242bd --- /dev/null +++ b/content/members/redhat.md @@ -0,0 +1,9 @@ +--- +name: "Red Hat" +image: "redhat.png" +level: gold +country: "United States of America" +joined: 2017 +date: 2021-03-02 +draft: false +--- diff --git a/content/members/stevenmunroe.md b/content/members/stevenmunroe.md new file mode 100644 index 0000000..ff410ce --- /dev/null +++ b/content/members/stevenmunroe.md @@ -0,0 +1,8 @@ +--- +title: "Steven Munroe" +level: individual +country: "United States of America" +joined: 2017 +date: 2021-03-15 +draft: false +--- diff --git a/content/members/universityoforegon.md b/content/members/universityoforegon.md new file mode 100644 index 0000000..4638d03 --- /dev/null +++ b/content/members/universityoforegon.md @@ -0,0 +1,8 @@ +--- +title: "University of Oregon" +image: "universityoforegon.jpg" +level: academic +country: "United States of America" +date: 2021-03-03 +draft: false +--- diff --git a/content/members/vantosh.md b/content/members/vantosh.md new file mode 100644 index 0000000..00bfd72 --- /dev/null +++ b/content/members/vantosh.md @@ -0,0 +1,10 @@ +--- +title: "VanTosh" +image: "vantosh.png" +country: "Belgium" +link: "https://www.vantosh.com/?opf" +level: silver +joined: 2017 +date: 2021-03-02 +draft: false +--- diff --git a/content/members/wistron.md b/content/members/wistron.md new file mode 100644 index 0000000..a5e1cbf --- /dev/null +++ b/content/members/wistron.md @@ -0,0 +1,9 @@ +--- +title: "Wistron" +#image: +#link +level: silver +joined: 2014 +date: 2021-03-15 +draft: false +--- diff --git a/content/members/yadro.md b/content/members/yadro.md new file mode 100644 index 0000000..b3f46dd --- /dev/null +++ b/content/members/yadro.md @@ -0,0 +1,13 @@ +--- +title: "YADRO" +image: "yadro.png" +level: platinum +country: Russia +joined: 2015 +link: "https://www.yadro.com/" +date: 2021-03-02 +draft: false +--- + +YADRO is the absolute leader on the market of enterprise storage systems and holds a leading position in the high-performance server segment in Russia. +A domestic vendor has never before placed this high in the segments of the Russian market historically dominated by the large global vendors. diff --git a/content/persons/_index.md b/content/persons/_index.md new file mode 100644 index 0000000..2eea61a --- /dev/null +++ b/content/persons/_index.md @@ -0,0 +1,5 @@ +--- +title: "Key person of OpenPOWER Foundation" +date: 2021-03-03 +draft: false +--- diff --git a/content/persons/allancantle.md b/content/persons/allancantle.md new file mode 100644 index 0000000..08bbf99 --- /dev/null +++ b/content/persons/allancantle.md @@ -0,0 +1,14 @@ +--- +title: "Allan Cantle" +image: allancantle.jpg +member: allancantle +date: 2021-03-15 +draft: false +--- + +Allan Cantle currently is the CEO of Nallasway, a consulting Company in the area of Distributed, Heterogeneous, High Performance Computing Solutions. +Most recently, Allan was CTO of the I.S.I. group in Molex from 2018 to July 2020 after Nallatech was acquired by Molex along with BittWare. +Prior, Allan founded Nallatech where he resided for 25 years and held two positions; +CEO from 1993 thru 2005 where he had full P&L responsibility growing Nallatech's revenue at a 50% CAGR, and, +President and Founder from 2006 to 2018 where he was responsible for Nallatech's Product Roadmap based +around solving real application problems with the best heterogeneous computing solutions. diff --git a/content/persons/artemikoev.md b/content/persons/artemikoev.md new file mode 100644 index 0000000..1cff73e --- /dev/null +++ b/content/persons/artemikoev.md @@ -0,0 +1,13 @@ +--- +title: "Artem Ikoev" +member: "yadro" +image: "artemikoev.jpg" +date: 2021-03-03 +draft: false +--- + +Artem Ikoev is co-founder and technology visioner of YADRO Company. +Artem serves the role of CTO and he is responsible for company technology strategy and product development. +He manages software & hardware engineering and product teams in total of 160+ employees and demonstrates strong leadership and +encourages talents for continuous technology disruption. +Prior to YADRO Artem held a number of technical & business development positions in international companies with overall 20 years industry experience. diff --git a/content/persons/hughblemings.md b/content/persons/hughblemings.md new file mode 100644 index 0000000..f08d408 --- /dev/null +++ b/content/persons/hughblemings.md @@ -0,0 +1,16 @@ +--- +title: "Hugh Blemming" +image: "hughblemings.jpg" +member: individual +date: 2021-03-13 +draft: false +--- + +Hugh has had a long standing association with Free and Open Source Software, Open Hardware and POWER. +His career has spanned everything from Linux kernel development to engineering team management, +electronics design to product management at the likes of IBM, Canonical and Rackspace. +He has previously served as President on the Council of Linux Australia and on the Linux Foundation's Technical Advisory Board among other roles. + + +Based in Melbourne, Australia, Hugh served as the Executive Director of the OpenPOWER Foundation from November 2017 to May 2020 +and remains passionately involved in the OpenPOWER ecosystem in a voluntary capacity as a Board Advisor an individual contributor. diff --git a/content/persons/jameshuang.md b/content/persons/jameshuang.md new file mode 100644 index 0000000..d7d337c --- /dev/null +++ b/content/persons/jameshuang.md @@ -0,0 +1,13 @@ +--- +title: "James Huang" +member: inspurpowersystems +image: "jameshuang.jpg" +date: 2021-03-03 +draft: false +--- + +James is the Deputy G.M. of Inspur Power Systems Co., Ltd, which is a joint venture between Inspur(51%) and IBM(49%). +At IPS he leads OpenPOWER product planning, development, supply chain management and after-sales service. +Since the JV opened in 2018, IPS has successfully developed a rich OpenPOWER product portfolio and achieved great market success in China. +James has worked in server system design for Inspur more than 20 years, skilled in high-end server architecture design and UEFI BIOS, +BMC firmware development. diff --git a/content/persons/jameskulina.md b/content/persons/jameskulina.md new file mode 100644 index 0000000..fd7414b --- /dev/null +++ b/content/persons/jameskulina.md @@ -0,0 +1,16 @@ +--- +title: "James Kulina" +image: "jameskulina.jpg" +member: "openpowerfoundation" +date: 2021-03-03 +draft: false +--- + +James is Executive Director of the OpenPower Foundation, with over 10 years of open source experience across +hardware, software, and network engineering disciplines. +James brings a passion for open source and is committed to growing OpenPower Foundation's membership, community, and ecosystem. +He is a serial entrepreneur with a background in enterprise technology and has worked in roles spanning operations, +business development, product management, and engineering. +Previously, James was co-founder and COO at Hyper.sh, an open source cloud-native virtualization startup acquired by Ant Financial. +Prior to that, he led product management in Red Hat's OpenStack group, and was a product lead on AT&T's first OpenStack Cloud. +James graduated from University of Virginia with a degree in Electrical Engineering and is based in New York. diff --git a/content/persons/klauskiwi.md b/content/persons/klauskiwi.md new file mode 100644 index 0000000..a4a9331 --- /dev/null +++ b/content/persons/klauskiwi.md @@ -0,0 +1,7 @@ +--- +title: "Klaus Kiwi" +#image: +member: ibm +date: 2021-03-06 +draft: false +--- diff --git a/content/persons/lionelclavien.md b/content/persons/lionelclavien.md new file mode 100644 index 0000000..55f9c32 --- /dev/null +++ b/content/persons/lionelclavien.md @@ -0,0 +1,6 @@ +--- +title: "Lionel Clavien" +member: innoboost +date: 2021-03-16 +draft: false +--- diff --git a/content/persons/mendyfurmanek.md b/content/persons/mendyfurmanek.md new file mode 100644 index 0000000..b166938 --- /dev/null +++ b/content/persons/mendyfurmanek.md @@ -0,0 +1,17 @@ +--- +title: "Mendy Furmanek" +image: "mendyfermanuk.jpg" +member: ibm +date: 2021-03-03 +draft: false +--- + +Mendy Furmanek is the IBM Director of OpenPOWER Processor Enablement where she drives IBM partnerships in chip development as well as OpenCAPI partner enablement. +Mendy received a BSEE with a double major in Electrical/Computer Engineering and Computer Science from Duke University in 2001. +She also studied at the University of Madrid for her Spanish degree and the University of Queensland as part of her BSEE. +She first joined IBM in 2000 as a design and verification intern on POWER4 and has been part of the IBM processor development team ever since. +Mendy's expertise is in pre-silicon verification and led the development of a premier multi-hundred global verification team responsible for POWER, Z, and IBM System ASICs. +While focused in verification she has experience across all aspects of chip development. +She managed the overall delivery of POWER8 and then moved to her current executive role in OpenPOWER at the end of 2015. +Concurrently with becoming President of the OpenPOWER Foundation in 2019 Mendy led the opening of the POWER Instruction Set Architecture (ISA). +Mendy has a passion for the open hardware movement and is excited about the opportunities it presents for the industry. diff --git a/content/persons/paullecocq.md b/content/persons/paullecocq.md new file mode 100644 index 0000000..29feeef --- /dev/null +++ b/content/persons/paullecocq.md @@ -0,0 +1,6 @@ +--- +title: "Paul Lecocq" +member: ibm +date: 2021-03-15 +draft: false +--- diff --git a/content/persons/paulmackerras.md b/content/persons/paulmackerras.md new file mode 100644 index 0000000..b3352bb --- /dev/null +++ b/content/persons/paulmackerras.md @@ -0,0 +1,7 @@ +--- +title: "Paul Mackerras" +image: +member: ibm +date: 2021-03-06 +draft: false +--- diff --git a/content/persons/pierreluccantin.md b/content/persons/pierreluccantin.md new file mode 100644 index 0000000..4a498a3 --- /dev/null +++ b/content/persons/pierreluccantin.md @@ -0,0 +1,7 @@ +--- +title: "Pierre-Luc Cantin" +#image: +member: google +date: 2021-03-15 +draft: false +--- diff --git a/content/persons/sameershende.md b/content/persons/sameershende.md new file mode 100644 index 0000000..b5c12cb --- /dev/null +++ b/content/persons/sameershende.md @@ -0,0 +1,17 @@ +--- +title: "Sameer Shende" +image: "sameershende.jpg" +member: universityoforegon +date: 2021-03-03 +draft: false +--- + +Sameer Shende serves as the lead developer of the TAU Performance System, Program Database Toolkit (PDT), HPCLinux, +and Extreme-Scale Scientific Software Stack (E4S.io). +His research interests include performance instrumentation, measurement, and analysis tools for HPC. +He has extensive experience working on the OpenPOWER platform. +He has recently been appointed the Level 4 lead for the Exascale Computing Project (ECP), +Programming Models and Runtime (PMR) SDK area at the University of Oregon where he is leading the effort to provide +ECP Software Technology (ST) products in a container environment for HPC. +He has served as the the chair of the Performance Measurement, Modeling, +and Tools track at SC17 and the co-chair for the technical program at the ICPP 2017 conferences. diff --git a/content/persons/sandywoodward.md b/content/persons/sandywoodward.md new file mode 100644 index 0000000..1c2d205 --- /dev/null +++ b/content/persons/sandywoodward.md @@ -0,0 +1,6 @@ +--- +title: "Sandy Woodward" +member: ibm +date: 2021-03-15 +draft: false +--- diff --git a/content/persons/timansell.md b/content/persons/timansell.md new file mode 100644 index 0000000..83d6708 --- /dev/null +++ b/content/persons/timansell.md @@ -0,0 +1,8 @@ +--- +title: "Tim Ansell" +nickname: "mithro" +image: "timansell.jpg" +member: google +date: 2021-03-13 +draft: false +--- diff --git a/content/persons/timothypearson.md b/content/persons/timothypearson.md new file mode 100644 index 0000000..6601bda --- /dev/null +++ b/content/persons/timothypearson.md @@ -0,0 +1,12 @@ +--- +title: "Timothy Pearson" +image: "timothypearson.jpg" +member: "raptorcomputingsystems" +date: 2021-03-03 +draft: false +--- + +Timothy has worked in multiple areas of high performance systems design over the past 15 years, +from hardware / firmware to kernel and application development, with a strong emphasis on open solutions and system security. +In his time at Raptor he has been heavily involved in the inception and creation of the Talos and Blackbird lines of secure, +owner-controlled OpenPOWER machines, along with the FlexVer remote attestation technology. diff --git a/content/persons/toshaanbharvani.md b/content/persons/toshaanbharvani.md new file mode 100644 index 0000000..919c2b5 --- /dev/null +++ b/content/persons/toshaanbharvani.md @@ -0,0 +1,20 @@ +--- +title: "Toshaan Bharvani" +image: toshaanbharvani.jpg +nickname: toshywoshy +member: vantosh +date: 2021-03-03 +draft: false +--- + +Toshaan Bharvani is a IT consultant and currently CTO at VanTosh, from Antwerp, Belgium. He has a interest in Open Source Software and IT Hardware. +He started his IT interest at a very early age, when his father gave him his first own PC components. +Ever since he has been interested in IT hardware and software. +Toshaan started working for an IT reseller and learned a lot about the hardware part, ranging from motherboard designs, +to assembly process and to technical hardware reselling. +In business, he tends to combine higher level applications with lower level systems. +Toshaan has been involved in open source projects and communities, and focuses on hardware and software, +porting and optimizing software, running cloud and container platforms. + +VanTosh has been a member of the OpenPOWER Foundation from 2017, and Toshaan has been around the POWER platform since POWER5. +He was elected Chair of the Technical Steering Committee in September 2020. diff --git a/content/ready/powerel7.md b/content/ready/powerel7.md new file mode 100644 index 0000000..65b4f5e --- /dev/null +++ b/content/ready/powerel7.md @@ -0,0 +1,17 @@ +--- +title: "PowerEL 7" +vendor: "VanTosh" +link: "https://www.powerel.org/?opf" +date: 2020-01-13 +draft: false +--- + + +PowerEL stands for Power Enterprise Linux, +it originates from a requirement to have a fully free open source distribution for the IBM POWER 8 and higher platform. +The distribution takes it's inspiration and origin from various Open Source Enterprise Linux distributions such as +Red Hat, CentOS, Oracle Linux, Fedora, SuSE, and others. +PowerEL has been optimized for specific CPU features, +such as IBM Power8 or higher and Intel x86 AVX or higher, so it only works on cpu's with at least this set of features available. +PowerEL provides a very convenient way of more packages out of the box. +PowerEL uses the distro tag pel and uses the same ABI as the open source rhel based systems, so you can use existing binaries on PowerEL. diff --git a/content/specifications/64bitelfv2abi.md b/content/specifications/64bitelfv2abi.md new file mode 100644 index 0000000..f87e457 --- /dev/null +++ b/content/specifications/64bitelfv2abi.md @@ -0,0 +1,35 @@ +--- +title: "64-bit ELF v2 ABI Specification for OpenPOWER Architecture" +version: 1.4 +publicreview: false +date: 2021-03-15 +draft: false +--- + + +The ABI (application binary interface) specification provides the definitions for the machine interface and +inter-object interfaces for the little-endian POWER architecture. + +This specification defines the OpenPOWER ELF v2 ABI which is derived from and represents the first major update to the Power ABI +since the original release of the IBM® RS/6000® ABI. +It was developed to make extensive use of new functions available in OpenPOWER-compliant processors. +It expects an OpenPOWER-compliant processor to implement at least Power ISA v2.07B with all OpenPOWER Architecture instruction categories +as well as OpenPOWER-defined implementation characteristics for some implementation-specific features. + +The Executable and Linking Format (ELF) defines a linking interface for executables and shared objects in two parts : +the first part is the generic System V ABI, the second part is a processor-specific supplement. +This document, the OpenPOWER ABI for Linux Supplement for the Power Architecture 64-bit ELF V2 ABI, +is the OpenPOWER-compliant processor-specific supplement for use with ELF V2 on 64-bit IBM Power Architecture® systems. +This is not a complete System V ABI supplement because it does not define any library interfaces. +This document establishes both big-endian and little-endian application binary interfaces. +OpenPOWER-compliant processors in the 64-bit Power Architecture can execute in either big-endian or little-endian mode. +Executables and executable-generated data (in general) that subscribes to either byte ordering is not portable to a system running in the other mode. + + +ERRATA: +An OpenPOWER ELFv2 Errata: For ELFv2 ABI Version 1.4 has been published. These errata should be considered part of this specification until such time as a newer version of the full specification is published. +This document is a Standards Track, Work Group work product owned by the System Software Workgroup and handled in compliance with the requirements outlined in the OpenPOWER Foundation Work Group (WG) Process document. It was created using the Master Template Guide version 1.0. + +Comments, questions, etc. can be submitted to the public mailing list for this document at + +. diff --git a/content/specifications/_index.md b/content/specifications/_index.md new file mode 100644 index 0000000..fe3e846 --- /dev/null +++ b/content/specifications/_index.md @@ -0,0 +1,9 @@ +--- +title: "Technical Specifications" +date: 2021-03-22 +outputs: + - html + - rss + - json +draft: false +--- diff --git a/content/specifications/pviprcompliance.md b/content/specifications/pviprcompliance.md new file mode 100644 index 0000000..2a7d297 --- /dev/null +++ b/content/specifications/pviprcompliance.md @@ -0,0 +1,26 @@ +--- +title: "PVIPR Compliance Specification" +discoursetopic: "/pvipr-compliance-specification-feedback/" +date: 2021-03-22 +draft: false +--- + +This document provides requirements for a compiler to demonstrate compliance with the Power Vector Intrinsics Programming Reference, version 1.0. + +This document is a Standard Track, Workgroup Specification work product owned by the Compliance Workgroup +and handled in compliance with the requirements outlined in the OpenPOWER Foundation Work Group (WG) Process document. +Comments, questions, etc. can be submitted to the public mailing list for the parent specification at +. + +The input to this specification is the following specification which describes the vector intrinsics expected to be provided +by compilers targeting PowerISA 2.07 and 3.0B or later, as implemented on POWER8 and POWER9 systems. + +Power Vector Intrinsics Programming Reference (PVIPR) which is published on the resource catalog: +https://openpowerfoundation.org/?resource_lib=power-vector-intrinsic-programming-reference + +The PVIPR document is organized into the following chapters: +1. Introduction to Vector Programming on Power +2. The Power Bi-Endian Vector Programming Model +3. Vector Programming Techniques +4. Vector Intrinsic Reference +5. Instruction/Intrinsic Cross-Reference diff --git a/content/steeringcommittee/_index.md b/content/steeringcommittee/_index.md new file mode 100644 index 0000000..8a9750a --- /dev/null +++ b/content/steeringcommittee/_index.md @@ -0,0 +1,22 @@ +--- +title: "Steering Committee" +date: 2021-03-13 +draft: false +--- + +The Steering Committee (TSC) of OpenPOWER is composed of the chair of each OpenPOWER Work Group as well as a delegate from each of its Platinum Members. +Each member of the OpenPOWER TSC shall serve for a two-year term. +The operation of the TSC is governed by rules of process approved by the Board and led by an elected TSC chairman. + +Responsibilities of the TSC include: + +- Recommending the charter of new Work Groups to the Board; including scope of work and confidentiality level +- Resolving technical conflicts within and between Work Groups +- Evaluating requests for inter-project collaboration and recommending the chartering of new Work Groups to facilitate such collaboration +- Monitoring the technical progress of Work groups +- Approving OpenPOWER Standards Final Deliverables +- Establishing OpenPOWER Standards Final Deliverable quality standards, technical best practices and release dates +- Approving changes by Work Groups to OSS Communities and OSS Licenses in the Work Group's charter, + and under section 3.5 of the Intellectual Property Rights Policy +- Regularly reporting on progress of Work Groups to the Board + diff --git a/content/steeringcommittee/toshaanbharvani.md b/content/steeringcommittee/toshaanbharvani.md new file mode 100644 index 0000000..cdfa336 --- /dev/null +++ b/content/steeringcommittee/toshaanbharvani.md @@ -0,0 +1,6 @@ +--- +title: "Toshaan Bharvani" +position: "Steering Committee Chair" +date: 2021-03-03 +draft: false +--- diff --git a/data/hub/accesstype.yaml b/data/hub/accesstype.yaml new file mode 100644 index 0000000..11c74ac --- /dev/null +++ b/data/hub/accesstype.yaml @@ -0,0 +1,3 @@ +- name: "Bare Metal" +- name: "Virtual Machine" +- name: "Container" diff --git a/data/hub/additions.yaml b/data/hub/additions.yaml new file mode 100644 index 0000000..2ea9b75 --- /dev/null +++ b/data/hub/additions.yaml @@ -0,0 +1,3 @@ +- name: "None" +- name: "FPGA" +- name: "GPU" diff --git a/data/memberlevels.yaml b/data/memberlevels.yaml new file mode 100644 index 0000000..91bc140 --- /dev/null +++ b/data/memberlevels.yaml @@ -0,0 +1,24 @@ +- name: Platinum + identifier: platinum + size: 300x300 + col: 6 +- name: Gold + identifier: gold + size: 200x200 + col: 4 +- name: Silver + identifier: silver + size: 150x150 + col: 3 +- name: Academic + identifier: academic + size: 100x100 + col: 2 +- name: Associate + identifier: associate + size: 100x100 + col: 2 +- name: Individual + identifier: individual + size: 1x1 + col: 1 diff --git a/data/specifications/64bitelfv2abi.yaml b/data/specifications/64bitelfv2abi.yaml new file mode 100644 index 0000000..999d37f --- /dev/null +++ b/data/specifications/64bitelfv2abi.yaml @@ -0,0 +1,16 @@ +versions: + - number: "1.0" + date: "2014-07-21" + description: "Initial release." + - number: "1.1" + date: "2015-07-15" + description: "Incorporate errata." + - number: "1.2" + date: "2016-06-13" + description: "POWER8 errata" + - number: "1.3" + date: "2016-06-13" + description: "POWER9 errata" + - number: "1.4" + date: "2020-01-13" + description: "Conversion from FrameMaker to DocBook, minor corrections." diff --git a/data/specifications/pviprcompliance.yaml b/data/specifications/pviprcompliance.yaml new file mode 100644 index 0000000..879df12 --- /dev/null +++ b/data/specifications/pviprcompliance.yaml @@ -0,0 +1,7 @@ +versions: + - number: 0.1 + description: "Original draft" + - number: 0.5 + description: "Incorporate workgroup comments" + - number: 1.0 + description: "Initial release" diff --git a/data/workgroups.yaml b/data/workgroups.yaml new file mode 100644 index 0000000..526c90c --- /dev/null +++ b/data/workgroups.yaml @@ -0,0 +1,6 @@ +- name: "Technical Working Group" + id: twg + color: "#0000ff" +- name: "Special Integration Working Group" + id: sig + color: "#ff0000" diff --git a/themes/openpowerfoundation/LICENSE.md b/themes/openpowerfoundation/LICENSE.md new file mode 100644 index 0000000..10388ae --- /dev/null +++ b/themes/openpowerfoundation/LICENSE.md @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2018 Toshaan Bharvani + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/themes/openpowerfoundation/assets/css/changelog.scss b/themes/openpowerfoundation/assets/css/changelog.scss new file mode 100644 index 0000000..9a867a4 --- /dev/null +++ b/themes/openpowerfoundation/assets/css/changelog.scss @@ -0,0 +1,146 @@ +.changelog { + white-space: nowrap; + overflow-x: hidden; + margin: 10px 0px 10px 0px; +} +.changelog ol { + font-size: 0; + width: 100vw; + padding: 100px 0; + transition: all 1s; +} +.changelog ol li { + position: relative; + display: inline-block; + list-style-type: none; + width: 160px; + height: 3px; + background: #000000; +} +.changelog ol li:last-child { + width: 280px; +} +.changelog ol li:not(:first-child) { + margin-left: 14px; +} +.changelog ol li:not(:last-child)::after { + content: ''; + position: absolute; + top: 50%; + left: calc(100% + 1px); + bottom: 0; + width: 12px; + height: 12px; + transform: translateY(-50%); + background: #007aad; +} +.changelog ol li div { + position: absolute; + left: calc(100% + 7px); + width: 200px; + padding: 15px; + font-size: 1rem; + white-space: normal; + color: white; + background: #007aad; +} +.changelog ol li div::before { + content: ''; + position: absolute; + top: 100%; + left: 0; + width: 0; + height: 0; + border: 2px solid #007aad; +} +.changelog ol li:nth-child(odd) div { + top: -16px; + transform: translateY(-100%); +} +.changelog ol li:nth-child(odd) div::before { + top: 100%; + border-width: 8px 8px 0 0; + border-color: #007aad transparent transparent transparent; +} +.changelog ol li:nth-child(even) div { + top: calc(100% + 16px); +} +.changelog ol li:nth-child(even) div::before { + top: -8px; + border-width: 8px 0 0 8px; + border-color: transparent transparent transparent #007aad; +} +.changelog #version { + display: block; + font-size: 1.2rem; + font-weight: bold; + //margin-bottom: 8px; +} +.changelog #description { + display: block; + font-size: 0.7rem; + margin-bottom: 8px; +} +.changelog .arrows { + display: flex; + justify-content: center; + margin-bottom: 20px; +} +.changelog .arrows .arrow__prev { + margin-right: 20px; +} +.changelog .disabled { + opacity: .5; +} +.changelog .arrows img { + width: 45px; + height: 45px; +} + +@media screen and (max-width: 599px) { + .changelog ol, + .changelog ol li { + width: auto; + } + .changelog ol { + padding: 0; + transform: none !important; + } + .changelog ol li { + display: block; + height: auto; + background: transparent; + } + .changelog ol li:first-child { + margin-top: 25px; + } + .changelog ol li:not(:first-child) { + margin-left: auto; + } + .changelog ol li div { + width: 94%; + height: auto !important; + margin: 0 auto 25px; + } + .changelog ol li div { + position: static; + } + .changelog ol li:nth-child(odd) div { + transform: none; + } + .changelog ol li:nth-child(odd) div::before, + .changelog ol li:nth-child(even) div::before { + left: 50%; + top: 100%; + transform: translateX(-50%); + border: none; + border-left: 1px solid white; + height: 25px; + } + .changelog ol li:last-child, + .changelog ol li:nth-last-child(2) div::before, + .changelog ol li:not(:last-child)::after, + .changelog .arrows { + display: none; + } +} diff --git a/themes/openpowerfoundation/assets/css/style.css b/themes/openpowerfoundation/assets/css/style.css new file mode 100644 index 0000000..4285bad --- /dev/null +++ b/themes/openpowerfoundation/assets/css/style.css @@ -0,0 +1,1325 @@ +body { + background: #ffffff; + color: #000000; + font-family: "Open Sans", sans-serif; + overflow-x: hidden; +} +::selection { + color: #ffffff; + background: #007aad; +} +::-moz-selection { + color: #ffffff; + background: #007aad; +} +a { + color: #007aad; + transition: 0.5s; +} +a:hover, a:active, a:focus { + color: #007aad; + outline: none; + text-decoration: none; +} +p { + padding: 0; + margin: 0 0 30px 0; +} +h1, h2, h3, h4, h5, h6 { + font-family: "Montserrat", sans-serif; + font-weight: 400; + margin: 0 0 20px 0; + padding: 0; +} + +.back-to-top { + position: fixed; + display: none; + background: #ffffff; + color: #fff; + padding: 2px 20px 8px 20px; + font-size: 16px; + border-radius: 4px 4px 0 0; + right: 15px; + bottom: 0; + transition: none; +} +.back-to-top:focus { + background: #000000; + color: #ffffff; + outline: none; +} +.back-to-top:hover { + background: #ffffff; + color: #007aad; +} + +#preloader { + background: #007aad; + height: 100%; + opacity: 1; + filter: alpha(opacity=100); + position: fixed; + text-align: center; + width: 100%; + z-index: 99; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.preloader { + margin: 100px auto; + width: 40px; + height: 40px; + position: relative; +} +.preloader .sk-wave { + margin: 40px auto; + width: 60px; + height: 50px; + text-align: center; + font-size: 10px; +} +.preloader .sk-wave .sk-rect { + background-color: #007aad; + height: 100%; + width: 6px; + display: inline-block; + -webkit-animation: sk-waveStretchDelay 1.2s infinite ease-in-out; + animation: sk-waveStretchDelay 1.2s infinite ease-in-out; +} +.preloader .sk-wave .sk-rect1 { + -webkit-animation-delay: -1.2s; + animation-delay: -1.2s; +} +.preloader .sk-wave .sk-rect2 { + -webkit-animation-delay: -1.1s; + animation-delay: -1.1s; +} +.preloader .sk-wave .sk-rect3 { + -webkit-animation-delay: -1s; + animation-delay: -1s; +} +.preloader .sk-wave .sk-rect4 { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; +} +.preloader .sk-wave .sk-rect5 { + -webkit-animation-delay: -0.8s; + animation-delay: -0.8s; +} +@-webkit-keyframes sk-waveStretchDelay { + 0%, 40%, 100% { + -webkit-transform: scaleY(0.4); + transform: scaleY(0.4); + } 20% { + -webkit-transform: scaleY(1); + transform: scaleY(1); + } +} +@keyframes sk-waveStretchDelay { + 0%, 40%, 100% { + -webkit-transform: scaleY(0.4); + transform: scaleY(0.4); + } 20% { + -webkit-transform: scaleY(1); + transform: scaleY(1); + } +} + +#header { + padding: 30px 0; + height: 92px; + position: fixed; + background: #007aad; + left: 0; + top: 0; + right: 0; + transition: all 0.5s; + z-index: 997; +} +#header #logo { + float: left; +} +#header #logo h1 { + font-size: 24px; + margin: -4px 0 0 0; + padding: 0; + line-height: 1; + display: inline-block; + font-family: "Montserrat", sans-serif; + font-weight: 300; + letter-spacing: 3px; + text-transform: uppercase; +} +#header #logo h1 a, #header #logo h1 a:hover { + color: #ffffff; +} +#header #logo img { + padding: 0; + margin: 0; + height: 50px; +} +@media (max-width: 768px) { + #header #logo h1 { + font-size: 18px; + margin-top: 0; + } + #header #logo img { + max-height: 50px; + } +} +#header.header-fixed { + background: #007aad; + padding: 20px 0; + height: 72px; + transition: all 0.5s; +} + +#featured { + background: #eeeeee; + position:relative; + width:100%; + height:auto; + margin:0; + padding:140px 0 30px; +} +@media (min-width: 1024px) { + section#featured { + background-attachment: fixed; + } +} +#featured { + text-align:center; +} +#featured h2 { + color:#fff; + font-size:64px; +} +#featured .inner-heading h2 { + margin-bottom:-20px; +} +#featured h4.subtitle { + font-family: Arial, Tahoma, Verdana, Sans-serif; + text-transform:none; + color:#f8f8f8; +} +#featured p { + color:#f8f8f8; +} +#sequence-theme #sequence { + min-height: 300px; + padding-right:40px; +} +#sequence ul li h4.subtitle { + display:none; +} +#sequence-theme #sequence { + width:80%; + min-height: 400px; + padding-right:40px; +} +#sequence ul li h4.subtitle { + display:none; +} +#sequence ul li img { + margin-top:30px; +} + +#intro { + width: 100%; + margin: 80px 0px 0px 0; + min-height: 100px; + background: #eeeeee; + position: relative; +} +#intro .intro-text { + position: absolute; + left: 0; + top: 5px; + right: 0; + height: calc(50% - 60px); + display: flex; + align-items: center; + justify-content: center; + text-align: center; + flex-direction: column; +} +#intro h2 { + margin: 20px 0 5px 0; + padding: 0 15px; + font-size: 48px; + font-weight: 400; + line-height: 36px; + color: #ffffff; +} +@media (max-width: 768px) { + #intro h2 { + font-size: 28px; + line-height: 36px; + } +} +#intro p { + color: #ffffff; + margin-bottom: 5px; + padding: 0 15px; + font-size: 24px; +} +@media (max-width: 768px) { + #intro p { + font-size: 18px; + line-height: 24px; + margin-bottom: 20px; + } +} +#intro .btn-get-started { + font-family: "Montserrat", sans-serif; + font-weight: 400; + font-size: 16px; + letter-spacing: 1px; + display: inline-block; + padding: 8px 28px; + border-radius: 50px; + transition: 0.5s; + margin: 10px; + border: 2px solid #fff; + color: #fff; +} +#intro .btn-get-started:hover { + color: #1dc8cd; + background: #fff; +} +#intro .product-screens { + position: absolute; + left: 0; + right: 0; + bottom: 0; + overflow: hidden; + text-align: center; + width: 100%; + height: 50%; +} +#intro .product-screens img { + box-shadow: 0px -2px 19px 4px rgba(0, 0, 0, 0.29); +} +#intro .product-screens .product-screen-0 { + position: absolute; + z-index: 30; + left: calc(25% + 14px); + bottom: 0; + top: 0px; +} +#intro .product-screens .product-screen-1 { + position: absolute; + z-index: 30; + left: calc(54px); + bottom: 0; + top: 0px; +} +#intro .product-screens .product-screen-2 { + position: absolute; + z-index: 20; + left: calc(33% - 154px); + bottom: 0; + top: 30px; +} +#intro .product-screens .product-screen-3 { + position: absolute; + z-index: 10; + left: calc(33% - 374px); + bottom: 0; + top: 60px; +} +@media (max-width: 767px) { + #intro .product-screens .product-screen-1 { + position: static; + padding-top: 30px; + } + #intro .product-screens .product-screen-2, #intro .product-screens .product-screen-3 { + display: none; + } +} + +.nav-menu, .nav-menu * { + margin: 0; + padding: 0; + list-style: none; +} +.nav-menu ul { + position: absolute; + display: none; + top: 100%; + left: 0; + z-index: 99; +} +.nav-menu li { + position: relative; + white-space: nowrap; +} +.nav-menu > li { + float: left; +} +.nav-menu li:hover > ul, +.nav-menu li.sfHover > ul { + display: block; +} +.nav-menu ul ul { + top: 0; + left: 100%; +} +.nav-menu ul li { + min-width: 150px; +} +.sf-arrows .sf-with-ul { + padding-right: 25px; +} +.sf-arrows .sf-with-ul:after { + content: "\f107"; + position: absolute; + right: 10px; + font-family: FontAwesome; + font-style: normal; + font-weight: normal; +} +.sf-arrows ul .sf-with-ul:after { + content: "\f105"; +} +#nav-menu-container { + float: right; + margin: 0; +} +@media (max-width: 1024px) { + #nav-menu-container { + display: none; + } +} +.nav-menu a { + padding: 0 8px 10px 8px; + text-decoration: none; + display: inline-block; + color: #ffffff; + font-family: "Montserrat", sans-serif; + font-weight: 400; + font-size: 14px; + outline: none; +} +.nav-menu > li { + margin-left: 5px; +} +.nav-menu ul { + margin: 4px 0 0 0; + padding: 10px; + box-shadow: 0px 0px 30px rgba(127, 137, 161, 0.25); + background: #ffffff; + border: 2px solid #007aad; +} +.nav-menu ul li { + transition: 0.3s; +} +.nav-menu ul li a { + padding: 10px; + color: #000000; + transition: 0.3s; + display: block; + font-size: 14px; + text-transform: none; +} +.nav-menu ul li:hover > a { + color: #007aad; +} +.nav-menu ul ul { + margin: 0; +} +#mobile-nav-toggle { + position: fixed; + right: 0; + top: 0; + z-index: 999; + margin: 20px 20px 0 0; + border: 0; + background: none; + font-size: 24px; + display: none; + transition: all 0.4s; + outline: none; + cursor: pointer; +} +#mobile-nav-toggle i { + color: #fff; +} +@media (max-width: 1024px) { + #mobile-nav-toggle { + display: inline; + } +} +#mobile-nav { + position: fixed; + top: 0; + padding-top: 18px; + bottom: 0; + z-index: 998; + background: rgba(52, 59, 64, 0.9); + left: -260px; + width: 260px; + overflow-y: auto; + transition: 0.4s; +} +#mobile-nav ul { + padding: 0; + margin: 0; + list-style: none; +} +#mobile-nav ul li { + position: relative; +} +#mobile-nav ul li a { + color: #fff; + font-size: 16px; + overflow: hidden; + padding: 10px 22px 10px 15px; + position: relative; + text-decoration: none; + width: 100%; + display: block; + outline: none; +} +#mobile-nav ul li a:hover { + color: #fff; +} +#mobile-nav ul li li { + padding-left: 30px; +} +#mobile-nav ul .menu-has-children i { + position: absolute; + right: 0; + z-index: 99; + padding: 15px; + cursor: pointer; + color: #fff; +} +#mobile-nav ul .menu-has-children i.fa-chevron-up { + color: #1dc8cd; +} +#mobile-nav ul .menu-item-active { + color: #007aad; +} +#mobile-body-overly { + width: 100%; + height: 100%; + z-index: 997; + top: 0; + left: 0; + position: fixed; + background: rgba(52, 59, 64, 0.9); + display: none; +} +body.mobile-nav-active { + overflow: hidden; +} +body.mobile-nav-active #mobile-nav { + left: 0; +} +body.mobile-nav-active #mobile-nav-toggle { + color: #fff; +} + +.section-header .section-title { + margin-top: 90px; + font-size: 48px; + color: #000000; + text-align: center; + font-weight: 400; +} +.section-header .section-description { + text-align: center; + padding-bottom: 40px; + color: #777777; + font-style: italic; +} +.section-header .section-divider { + display: block; + width: 250px; + height: 5px; + background: #007aad; + margin: 0 auto; + margin-bottom: 20px; +} +.section-bg { + background: #eff5f5; +} + +.payments { + text-align: center; +} + +@media (max-width: 1280px) { + #page img { + width: 75%; + height: 75%; + } +} +@media (max-width: 720px) { + #page img { + width: 50%; + height: 50%; + } +} +@media (max-width: 480px) { + #page img { + width: 25%; + height: 25%; + } +} + +#list { + font-size: 32px; +} +#list ul { + list-style: none; +} +#list ul li { + padding: 20px; + font-size: 32px; + line-height: 48px; +} +#list ul li a { + padding: 20px; +} +#list ul li a:hover { + background: #333333; +} + +#about { + padding: 60px 0; +} +#about .about-img { + height: 510px; + overflow: hidden; +} +#about .about-img img { + margin-left: -15px; + max-width: 100%; +} +@media (max-width: 768px) { + #about .about-img { + height: auto; + } + #about .about-img img { + margin-left: 0; + padding-bottom: 30px; + } +} +#about .content .h2 { + color: #333; + font-weight: 300; + font-size: 24px; +} +#about .content h3 { + color: #777; + font-weight: 300; + font-size: 18px; + line-height: 26px; + font-style: italic; +} +#about .content p { + line-height: 26px; +} +#about .content p:last-child { + margin-bottom: 0; +} +#about .content i { + font-size: 20px; + padding-right: 4px; + color: #1dc8cd; +} +#about .content ul { + list-style: none; + padding: 0; +} +#about .content ul li { + padding-bottom: 10px; +} + +#features { + background: #ffffff; + padding: 60px 0 0 0; +} +#features .features-img { + text-align: center; + padding-top: 20px; +} +@media (min-width: 769px) { + #features .features-img { + padding-top: 120px; + margin-top: -200px; + } +} +#features .features-img img { + max-width: 100%; +} +#features .box { + margin-bottom: 15px; + text-align: center; +} +#features .icon { + margin-bottom: 10px; +} +#features .icon i { + color: #ff8800; + font-size: 40px; + transition: 0.5s; +} +#features .icon i:before { + background: #1dc8cd; + background: linear-gradient(45deg, #ffff00 0%, #ff8800 100%); + background-clip: border-box; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} +#features .title { + font-weight: 300; + margin-bottom: 15px; + font-size: 22px; +} +#features .title a { + color: #111; +} +#features .description { + font-size: 14px; + line-height: 24px; + margin-bottom: 10px; +} +#features .section-description { + padding-bottom: 10px; +} + +#advanced-features .features-row { + padding: 60px 0 30px 0; +} +#advanced-features h2 { + font-size: 26px; + font-weight: 700; + color: #000; +} +#advanced-features h3 { + font-size: 16px; + line-height: 24px; + font-weight: 400; + font-style: italic; + color: #999; +} +#advanced-features p { + line-height: 24px; + color: #777; + margin-bottom: 30px; +} +#advanced-features i { + color: #666666; + font-size: 64px; + transition: 0.5s; + float: left; + padding: 0 15px 0px 0; + line-height: 1; +} +#advanced-features i:before { + background: #1dc8cd; + background: linear-gradient(45deg, #1dc8cd 0%, #55fabe 100%); + background-clip: border-box; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} +#advanced-features .advanced-feature-img-right { + max-width: 100%; + float: right; + padding: 0 0 30px 30px; +} +#advanced-features .advanced-feature-img-left { + max-width: 100%; + float: left; + padding: 0 30px 30px 0; +} +@media (max-width: 768px) { + #advanced-features .advanced-feature-img-right, #advanced-features .advanced-feature-img-left { + max-width: 50%; + } +} +@media (max-width: 767px) { + #advanced-features .advanced-feature-img-right, #advanced-features .advanced-feature-img-left { + max-width: 100%; + float: none; + padding: 0 0 30px 0; + } +} + +#call-to-action { + background: linear-gradient(rgba(29, 200, 205, 0.65), rgba(29, 205, 89, 0.2)), url(../img/call-to-action-bg.jpg) fixed center center; + background-size: cover; + padding: 40px 0; +} +#call-to-action .cta-title { + color: #ffffff; + font-size: 32px; + font-weight: 700; +} +#call-to-action .cta-text { + color: #ffffff; +} +@media (min-width: 769px) { + #call-to-action .cta-btn-container { + display: flex; + align-items: center; + justify-content: flex-end; + } +} +#call-to-action .cta-btn { + font-family: "Montserrat", sans-serif; + font-weight: 500; + font-size: 24px; + letter-spacing: 1px; + display: inline-block; + padding: 8px 30px; + border-radius: 25px; + transition: background 0.5s; + margin: 10px; + border: 2px solid #ffffff; + color: #ffffff; +} +#call-to-action .cta-btn:hover { + background: #ff8800; + border: 2px solid #ff8800; +} + +#more-features { + padding: 60px 0 60px 0; +} +#more-features .box { + padding: 40px; + margin-bottom: 30px; + box-shadow: 0px 0px 30px rgba(73, 78, 92, 0.15); + background: #fff; + transition: 0.4s; +} +#more-features .icon { + float: left; +} +#more-features .icon i { + color: #666666; + font-size: 72px; + transition: 0.5s; + line-height: 0; +} +/* +#more-features .icon i:before { + background: #ff8800; + background: linear-gradient(45deg, #ffff00 0%, #ff8800 100%); + background-clip: border-box; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} +*/ +#more-features h4 { + margin-left: 100px; + font-weight: 700; + margin-bottom: 15px; + font-size: 18px; +} +#more-features h4 a { + color: #111; +} +#more-features p { + font-size: 14px; + margin-left: 100px; + margin-bottom: 0; + line-height: 24px; +} +@media (max-width: 767px) { + #more-features .box { + margin-bottom: 20px; + } + #more-features .icon { + float: none; + text-align: center; + padding-bottom: 15px; + } + #more-features h4, #more-features p { + margin-left: 0; + text-align: center; + } +} + +#imagebar { + padding: 30px 0; + background: #fff; +} +#imagebar img { + max-width: 100%; + opacity: 0.5; + transition: 0.3s; + padding: 15px 0; +} +#imagebar img:hover { + opacity: 1; +} + +#pricing { + padding: 60px 0 60px 0; +} +#pricing .box { + padding: 10px; + margin-bottom: 30px; + box-shadow: 0px 0px 30px rgba(73, 78, 92, 0.15); + background: #fff; + text-align: center; +} +#pricing h3 { + font-weight: 400; + margin-bottom: 15px; + font-size: 28px; +} +#pricing h4 { + font-weight: 300; + font-size: 24px; + color: #1dc8cd; +} +#pricing h4 sup { + font-size: 20px; + top: -20px; +} +#pricing h4 span { + color: #bababa; + font-size: 20px; +} +#pricing ul { + padding: 0; + list-style: none; + color: #999; + text-align: left; + line-height: 20px; +} +#pricing ul li { + padding-bottom: 12px; +} +#pricing ul i { + color: #1dc8cd; + font-size: 18px; + padding-right: 4px; +} +#pricing .get-started-btn { + background: #515e61; + display: inline-block; + padding: 6px 30px; + border-radius: 20px; + color: #fff; + transition: none; + font-size: 14px; + font-weight: 400; + font-family: "Montserrat", sans-serif; +} +#pricing .featured { + border: 2px solid #1dc8cd; +} +#pricing .featured .get-started-btn { + background: linear-gradient(45deg, #1de099, #1dc8cd); +} + +#faq { + padding: 60px 0; +} +#faq #faq-list { + padding: 0; + list-style: none; +} +#faq #faq-list li { + border-bottom: 1px solid #ddd; +} +#faq #faq-list a { + padding: 18px 0; + display: block; + position: relative; + font-family: "Montserrat", sans-serif; + font-size: 22px; + line-height: 1; + font-weight: 300; + padding-right: 20px; +} +#faq #faq-list i { + font-size: 24px; + position: absolute; + right: 0; + top: 16px; +} +#faq #faq-list p { + margin-bottom: 20px; +} +@media (max-width: 768px) { + #faq #faq-list a { + font-size: 18px; + } + #faq #faq-list i { + top: 13px; + } +} +#faq #faq-list a.collapse { + color: #1dc8cd; +} + +#faq #faq-list a.collapsed { + color: #000; +} + +#faq #faq-list a.collapsed i::before { + content: "\f2c7" !important; +} + +#members { + background: "#ffffff;"; +} +#members a { + color: #000000; +} +#members h2 { + color: #007aad; + text-decoration: underline; +} +#members #level { + padding: 50px 50px 25px 25px; +} +#members .section-divider { + background-color: #007aad; +} + +#member #section-header { + text-align: center; +} + +#membersingle { + margin: 125px 50px 25px 25px; +} + +#boardofdirectors { + background-color: "#ff88ff;"; +} +#boardofdirectors #person { + padding: 10px 10px 10px 10px; +} +#boardofdirectors #person-header { + border-bottom: 2px solid #007aad; +} + +#hub { + margin-bottom: 50px; +} + +#hubprovider { + text-align: center; + padding: 35px 35px 25px 25px; +} + +#team { + padding: 60px 0; +} +#team .member { + text-align: center; + margin-bottom: 20px; +} +#team .member .pic { + margin-bottom: 15px; + overflow: hidden; + height: 260px; +} +#team .member .pic img { + max-width: 100%; +} +#team .member h4 { + font-weight: 700; + margin-bottom: 2px; + font-size: 18px; +} +#team .member span { + font-style: italic; + display: block; + font-size: 13px; +} +#team .member .social { + margin-top: 15px; +} +#team .member .social a { + color: #b3b3b3; +} +#team .member .social a:hover { + color: #1dc8cd; +} +#team .member .social i { + font-size: 18px; + margin: 0 2px; +} + +#gallery { + background: #fff; + padding: 60px 0 0 0; +} +#gallery .container-fluid { + padding: 0px; +} +#gallery .gallery-overlay { + position: absolute; + top: 100px; + right: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 1; + -webkit-transition: all ease-in-out 0.4s; + transition: all ease-in-out 0.4s; +} +#gallery .gallery-item { + overflow: hidden; + position: relative; + padding: 0; + vertical-align: middle; + text-align: center; +} +#gallery .gallery-item img { + -webkit-transition: all ease-in-out 0.4s; + transition: all ease-in-out 0.4s; + width: 100%; +} +#gallery .gallery-item:hover img { + -webkit-transform: scale(1.1); + transform: scale(1.1); +} +#gallery .gallery-item:hover .gallery-overlay { + opacity: 1; + background: rgba(0, 0, 0, 0.7); +} + +#contact { + background: #eeeeee; + box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.1); + padding: 10px 0; +} +#contact .contact-about h3 { + font-size: 36px; + margin: 0 0 10px 0; + padding: 0; + line-height: 1; + font-family: "Montserrat", sans-serif; + font-weight: 300; + letter-spacing: 3px; + text-transform: uppercase; + color: #ff8800; +} +#contact .contact-about p { + font-size: 14px; + line-height: 16px; + font-family: "Montserrat", sans-serif; + color: #888; +} +#contact .social-links { + padding-bottom: 20px; +} +#contact .social-links a { + font-size: 18px; + display: inline-block; + background: #fff; + color: #ff8800; + line-height: 1; + padding: 8px 0; + margin-right: 4px; + border-radius: 50%; + text-align: center; + width: 36px; + height: 36px; + transition: 0.3s; + border: 1px solid #ff8800; +} +#contact .social-links a:hover { + background: #ff8800; + color: #ffffff; +} +#contact .info { + color: #000000; +} +#contact .info i { + font-size: 24px; + color: #ff8800; + float: left; + line-height: 1; +} +#contact .info p { + padding: 0 0 0 42px; + line-height: 14px; + font-size: 12px; +} +#contact .form #sendmessage { + color: #ff8800; + border: 1px solid #1dc8cd; + display: none; + text-align: center; + padding: 15px; + font-weight: 600; + margin-bottom: 15px; +} +#contact .form #errormessage { + color: red; + display: none; + border: 1px solid red; + text-align: center; + padding: 15px; + font-weight: 600; + margin-bottom: 15px; +} +#contact .form #sendmessage.show, #contact .form #errormessage.show, #contact .form .show { + display: block; +} +#contact .form .validation { + color: red; + display: none; + margin: 0 0 20px; + font-weight: 400; + font-size: 13px; +} +#contact .form input, #contact .form textarea { + border-radius: 0; + box-shadow: none; + font-size: 14px; +} +#contact .form button[type="submit"] { + background: #ff8800; + border: 0; + border-radius: 20px; + padding: 8px 30px; + color: #fff; +} +#contact .form button[type="submit"]:hover { + background: #333333; + cursor: pointer; +} + +#hub .form #sendmessage { + color: #ff8800; + border: 1px solid #1dc8cd; + display: none; + text-align: center; + padding: 15px; + font-weight: 600; + margin-bottom: 15px; +} +#hub .form #errormessage { + color: red; + display: none; + border: 1px solid red; + text-align: center; + padding: 15px; + font-weight: 600; + margin-bottom: 15px; +} +#hub .form #sendmessage.show, #hub .form #errormessage.show, #hub .form .show { + display: block; +} +#hub .form .validation { + color: red; + display: none; + margin: 0 0 20px; + font-weight: 400; + font-size: 13px; +} +#hub .form input, #contact .form textarea { + border-radius: 0; + box-shadow: none; + font-size: 14px; +} +#hub .form button[type="submit"] { + background: #007aad; + border: 0; + border-radius: 20px; + padding: 8px 30px; + color: #fff; +} +#hub .form button[type="submit"]:hover { + background: #007ddd; + cursor: pointer; +} + +#footer { + background: #007aad; + color: #ffffff; + box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.1); + padding: 20px 0; + font-size: 14px; +} +#footer .bar { + text-align: center; + border-bottom: 10px solid #ffff00; + padding-bottom: 10px; +} +#footer .bar ul { + list-style: none; + margin: 0; + padding: 0; + overflow: hidden; +} +#footer .bar ul li { + float: left; + text-align: center; + line-height: 36px; + padding: 10px; +} +#footer .bar ul li a { + display: block; + text-decoration: none; + color: #ffff00; + font-size: 32px; +} +#footer .bar ul li a:hover { + color: #ffffff; +} +#footer .footer-links { + text-align: center; +} +#footer .footer-links ul { + list-style: none; + -webkit-column-count: 5; + -moz-column-count: 5; + column-count: 5; + flex-wrap: wrap; + display: flex; +} +#footer .footer-links ul li { + flex: 1 0 20%; +} +#footer .footer-links a { + color: #ff9900; + padding-left: 15px; +} +#footer .footer-links a:first-child { + padding-left: 0; +} +#footer .footer-links a:hover { + color: #ffff00; +} +#footer .footerline { + background-color: #ffffff; + padding: 2px 0px 2px 0px; +} +#footer .copyright { + text-align: center; +} +#footer .legal { + margin-top: 10px; + font-size: 8px; + color: #cccccc; +} +#footer .version { + text-align: center; + margin-bottom: 15px; + font-size: 6px; + color: #ffffff; +} +#search-query { + width: 75%; +} diff --git a/themes/openpowerfoundation/assets/css/syntax.css b/themes/openpowerfoundation/assets/css/syntax.css new file mode 100644 index 0000000..33ce367 --- /dev/null +++ b/themes/openpowerfoundation/assets/css/syntax.css @@ -0,0 +1,59 @@ +/* Background */ .chroma { color: #f8f8f2; background-color: #272822 } +/* Error */ .chroma .err { color: #960050; background-color: #1e0010 } +/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } +/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: 100%; overflow: auto; display: block; } +/* LineHighlight */ .chroma .hl { display: block; width: 100%;background-color: #ffffcc } +/* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em; display: block; } +/* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em; } +/* Keyword */ .chroma .k { color: #66d9ef } +/* KeywordConstant */ .chroma .kc { color: #66d9ef } +/* KeywordDeclaration */ .chroma .kd { color: #66d9ef } +/* KeywordNamespace */ .chroma .kn { color: #f92672 } +/* KeywordPseudo */ .chroma .kp { color: #66d9ef } +/* KeywordReserved */ .chroma .kr { color: #66d9ef } +/* KeywordType */ .chroma .kt { color: #66d9ef } +/* NameAttribute */ .chroma .na { color: #a6e22e } +/* NameClass */ .chroma .nc { color: #a6e22e } +/* NameConstant */ .chroma .no { color: #66d9ef } +/* NameDecorator */ .chroma .nd { color: #a6e22e } +/* NameException */ .chroma .ne { color: #a6e22e } +/* NameFunction */ .chroma .nf { color: #a6e22e } +/* NameOther */ .chroma .nx { color: #a6e22e } +/* NameTag */ .chroma .nt { color: #f92672 } +/* Literal */ .chroma .l { color: #ae81ff } +/* LiteralDate */ .chroma .ld { color: #e6db74 } +/* LiteralString */ .chroma .s { color: #e6db74 } +/* LiteralStringAffix */ .chroma .sa { color: #e6db74 } +/* LiteralStringBacktick */ .chroma .sb { color: #e6db74 } +/* LiteralStringChar */ .chroma .sc { color: #e6db74 } +/* LiteralStringDelimiter */ .chroma .dl { color: #e6db74 } +/* LiteralStringDoc */ .chroma .sd { color: #e6db74 } +/* LiteralStringDouble */ .chroma .s2 { color: #e6db74 } +/* LiteralStringEscape */ .chroma .se { color: #ae81ff } +/* LiteralStringHeredoc */ .chroma .sh { color: #e6db74 } +/* LiteralStringInterpol */ .chroma .si { color: #e6db74 } +/* LiteralStringOther */ .chroma .sx { color: #e6db74 } +/* LiteralStringRegex */ .chroma .sr { color: #e6db74 } +/* LiteralStringSingle */ .chroma .s1 { color: #e6db74 } +/* LiteralStringSymbol */ .chroma .ss { color: #e6db74 } +/* LiteralNumber */ .chroma .m { color: #ae81ff } +/* LiteralNumberBin */ .chroma .mb { color: #ae81ff } +/* LiteralNumberFloat */ .chroma .mf { color: #ae81ff } +/* LiteralNumberHex */ .chroma .mh { color: #ae81ff } +/* LiteralNumberInteger */ .chroma .mi { color: #ae81ff } +/* LiteralNumberIntegerLong */ .chroma .il { color: #ae81ff } +/* LiteralNumberOct */ .chroma .mo { color: #ae81ff } +/* Operator */ .chroma .o { color: #f92672 } +/* OperatorWord */ .chroma .ow { color: #f92672 } +/* Comment */ .chroma .c { color: #75715e } +/* CommentHashbang */ .chroma .ch { color: #75715e } +/* CommentMultiline */ .chroma .cm { color: #75715e } +/* CommentSingle */ .chroma .c1 { color: #75715e } +/* CommentSpecial */ .chroma .cs { color: #75715e } +/* CommentPreproc */ .chroma .cp { color: #75715e } +/* CommentPreprocFile */ .chroma .cpf { color: #75715e } +/* GenericDeleted */ .chroma .gd { color: #f92672 } +/* GenericEmph */ .chroma .ge { font-style: italic } +/* GenericInserted */ .chroma .gi { color: #a6e22e } +/* GenericStrong */ .chroma .gs { font-weight: bold } +/* GenericSubheading */ .chroma .gu { color: #75715e } diff --git a/themes/openpowerfoundation/assets/css/timeline.scss b/themes/openpowerfoundation/assets/css/timeline.scss new file mode 100644 index 0000000..e3d1fcd --- /dev/null +++ b/themes/openpowerfoundation/assets/css/timeline.scss @@ -0,0 +1,171 @@ +$primary: #007aad; +$dark-primary: #303F9F; +$light-primary: #000000; +$text: #ffffff; +$primary-text: #212121; +$secondary-text: #757575; +$accent: #aaaaaa; + +.timeline { + position: relative; + &::before { + content: ''; + background: $light-primary; + width: 5px; + height: 95%; + position: absolute; + left: 50%; + transform: translateX(-50%); + } +} +.timeline-item { + width: 100%; + margin-bottom: 70px; + &:nth-child(even) { + .timeline-content { + float: right; + padding: 60px 30px 10px 30px; + .date { + right: auto; + left: 0; + } + &::after { + content: ''; + position: absolute; + border-style: solid; + width: 0; + height: 0; + top: 30px; + left: -15px; + border-width: 10px 15px 10px 0; + border-color: transparent #f5f5f5 transparent transparent; + } + } + } + &::after { + content: ''; + display: block; + clear: both; + } +} + +.timeline-content { + position: relative; + width: 45%; + padding: 60px 30px 10px 30px; + border-radius: 4px; + background: #f5f5f5; + box-shadow: 0 20px 25px -15px rgba(0, 0, 0, .3); + &::after { + content: ''; + position: absolute; + border-style: solid; + width: 0; + height: 0; + top: 20px; + right: -15px; + border-width: 10px 0 10px 15px; + border-color: transparent transparent transparent #f5f5f5; + } +} + +.timeline-content h2 { + text-decoration: underline; + color: #007aad; +} + +.timeline-img { + width: 30px; + height: 30px; + background: $primary; + border-radius: 50%; + position: absolute; + left: 50%; + margin-top: 25px; + margin-left: -15px; +} + +.timeline-card { + padding: 0!important; + p { + padding: 0 20px; + } + a { + margin-left: 20px; + } +} + +.timeline-img-header { + height: 200px; + position: relative; + margin-bottom: 20px; + h2 { + color: $text; + position: absolute; + bottom: 5px; + left: 20px; + } +} + +blockquote { + margin-top: 30px; + color: $secondary-text; + border-left-color: $primary; + padding: 0 20px; +} + +.date { + background: $accent; + display: inline-block; + color: $text; + padding: 10px; + position: absolute; + top: 0; + right: 0; +} + +@media screen and (max-width: 768px) { + .timeline { + &::before { + left: 50px; + } + .timeline-img { + left: 50px; + } + .timeline-content { + max-width: 100%; + width: auto; + margin-left: 70px; + } + .timeline-item { + &:nth-child(even) { + .timeline-content { + float: none; + } + } + &:nth-child(odd) { + .timeline-content { + &::after { + content: ''; + position: absolute; + border-style: solid; + width: 0; + height: 0; + top: 30px; + left: -15px; + border-width: 10px 15px 10px 0; + border-color: transparent #f5f5f5 transparent transparent; + } + } + } + } + } +} + +.framed { + padding: 20px; + border-radius: 10px; + border: 1px solid #dcdcdc; + border: 1px solid var(--border-color); + max-width: 800px; +} diff --git a/themes/openpowerfoundation/assets/img/openpower-logo-black.png b/themes/openpowerfoundation/assets/img/openpower-logo-black.png new file mode 100644 index 0000000..6778564 Binary files /dev/null and b/themes/openpowerfoundation/assets/img/openpower-logo-black.png differ diff --git a/themes/openpowerfoundation/assets/img/openpower-logo-white.png b/themes/openpowerfoundation/assets/img/openpower-logo-white.png new file mode 100644 index 0000000..68cb37b Binary files /dev/null and b/themes/openpowerfoundation/assets/img/openpower-logo-white.png differ diff --git a/themes/openpowerfoundation/assets/img/openpower.png b/themes/openpowerfoundation/assets/img/openpower.png new file mode 100644 index 0000000..2b3d800 Binary files /dev/null and b/themes/openpowerfoundation/assets/img/openpower.png differ diff --git a/themes/openpowerfoundation/assets/js/changelog.js b/themes/openpowerfoundation/assets/js/changelog.js new file mode 100644 index 0000000..73d6abb --- /dev/null +++ b/themes/openpowerfoundation/assets/js/changelog.js @@ -0,0 +1,97 @@ +(function() { +const changelog = document.querySelector(".changelog ol"), +elH = document.querySelectorAll(".changelog li > div"), +arrows = document.querySelectorAll(".changelog .arrows .arrow"), +arrowPrev = document.querySelector(".changelog .arrows .arrow__prev"), +arrowNext = document.querySelector(".changelog .arrows .arrow__next"), +firstItem = document.querySelector(".changelog li:first-child"), +lastItem = document.querySelector(".changelog li:last-child"), +xScrolling = 280, +disabledClass = "disabled"; +window.addEventListener("load", init); +function init() { + setEqualHeights(elH); + animateTl(xScrolling, arrows, changelog); + setSwipeFn(changelog, arrowPrev, arrowNext); + setKeyboardFn(arrowPrev, arrowNext); +} +function setEqualHeights(el) { + let counter = 0; + for (let i = 0; i < el.length; i++) { + const singleHeight = el[i].offsetHeight; + if (counter < singleHeight) { + counter = singleHeight; + } + } + for (let i = 0; i < el.length; i++) { + el[i].style.height = `${counter}px`; + } +} +function isElementInViewport(el) { + const rect = el.getBoundingClientRect(); + return ( + rect.top >= 0 && + rect.left >= 0 && + rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && + rect.right <= (window.innerWidth || document.documentElement.clientWidth) + ); +} +function setBtnState(el, flag = true) { + if (flag) { + el.classList.add(disabledClass); + } else { + if (el.classList.contains(disabledClass)) { + el.classList.remove(disabledClass); + } + el.disabled = false; + } +} +function animateTl(scrolling, el, tl) { + let counter = 0; + for (let i = 0; i < el.length; i++) { + el[i].addEventListener("click", function() { + if (!arrowPrev.disabled) { + arrowPrev.disabled = true; + } + if (!arrowNext.disabled) { + arrowNext.disabled = true; + } + const sign = (this.classList.contains("arrow__prev")) ? "" : "-"; + if (counter === 0) { + tl.style.transform = `translateX(-${scrolling}px)`; + } else { + const tlStyle = getComputedStyle(tl); + const tlTransform = tlStyle.getPropertyValue("-webkit-transform") || tlStyle.getPropertyValue("transform"); + const values = parseInt(tlTransform.split(",")[4]) + parseInt(`${sign}${scrolling}`); + tl.style.transform = `translateX(${values}px)`; + } + setTimeout(() => { + isElementInViewport(firstItem) ? setBtnState(arrowPrev) : setBtnState(arrowPrev, false); + isElementInViewport(lastItem) ? setBtnState(arrowNext) : setBtnState(arrowNext, false); + }, 1100); + counter++; + }); + } +} +function setSwipeFn(tl, prev, next) { + const hammer = new Hammer(tl); + hammer.on("swipeleft", () => next.click()); + hammer.on("swiperight", () => prev.click()); +} +function setKeyboardFn(prev, next) { + document.addEventListener("keydown", (e) => { + if ((e.which === 37) || (e.which === 39)) { + const changelogOfTop = changelog.offsetTop; + const y = window.pageYOffset; + if (changelogOfTop !== y) { + window.scrollTo(0, changelogOfTop); + } + if (e.which === 37) { + prev.click(); + } else if (e.which === 39) { + next.click(); + } + } + }); +} +})(); diff --git a/themes/openpowerfoundation/assets/js/contactform.js b/themes/openpowerfoundation/assets/js/contactform.js new file mode 100644 index 0000000..422ce88 --- /dev/null +++ b/themes/openpowerfoundation/assets/js/contactform.js @@ -0,0 +1,95 @@ +jQuery(document).ready(function($) { + "use strict"; + $('form.contactForm').submit(function() { + var f = $(this).find('.form-group'), + ferror = false, + emailExp = /^[^\s()<>@,;:\/]+@\w[\w\.-]+\.[a-z]{2,}$/i; + f.children('input').each(function() { + var i = $(this); + var rule = i.attr('data-rule'); + if (rule !== undefined) { + var ierror = false; + var pos = rule.indexOf(':', 0); + if (pos >= 0) { + var exp = rule.substr(pos + 1, rule.length); + rule = rule.substr(0, pos); + } else { + rule = rule.substr(pos + 1, rule.length); + } + switch (rule) { + case 'required': + if (i.val() === '') { + ferror = ierror = true; + } + break; + case 'minlen': + if (i.val().length < parseInt(exp)) { + ferror = ierror = true; + } + break; + case 'email': + if (!emailExp.test(i.val())) { + ferror = ierror = true; + } + break; + case 'checked': + if (!i.attr('checked')) { + ferror = ierror = true; + } + break; + case 'regexp': + exp = new RegExp(exp); + if (!exp.test(i.val())) { + ferror = ierror = true; + } + break; + } + i.next('.validation').html((ierror ? (i.attr('data-msg') !== undefined ? i.attr('data-msg') : 'wrong Input') : '')).show('blind'); + } + }); + f.children('textarea').each(function() { + var i = $(this); + var rule = i.attr('data-rule'); + if (rule !== undefined) { + var ierror = false; + var pos = rule.indexOf(':', 0); + if (pos >= 0) { + var exp = rule.substr(pos + 1, rule.length); + rule = rule.substr(0, pos); + } else { + rule = rule.substr(pos + 1, rule.length); + } + switch (rule) { + case 'required': + if (i.val() === '') { + ferror = ierror = true; + } + break; + case 'minlen': + if (i.val().length < parseInt(exp)) { + ferror = ierror = true; + } + break; + } + i.next('.validation').html((ierror ? (i.attr('data-msg') != undefined ? i.attr('data-msg') : 'wrong Input') : '')).show('blind'); + } + }); + if (ferror) { + return false; + } else { + var str = $(this).serialize(); + $.ajax({ + type: "POST", + data: str, + url: contacturl, + complete: function() { + $("#sendmessage").addClass("show"); + $("#errormessage").removeClass("show"); + $('.contactForm').find("input, textarea").val(""); + _paq.push(['trackGoal', 99]); + } + }); + return false; + } + }); +}); diff --git a/themes/openpowerfoundation/assets/js/hubrequestform.js b/themes/openpowerfoundation/assets/js/hubrequestform.js new file mode 100644 index 0000000..64bd944 --- /dev/null +++ b/themes/openpowerfoundation/assets/js/hubrequestform.js @@ -0,0 +1,96 @@ +jQuery(document).ready(function($) { + "use strict"; + $('form.hubRequestForm').submit(function() { + var f = $(this).find('.form-group'), + ferror = false, + emailExp = /^[^\s()<>@,;:\/]+@\w[\w\.-]+\.[a-z]{2,}$/i; + f.children('input').each(function() { + var i = $(this); + var rule = i.attr('data-rule'); + if (rule !== undefined) { + var ierror = false; + var pos = rule.indexOf(':', 0); + if (pos >= 0) { + var exp = rule.substr(pos + 1, rule.length); + rule = rule.substr(0, pos); + } else { + rule = rule.substr(pos + 1, rule.length); + } + switch (rule) { + case 'required': + if (i.val() === '') { + ferror = ierror = true; + } + break; + case 'minlen': + if (i.val().length < parseInt(exp)) { + ferror = ierror = true; + } + break; + case 'email': + if (!emailExp.test(i.val())) { + ferror = ierror = true; + } + break; + case 'checked': + if (!i.attr('checked')) { + ferror = ierror = true; + } + break; + case 'regexp': + exp = new RegExp(exp); + if (!exp.test(i.val())) { + ferror = ierror = true; + } + break; + } + i.next('.validation').html((ierror ? (i.attr('data-msg') !== undefined ? i.attr('data-msg') : 'wrong Input') : '')).show('blind'); + } + }); + f.children('textarea').each(function() { + var i = $(this); + var rule = i.attr('data-rule'); + if (rule !== undefined) { + var ierror = false; + var pos = rule.indexOf(':', 0); + if (pos >= 0) { + var exp = rule.substr(pos + 1, rule.length); + rule = rule.substr(0, pos); + } else { + rule = rule.substr(pos + 1, rule.length); + } + switch (rule) { + case 'required': + if (i.val() === '') { + ferror = ierror = true; + } + break; + case 'minlen': + if (i.val().length < parseInt(exp)) { + ferror = ierror = true; + } + break; + } + i.next('.validation').html((ierror ? (i.attr('data-msg') != undefined ? i.attr('data-msg') : 'wrong Input') : '')).show('blind'); + } + }); + if (ferror) { + return false; + } else { + var str = $(this).serialize(); + $.ajax({ + type: "POST", + data: str, + url: huburl, + complete: function() { + $("#sendmessage").addClass("show"); + $("#errormessage").removeClass("show"); + alert(str) + $('.hubForm').find("input, textarea").val(""); + //_paq.push(['trackGoal', 100]); + } + }); + return false; + } + }); +}); diff --git a/themes/openpowerfoundation/assets/js/jquery.form.js b/themes/openpowerfoundation/assets/js/jquery.form.js new file mode 100644 index 0000000..11f67f0 --- /dev/null +++ b/themes/openpowerfoundation/assets/js/jquery.form.js @@ -0,0 +1,1174 @@ +/*! + * jQuery Form Plugin + * version: 3.32.0-2013.04.09 + * @requires jQuery v1.5 or later + * Copyright (c) 2013 M. Alsup + * Examples and documentation at: http://malsup.com/jquery/form/ + * Project repository: https://github.com/malsup/form + * Dual licensed under the MIT and GPL licenses. + * https://github.com/malsup/form#copyright-and-license + */ +/*global ActiveXObject */ +;(function($) { +"use strict"; + +/* + Usage Note: + ----------- + Do not use both ajaxSubmit and ajaxForm on the same form. These + functions are mutually exclusive. Use ajaxSubmit if you want + to bind your own submit handler to the form. For example, + + $(document).ready(function() { + $('#myForm').on('submit', function(e) { + e.preventDefault(); // <-- important + $(this).ajaxSubmit({ + target: '#output' + }); + }); + }); + + Use ajaxForm when you want the plugin to manage all the event binding + for you. For example, + + $(document).ready(function() { + $('#myForm').ajaxForm({ + target: '#output' + }); + }); + + You can also use ajaxForm with delegation (requires jQuery v1.7+), so the + form does not have to exist when you invoke ajaxForm: + + $('#myForm').ajaxForm({ + delegation: true, + target: '#output' + }); + + When using ajaxForm, the ajaxSubmit function will be invoked for you + at the appropriate time. +*/ + +/** + * Feature detection + */ +var feature = {}; +feature.fileapi = $("").get(0).files !== undefined; +feature.formdata = window.FormData !== undefined; + +var hasProp = !!$.fn.prop; + +// attr2 uses prop when it can but checks the return type for +// an expected string. this accounts for the case where a form +// contains inputs with names like "action" or "method"; in those +// cases "prop" returns the element +$.fn.attr2 = function() { + if ( ! hasProp ) + return this.attr.apply(this, arguments); + var val = this.prop.apply(this, arguments); + if ( ( val && val.jquery ) || typeof val === 'string' ) + return val; + return this.attr.apply(this, arguments); +}; + +/** + * ajaxSubmit() provides a mechanism for immediately submitting + * an HTML form using AJAX. + */ +$.fn.ajaxSubmit = function(options) { + /*jshint scripturl:true */ + + // fast fail if nothing selected (http://dev.jquery.com/ticket/2752) + if (!this.length) { + log('ajaxSubmit: skipping submit process - no element selected'); + return this; + } + + var method, action, url, $form = this; + + if (typeof options == 'function') { + options = { success: options }; + } + + method = this.attr2('method'); + action = this.attr2('action'); + + url = (typeof action === 'string') ? $.trim(action) : ''; + url = url || window.location.href || ''; + if (url) { + // clean url (don't include hash vaue) + url = (url.match(/^([^#]+)/)||[])[1]; + } + + options = $.extend(true, { + url: url, + success: $.ajaxSettings.success, + type: method || 'GET', + iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank' + }, options); + + // hook for manipulating the form data before it is extracted; + // convenient for use with rich editors like tinyMCE or FCKEditor + var veto = {}; + this.trigger('form-pre-serialize', [this, options, veto]); + if (veto.veto) { + log('ajaxSubmit: submit vetoed via form-pre-serialize trigger'); + return this; + } + + // provide opportunity to alter form data before it is serialized + if (options.beforeSerialize && options.beforeSerialize(this, options) === false) { + log('ajaxSubmit: submit aborted via beforeSerialize callback'); + return this; + } + + var traditional = options.traditional; + if ( traditional === undefined ) { + traditional = $.ajaxSettings.traditional; + } + + var elements = []; + var qx, a = this.formToArray(options.semantic, elements); + if (options.data) { + options.extraData = options.data; + qx = $.param(options.data, traditional); + } + + // give pre-submit callback an opportunity to abort the submit + if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) { + log('ajaxSubmit: submit aborted via beforeSubmit callback'); + return this; + } + + // fire vetoable 'validate' event + this.trigger('form-submit-validate', [a, this, options, veto]); + if (veto.veto) { + log('ajaxSubmit: submit vetoed via form-submit-validate trigger'); + return this; + } + + var q = $.param(a, traditional); + if (qx) { + q = ( q ? (q + '&' + qx) : qx ); + } + if (options.type.toUpperCase() == 'GET') { + options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q; + options.data = null; // data is null for 'get' + } + else { + options.data = q; // data is the query string for 'post' + } + + var callbacks = []; + if (options.resetForm) { + callbacks.push(function() { $form.resetForm(); }); + } + if (options.clearForm) { + callbacks.push(function() { $form.clearForm(options.includeHidden); }); + } + + // perform a load on the target only if dataType is not provided + if (!options.dataType && options.target) { + var oldSuccess = options.success || function(){}; + callbacks.push(function(data) { + var fn = options.replaceTarget ? 'replaceWith' : 'html'; + $(options.target)[fn](data).each(oldSuccess, arguments); + }); + } + else if (options.success) { + callbacks.push(options.success); + } + + options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg + var context = options.context || this ; // jQuery 1.4+ supports scope context + for (var i=0, max=callbacks.length; i < max; i++) { + callbacks[i].apply(context, [data, status, xhr || $form, $form]); + } + }; + + // are there files to upload? + + // [value] (issue #113), also see comment: + // https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219 + var fileInputs = $('input[type=file]:enabled[value!=""]', this); + + var hasFileInputs = fileInputs.length > 0; + var mp = 'multipart/form-data'; + var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp); + + var fileAPI = feature.fileapi && feature.formdata; + log("fileAPI :" + fileAPI); + var shouldUseFrame = (hasFileInputs || multipart) && !fileAPI; + + var jqxhr; + + // options.iframe allows user to force iframe mode + // 06-NOV-09: now defaulting to iframe mode if file input is detected + if (options.iframe !== false && (options.iframe || shouldUseFrame)) { + // hack to fix Safari hang (thanks to Tim Molendijk for this) + // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d + if (options.closeKeepAlive) { + $.get(options.closeKeepAlive, function() { + jqxhr = fileUploadIframe(a); + }); + } + else { + jqxhr = fileUploadIframe(a); + } + } + else if ((hasFileInputs || multipart) && fileAPI) { + jqxhr = fileUploadXhr(a); + } + else { + jqxhr = $.ajax(options); + } + + $form.removeData('jqxhr').data('jqxhr', jqxhr); + + // clear element array + for (var k=0; k < elements.length; k++) + elements[k] = null; + + // fire 'notify' event + this.trigger('form-submit-notify', [this, options]); + return this; + + // utility fn for deep serialization + function deepSerialize(extraData){ + var serialized = $.param(extraData).split('&'); + var len = serialized.length; + var result = []; + var i, part; + for (i=0; i < len; i++) { + // #252; undo param space replacement + serialized[i] = serialized[i].replace(/\+/g,' '); + part = serialized[i].split('='); + // #278; use array instead of object storage, favoring array serializations + result.push([decodeURIComponent(part[0]), decodeURIComponent(part[1])]); + } + return result; + } + + // XMLHttpRequest Level 2 file uploads (big hat tip to francois2metz) + function fileUploadXhr(a) { + var formdata = new FormData(); + + for (var i=0; i < a.length; i++) { + formdata.append(a[i].name, a[i].value); + } + + if (options.extraData) { + var serializedData = deepSerialize(options.extraData); + for (i=0; i < serializedData.length; i++) + if (serializedData[i]) + formdata.append(serializedData[i][0], serializedData[i][1]); + } + + options.data = null; + + var s = $.extend(true, {}, $.ajaxSettings, options, { + contentType: false, + processData: false, + cache: false, + type: method || 'POST' + }); + + if (options.uploadProgress) { + // workaround because jqXHR does not expose upload property + s.xhr = function() { + var xhr = jQuery.ajaxSettings.xhr(); + if (xhr.upload) { + xhr.upload.addEventListener('progress', function(event) { + var percent = 0; + var position = event.loaded || event.position; /*event.position is deprecated*/ + var total = event.total; + if (event.lengthComputable) { + percent = Math.ceil(position / total * 100); + } + options.uploadProgress(event, position, total, percent); + }, false); + } + return xhr; + }; + } + + s.data = null; + var beforeSend = s.beforeSend; + s.beforeSend = function(xhr, o) { + o.data = formdata; + if(beforeSend) + beforeSend.call(this, xhr, o); + }; + return $.ajax(s); + } + + // private function for handling file uploads (hat tip to YAHOO!) + function fileUploadIframe(a) { + var form = $form[0], el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle; + var deferred = $.Deferred(); + + if (a) { + // ensure that every serialized input is still enabled + for (i=0; i < elements.length; i++) { + el = $(elements[i]); + if ( hasProp ) + el.prop('disabled', false); + else + el.removeAttr('disabled'); + } + } + + s = $.extend(true, {}, $.ajaxSettings, options); + s.context = s.context || s; + id = 'jqFormIO' + (new Date().getTime()); + if (s.iframeTarget) { + $io = $(s.iframeTarget); + n = $io.attr2('name'); + if (!n) + $io.attr2('name', id); + else + id = n; + } + else { + $io = $('