Development: Difference between revisions

From SoylentNews
Jump to navigation Jump to search
(link to GitUse)
m (obfuscated links to @soylentnews to hide from spammers)
 
(42 intermediate revisions by 13 users not shown)
Line 1: Line 1:
This page should be merged with [[Dev/Sys]]
[[TeamPages]] - parent, [[SystemAdministration]]
 
==Welcome==
==Welcome==
We are currently looking for volunteers to help develop SoylentNews slashcode.  Anyone willing is free to help, but '''we really need good perl devs'''.  Slashcode is based heavily on perl and most pages have some type of perl code on them.  We also seek non-perl devs, there is plenty of stuff that you can do without touching the code too much.
We are currently looking for volunteers to help develop SoylentNews slashcode.  Anyone willing is free to help, but '''we really need good perl devs'''.  Slashcode is based heavily on perl and most pages have some type of perl code on them.  We also seek non-perl devs, there is plenty of stuff that you can do without touching the code too much.
Line 5: Line 6:
Our code is hosted on GitHub at https://github.com/SoylentNews/slashcode. Have a look and see how you can contribute.  Bugs are now on [https://github.com/SoylentNews/slashcode/issues GitHub Bugs].
Our code is hosted on GitHub at https://github.com/SoylentNews/slashcode. Have a look and see how you can contribute.  Bugs are now on [https://github.com/SoylentNews/slashcode/issues GitHub Bugs].


Volunteers should send an email to [mailto:dev@soylentnews.org dev@soylentnews.org] expressing your areas of interest and what your coding strengths are.  Also you can hop onto [[SoylentNews:IRC]] and join the #dev channel.  Come by and express your interest to paulej72, audioguy, or mrcoolbp.   
Volunteers should send an email to dev (at) soylentnews.org expressing your areas of interest and what your coding strengths are.  Also you can hop onto [[SoylentNews:IRC]] and join the #dev channel.  Come by and express your interest to paulej72, audioguy, or [[User:mrcoolbp|mrcoolbp]].   


Currently we are undergoing a bit of a reorganization and we hope to have more information available here soon about our short term and long term goals for the code.
Currently we are undergoing a bit of a reorganization and we hope to have more information available here soon about our short term and long term goals for the code.


== Who we are ==
== Who we are ==
* paulej72 -- Head catherder for Dev -- email:[mailto:paulej72@soylentnews.org paulej72@soylentnews.org]
<section begin=whoarewe />
* Ncommander -- The real head of Dev but due to time constrains of being the head of SN only a member.
{| class="wikitable" width="100%"
* audioguy -- right hand man to paulej72 and second in command for Dev. See [[AudioGuyWorkNotes]] for current todo and working notes
!colspan="3"|'''[[Development|Dev Team Main Page]]'''
* FatPhil -- perl/mysql odd-jobber, some ubuntu/sys knowledge too
|-
* robinld
| style="width: 20%; background-color: #f2f2f2;"|
* mechanicjay
'''nick'''
* martyb/bytram -- Database
| style="width: 40%; background-color: #f2f2f2;"|
'''position'''
| style="width: 40%; background-color: #f2f2f2;"|
'''timezone'''
|-
| paulej72<ref name="paulej72_notes">Working on template and css issues on the site, main bug herder. - email:[mailto:paulej72@soylentnews.org paulej72@soylentnews.org] [[Paulej72WorkNotes]]</ref>
| Team Leader for Dev
| UTC-4 (EST/EDT)
|-
| Ncommander
| Currently on concentrating on admin-ish stuff.
| UTC-5
|-
| martyb/bytram
| primary bug herder, Database (in training)
| UTC-4 (EST/EDT)
|-
| The Mighty Buzzard
| Code Monkey Extraordinaire
| UTC-6 (CST/CDT)
|-
| Xyem
| Code Monkey First Class
| GMT
|}
<section end=whoarewe />


== Index of Development Pages and Resources ==
== Index of Development Pages and Resources ==
Note: Any sort of code posted onto the wiki can now be syntax highlighted using the <nowiki><syntaxhighlight></nowiki> tag. It will default to perl, but can be changed to other languages. For example <nowiki><syntaxhighlight lang="sql"></nowiki>. More documentation is at [[mediawikiwiki:Extension:SyntaxHighlight_GeSHi]].


* [[ImportantDevelopmentLinks]] - Place to put urls for the repositories, etc. (Use current page for now, this page not needed - YET)
* [[ImportantDevelopmentLinks]] - Place to put urls for the repositories, etc. (Use current page for now, this page not needed - YET)
Line 28: Line 56:
* [[IncidentLog]] - Documentation of how incidents occurred and how they were mitigated
* [[IncidentLog]] - Documentation of how incidents occurred and how they were mitigated
* [[GitUse]] - Tutorial/advice on how to use git
* [[GitUse]] - Tutorial/advice on how to use git
* [[Dev/Sys|To-do]] - A list of items in the pipeline collected from various places


== Work Notes ==
== Work Notes ==
Line 35: Line 64:


== Resources ==
== Resources ==
* Linode 2048: SoylentNews Slash server
 
* Linode 2048: Database server
* [[SystemAdministration]] - See this section for actual server details and procedures
* GitHub https://github.com/SoylentNews/slashcode: Slashcode Repository and Issue Tracker
* GitHub https://github.com/SoylentNews/slashcode: Slashcode Repository and Issue Tracker
* Wiki: Documentation and work logs
* Wiki: Documentation and work logs
**Is this hosted on the svc linode? [[User:Mrcoolbp|mrcoolbp]] ([[User talk:Mrcoolbp|talk]]) 17:34, 13 March 2014 (UTC)
**hosted on the svc linode
* IRC: real time chat for team communications
* IRC: real time chat for team communications
* Slashcott.org: temporary testing server in use until we get ones setup on Linode.
* Slashcott.org: temporary testing server in use until we get ones setup on Linode.
* Mailman Dev Mailing list: for non-real-time discussions that need a good paper trail.
* Mailman Dev Mailing list: for non-real-time discussions that need a good paper trail.
* http://dev.mysql.com/doc/refman/5.5/en/index.html - Official docs for mysql we use
* https://perl.apache.org/start/index.html - modperl docs (We use version 1 with Apache 1.3)
* http://remote.demmers.org/~audioguy/manual/ - Apache 1.3 docs don't seem to be on the Apache site any more, here they are.
** http://remote.demmers.org/~audioguy/manual/misc/API.html but this is what is important to understand slash workings with mod perl.


== Slashcode Primer ==
== Slashcode Primer ==
Line 74: Line 107:
== Development VM ==
== Development VM ==


(audiogy note - will leave this here for the moment, it belongs on its own page as referenced above)
Please see [[DevelopmentVMHowto]] for the full How To.
 
The Dev VM can be downloaded from http://torrents.soylentnews.org/.  This is a vim that is designed to run on VirtualBox. Information and downloads of VirtualBox are available here: http://torrents.soylentnews.org/.
 
Once you get the VM downloaded and the VirtualBox up and ruining, you will want to do a '''File:Import Appliance''' in VirtualBox.  This will unpack the VM into you environment. Start up the VM and log in with the username and password of slash.
 
The VM has port forwarding setup to you local system for ssh and http. 
 
<blockquote><code>ssh: 8022<br/>
http; 1337</code></blockquote>
 
For ssh your connection string should be:
 
<blockquote><code>ssh slash@127.0.0.1 -p 8022</code></blockquote>
 
For websites, apache will use the name localhost instead of 127.0.0.1 so you will need to use:
 
<blockquote><code>http://localhost:1337 </code></blockquote>


Apache is turned off in the VM. You will need to turn it on using the command:
Additional notes: http://soylentnews.org/~crutchy/journal/114


<blockquote><code>apachectl start</code></blockquote>
==Integrated Development Environment==


The slash user home directory is in /srv/slashdev/. The slashcode GitHub repository is located in slashcode. This is where you will make changes to the code you want to test.  The actual slashcode install is located in slash.
<sub>'''Note''' This is a work in progress. Currently the Windows development environment seems mostly useless except for Syntax Highlighting and basic Code Navigation.</sub>


The first thing you should probably do is update the repo to the latest version.  cd to slashcode and run git pull.
:Regardless of what IDE (''Integrated Development Environment'') you choose to go with, you're going to require a Perl interpreter (With a built-in Debugger) and optionally the PadWalker module for variable inspection (Also used by built-in debugger).


Now we need to install the new code to slash.  Here is a script that will help with that. Create a new file called deployslash.sh in the slash home directory and give chmod it to 755.
=== Perl (Interpreter) ===
:Linux users generally already have a full Perl stack installed, so this resource is for Windows users. There's a number of different Perl interpreters available for Windows users. You can download ActivePerl for free below:


deployslash.sh
::* [http://www.activestate.com/activeperl/downloads www.activestate.com/activeperl/downloads]


<blockquote><code>#! /bin/sh<br/>
=== PadWalker (Variable Inspection) ===
<br/>
:* [http://perlmaven.com/padwalker perlmaven.com/padwalker]
echo === Install from git repo ===<br/>
echo<br/>
cd /srv/slashdev/slashcode<br/>
make USER=slash GROUP=slash SLASH_PREFIX=/srv/slashdev/slash install<br/>
<br/>
echo<br/>
echo<br/>
echo === Clean up CSS and install Templates ==<br/>
echo<br/>
rm -rf /srv/slashdev/slash/site/slashdev/htdocs/*css<br/>
<br/>
/srv/slashdev/slash/bin/symlink-tool -U<br/>
/srv/slashdev/slash/bin/template-tool -U<br/>
<br/>
echo<br/>
echo<br/>
echo === Restart Apache==<br/>
echo<br/>
/srv/slashdev/apache/bin/apachectl restart<br/>
</code></blockquote>


This script will be part of the next version of the Dev VM.
=== IDEs ===
==== Eclipse ====
:Eclipse with the ''EPIC'' Plug-In provides a great Perl IDE for Windows users. After installing ActivePerl and the PadWalker module you will need to install a Java Runtime.


To do simple updates, you would make changes to the files in slashcode and redeploy using the deployslash.sh script.
:'''Before you Begin:''' It's important to note that if you are running 64-bit Windows, you should choose the 64-bit JRE and pair it with a 64-bit Eclipse. They cannot be mis-matched (A 32-bit JRE with a 64-bit Eclipse or vice versa).


What if you want to develop code and have it merged into the main repo?  In this case you will need to setup your own copy of the repo do do your development work. First if you do not have your own account on GitHub please set one up. Next go to the slashcode site https://github.com/SoylentNews/slashcode and click on Fork in the upper right.  Fork the repo to your user account.
:'''Step 1)''':
:: Download Oracle's runtime for free below. You can choose the JRE (Runtime Environment) if you only want to do Perl/Slashcode development or the JDK (Development Kit) if you want to do Perl/Slashcode development and Java development in the future. Choosing the JRE will save you disk space:
:: [http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html Java Runtime Environment 7u55]
:: [http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html Java Developer Kit 7u55]


Now on the VM go to slashcode.  We will setup your copy of the repo as a remote.  Run the commands:
:'''Step 1.1)''':
:: After you have installed the JRE and restarted Windows, follow this guide from Oracle to setup the environment variables for Windows, including the PATH and CLASSPATH variables:
:: [http://docs.oracle.com/javase/tutorial/essential/environment/paths.html Environment Paths]


<blockquote><code> git remote add {name} {url-to-your-GitHub-repo}<br/>
:'''Step 2)''':
git fetch {name}<br/>
:: Install the Eclipse IDE. You can download the latest release (Kepler) for free below:
checkout {name}/master</code></blockquote><br/>
:: [http://eclipse.org/downloads/packages/eclipse-standard-432/keplersr2 Eclipse Kepler]


Redeploy slash and you are working from your own repo. As you may have noticed the primary work is being done on the master branch. You will not need to worry about the other branches of the code for now.
:'''Step 3)''':
::Install the free ''"EPIC"'' plug-in for Eclipse. This is done from within Eclipse and is fairly straight forward. From within Eclipse, click the "Help" top strip-menu and choose the "Install New Software" option. You can also find detailed instructions below, however they may become out of date:
:: [http://www.epic-ide.org/download.php www.epic-ide.org/download.php]<br />
==== Geany ====
::As an alternative to Eclipse, you can try Geany. Geany isn't exactly a full IDE like Eclipse, however you can setup the file locations of Perl and get a pretty good workflow going. You can download Geany for free below:


Once you get code you like, and have it committed to your personal fork, you can do a Pull Request, https://help.github.com/articles/using-pull-requests, that will create a ticket for the SoylentNews/slashcode repo to merge your commits to the master branch. After proper testing by the Dev team and other sanity checks, you code will be merged and eventually put on to the production servers.  
::: [http://www.geany.org/Download/Releases www.geany.org/Download/Releases]


==Notes==
<references />


Just a note: I am new to git, so the above directions are what I have been using.  If people have a better method for doing this please feel free to update this page with the new information --pauulej72.
[[Category:Development]]
[[Category:Teams]]

Latest revision as of 13:36, 22 January 2019

TeamPages - parent, SystemAdministration

Welcome

We are currently looking for volunteers to help develop SoylentNews slashcode. Anyone willing is free to help, but we really need good perl devs. Slashcode is based heavily on perl and most pages have some type of perl code on them. We also seek non-perl devs, there is plenty of stuff that you can do without touching the code too much.

Our code is hosted on GitHub at https://github.com/SoylentNews/slashcode. Have a look and see how you can contribute. Bugs are now on GitHub Bugs.

Volunteers should send an email to dev (at) soylentnews.org expressing your areas of interest and what your coding strengths are. Also you can hop onto SoylentNews:IRC and join the #dev channel. Come by and express your interest to paulej72, audioguy, or mrcoolbp.

Currently we are undergoing a bit of a reorganization and we hope to have more information available here soon about our short term and long term goals for the code.

Who we are

Dev Team Main Page

nick

position

timezone

paulej72[1] Team Leader for Dev UTC-4 (EST/EDT)
Ncommander Currently on concentrating on admin-ish stuff. UTC-5
martyb/bytram primary bug herder, Database (in training) UTC-4 (EST/EDT)
The Mighty Buzzard Code Monkey Extraordinaire UTC-6 (CST/CDT)
Xyem Code Monkey First Class GMT


Index of Development Pages and Resources

Note: Any sort of code posted onto the wiki can now be syntax highlighted using the <syntaxhighlight> tag. It will default to perl, but can be changed to other languages. For example <syntaxhighlight lang="sql">. More documentation is at mediawikiwiki:Extension:SyntaxHighlight_GeSHi.

Work Notes

Resources

Slashcode Primer

Slashcode is a complex beast. Here is the listing of the repo:

Bundle
Slash	
bin
docs
httpd
plugins
sbin
sql
tagboxes
themes
utils


We really are only concerned with three of these directories: Slash, plugins, and themes. The first directory, Slash, is the home of the slash.pm module and its related code. The module, slash.pm, does all of the back end work of slashcode. It provides a set of APIs that are used to generate pages and manipulate the database. This is where the heavy perl coding is done. We definitely need help with this section in both expanding our knowledge and working with the code. (As I started on this from a css/html slant I do not have a good idea of what is here --pauej72)

The second main part of the system are the themes. In this case we have only one theme called slashcode. The theme is broken down into pieces the first is htdocs. htdocs is all of the static html files, perl files that directly start page generation events, the css files, images, and other static code. The second part of the theme is the templates. These templates are loaded into the database an are used by slash to layout the data from different sources and turn them into html files that apache can send to the user. Templates re a mixture of perl, slash coding, and html. Templates use slash calls to load other templates and usually each template leaves a breadcrumb in the final html with a start and end comment with the template's name and id. These breadcrumbs make it easy to find out which template file is generating the particular piece of html that you need to change.

Slashcode also has a plugin architecture that allows certain system to be bolted on to the main system. The main system is basically articles, comments and users. The pulgins add the admin interface, the messaging system, enhanced login, journals, and other things. The files for these plugging are in the plugins folder, not in the theme folder. The issue with plugins is that it contains both front end code such as templates, css and pl files, it also has perl modules that are loaded into the perl engine.

The rest of the directories are used for build and install purposes and probably will not need to be modified regularly.

This is a work in progress so please check back here for more.

Development VM

Please see DevelopmentVMHowto for the full How To.

Additional notes: http://soylentnews.org/~crutchy/journal/114

Integrated Development Environment

Note This is a work in progress. Currently the Windows development environment seems mostly useless except for Syntax Highlighting and basic Code Navigation.

Regardless of what IDE (Integrated Development Environment) you choose to go with, you're going to require a Perl interpreter (With a built-in Debugger) and optionally the PadWalker module for variable inspection (Also used by built-in debugger).

Perl (Interpreter)

Linux users generally already have a full Perl stack installed, so this resource is for Windows users. There's a number of different Perl interpreters available for Windows users. You can download ActivePerl for free below:

PadWalker (Variable Inspection)

IDEs

Eclipse

Eclipse with the EPIC Plug-In provides a great Perl IDE for Windows users. After installing ActivePerl and the PadWalker module you will need to install a Java Runtime.
Before you Begin: It's important to note that if you are running 64-bit Windows, you should choose the 64-bit JRE and pair it with a 64-bit Eclipse. They cannot be mis-matched (A 32-bit JRE with a 64-bit Eclipse or vice versa).
Step 1):
Download Oracle's runtime for free below. You can choose the JRE (Runtime Environment) if you only want to do Perl/Slashcode development or the JDK (Development Kit) if you want to do Perl/Slashcode development and Java development in the future. Choosing the JRE will save you disk space:
Java Runtime Environment 7u55
Java Developer Kit 7u55
Step 1.1):
After you have installed the JRE and restarted Windows, follow this guide from Oracle to setup the environment variables for Windows, including the PATH and CLASSPATH variables:
Environment Paths
Step 2):
Install the Eclipse IDE. You can download the latest release (Kepler) for free below:
Eclipse Kepler
Step 3):
Install the free "EPIC" plug-in for Eclipse. This is done from within Eclipse and is fairly straight forward. From within Eclipse, click the "Help" top strip-menu and choose the "Install New Software" option. You can also find detailed instructions below, however they may become out of date:
www.epic-ide.org/download.php

Geany

As an alternative to Eclipse, you can try Geany. Geany isn't exactly a full IDE like Eclipse, however you can setup the file locations of Perl and get a pretty good workflow going. You can download Geany for free below:
www.geany.org/Download/Releases

Notes

  1. Working on template and css issues on the site, main bug herder. - email:paulej72@soylentnews.org Paulej72WorkNotes