GForge v6.4.2 Released

Today we are happy to announce the release of GForge Advanced Server v6.4.2.  This is a primarily a bug fix release a few minor enhancements.

Download GForge Advanced Server v6.4.2 Now!

Notable Updates in GForge v6.4.2

  • Project Snapshots – We’ve a number of issues around project export and import.  If you need to move GForge projects between instances you’ll have to upgrade to 6.4.2.
  • LDAP/Active Directory – We now allow mixed mode authentication which allows users to login via LDAP/Active Directory or the database.  This is a great option for organizations that have internal users in LDAP and external stakeholders they want to give access to (via database accounts).  We have also provided a new script that will associate existing database accounts to their LDAP/Active Directory equivalents.
  • Syntax Highlighting – Web-based browsing of repositories now supports syntax highlighting.

The Gory Details

GForge v6.4.2 includes over 100 updates and few security updates so please be sure to checkout the Complete GForge v6.4.2 ChangeLog

Download GForge Advanced Server v6.4.2 Now!

HackISU: Intern Job Description

A quick run-down of the skills we’re looking for, and how we’ll put you to use.

Come and join a world-class company that supports thousands of project teams around the world.  We’re looking for folks to fill one or both of two categories:

  • First, customer service handling technical issues with customers – sysadmin stuff, configuration, tracking down log entries, etc.
  • Second, help with building new features and testing GForge Next.

What we’re looking for:

  1. Work from home 12-20 hours per week, Monday through Friday.  Specific start and end dates are very flexible.
  2. We’re pretty flexible on schedule, as long as the results are right.
  3. For support duties: A moderate amount of knowledge in Linux/Web systems administration.  Stuff like:
    • Linux basics (ps, grep/find, sed/awk, top, iostat, etc.)
    • Package mgmt (e.g., yum, apt-get, rpm, etc.)
    • Scripting (bash, php)
    • Apache httpd setup and config (conf files, modules, etc)
    • Version control tools like CVS, SVN, Git.
    • Bonus points for SQL and Postgres!
  4. For GForge Next development duties: 
    • Programming experience in PHP (or Python)
    • SQL basics (bonus points for Postgres)
    • Familiarity with HTML5 and CSS
    • Some Javascript programming experience
    • Extra bonus points for Angular 1.x experience.
  5. Great customer service attitude.  Especially when they might have done it to themselves.
  6. Last and most important: willingness to learn a lot of cool stuff, and share what you know every day.

Responsibilities of the Job:

  1. Make customers really happy by fixing their problems.
  2. Research issues that don’t have an easy answer.
  3. Willingness to dig into code to possibly give a better bug report to our engineering team.  Maybe even dig in and fix the bug yourself.
  4. Work from wherever you like, but be productive and respond quickly during working hours.
  5. Lean on other GForge staff and share knowledge whenever possible.
  6. Stay in the loop – email is a given.  We also camp out together in chat all day and have an informal daily standup, usually on Google Hangouts.
  7. Document solutions that can be re-used.
  8. Depending on how busy things are, we may even ask you to help test out new features and bug fixtures.

HackISU: Ideas for Using the GForge API

Last week we announced that we’ll be sponsoring HackISU this weekend up in Ames.  This is a great opportunity for young developers and engineers to have fun and gain experience working with technology. For our part, we are awarding $3,000 to the team that makes the best use of the GForgeNext API which we also recently discussed. Ahead of this weekend’s event, we wanted to share a couple of ideas for teams looking to use our API.

Mobile is king these days and because we’ve been spending so much time working towards getting GForgeNext out of beta we haven’t had a chance to tackle anything related to mobile.  There’s a couple of fairly straightforward ideas in the space worth considering:

  1. A mobile application that works with GForgeNext tickets.
  2. A messaging application that brings the existing GForgeNext chat functionality to mobile device.

We should have prefaced that these are just two ideas and both are specific to mobile but you may be able to come up with your own ideas after you look at the GForgeNext API documentation.  Feel free to let your imagination roam.  So dive into these two ideas a bit more.

Working with Tickets

At the core of GForgeNext is the ability to work with tickets.  Tickets can represent just about anything but in IT they are used to manage a workload.  For example, we use GForgeNext internally as a place to plan which features and bug fixes will go into our releases and then to assign that work out.  Taking this a step further, GForgeNext also lets individuals manage their own todo list.  Basically as work (often across multiple projects) is assigned to someone, they can add that work to their own todo list in priority order.  Here are a few screenshots from GForgeNext showing the existing functionality:

Browsing tickets
Browsing tickets

 

Editing a ticket
Editing a ticket

 

Creating a ticket
Creating a ticket

 

 

 

 

 

 

 

 

 

Managing todo list
Managing todo list

 

So basically we are looking for similar functionality from a mobile application.  To help we think these features would be great:

  1. Authentication (logging into GForgeNext)
  2. Viewing your list of projects
  3. Switching between projects
  4. Viewing tickets for a specific project
  5. Adding a new ticket
  6. Updating an existing ticket
  7. Searching for a ticket (regardless of project) by ID.
  8. Logout

If that much can be accomplished then here are ideas for extra credit:

  1. View your todo list
  2. Edit your todo list (move in/out of list, change order tickets within queue)

Again, these are just features we came up with but we definitely encourage teams to consider other features they might find useful.

GForge Chat

Chat in GForgeNext is a critical feature because it allows project teams to collaborate on their work.  We are often asked the question, “Why would I want yet another messaging application cluttering up my workstation or mobile phone?”.  Indeed, there are a lot of ways to collaborate on projects like email, SMS, instant messenger, IRC.  However, the utility of GForge Chat is rooted in the fact is it completely integrated with your projects.  Before I get into those specifics here is the chat window in GForgeNext:

GForgeNext Embedded Chat
GForgeNext Embedded Chat

 

Standalone Chat
Standalone Chat

 

This shows how chat will work in GForgeNext.  The left shows that whenever you are viewing a page specific to a project you will see the embedded chat window.  Eventually you will be able to pop the chat panel out into its own window into something that looks like the image on the right (which is our standalone chat in our current product).

In GForgeNext, because every project gets its own chat room we can leverage features that won’t exist using other messaging applications.  For example as activity is happening on a project, it is streamed into the chat room (e.g. user joining chat, an updated ticket, a new wiki page being created).  Additionally when discussing tickets in chat you can create auto links to ticket by using #-notation (e.g. typing in #1234 into chat would be rendered in chat as a link to ticket #1234).

With that in mind, here are a few features we’d like to see in a messaging application:

  1. Authentication
  2. Viewing your list of chat rooms (projects)
  3. Switching between chat rooms
  4. View the messages in a chat room (including project activity)
  5. Viewing users in the chat room
  6. Submitting a new message
  7. Auto linking to tickets using #-notation
  8. Auto completing @-notation of users to mention them (see yellow messages in screenshots above)
  9. Logging out

That’s a pretty aggressive list of features but some extra credit ideas might be:

  1. Deleting one of your own messages
  2. Push notifications of messages you are @-mentioned in.
  3. Uploading an image

We know you aren’t new to messaging applications so, again, we really encourage you to only use the ideas above as a starting point and we definitely welcome other ideas you can come up with.

Heading into Friday

This is a lot to digest but we really do want teams that use our API to hit the ground running so please definitely read up on the API, feel free to register for a beta account by submitting your email on https://next.gforge.com and if you have any questions before this weekend’s HackISU event send an email to feedback@gforgegroup.com

GForge is Sponsoring HackISU 2016

hackisuWe are happy to announce we are sponsoring HackISU by offering over $3000 in prizes in several different categories.  Plus internships.  And swag.  HackISU is a Hackathon that will be held on the Iowa State University Campus on February 19-21.  This is a great opportunity for budding geeks to hack software, hardware and network.  As sponsors we are providing a couple of incentives for participants to learn, use and even hack GForgeNext.

Best GForge API Application – $2400 ($600 per team member)

Build something great using our API – like a mobile version of Team Chat, a Task/Queue manager, a Team Status Wall, or whatever else you come up with.

We’ll be around for nearly all of the HackISU event, ready to demo the API, answer questions and provide any other assistance that’s legal.  Check out the live API and docs right now at https://next.gforge.com/apidoc

GForgeNext Beta Users – $1200 ($100 per person, up to 3 teams)

Use GForgeNext to store your code, manage tasks, and stay connected using integrated project chat, for free.  We’ll pick up to three teams, and give everyone $100 each.

Even after HackISU is done, you can keep using GForgeNext.  We’ll keep it free for academic use, even after the full product goes live.

Instant Interviews for Paid Summer Intern Positions

Got a resume handy?  Bring a copy for us and we’ll do a quick interview on the spot.  Our summer interns get paid real-world money to build real-world software.  Interns turn into part-time and full-time GForge employees on a regular basis.

GForge-Branded Swag, of course

We’ve got t-shirts, stickers, all kinds of stuff.  Find a reason to talk to us, and we’ll give you something cool.

For more about the GForge Group: https://gforgegroup.com

Any questions prior to the HackISU weekend? feedback@gforgegroup.com

Intro to the GForgeNext API

GForgeNext is the newest incarnation of our long-lived project collaboration tool.  It ties together all of the most important features that teams need to deliver big things – like task tracking, team chat and integrated source control.   And in the next several months, we’ll add a lot more.

Next employs a Single Page Application (SPA) front end, and relies on our public REST API for all of its functionality.  Everyone can now build great tools and integration points with GForge using the same REST API that we do.

On that topic, then, let’s explore the API and build an example or two.

REST Basics

There are plenty of good, detailed tutorials about REST.  Here are the basics you need to get started with ours:

  • REST deals in resources.  In our case, things like users and projects.
  • REST uses the HTTP verbs you already know to get things done.  GET, POST, PUT and DELETE are the most common.
  • REST also uses the same HTTP response codes that web pages use.  404?  That record doesn’t exist.  400?  You submitted something invalid.  500?  You broke it.
  • REST uses the normal query string and request body that HTML pages use.
  • Data is typically exchanged (submitted and returned) in JSON format, which is easy to handle on most platforms.
  • Our REST API also accepts regular FORM POST format, so it can be called even from static HTML pages or libcurl.
  • All of the resources, methods and parameters for the API are documented in our API Docs.

Logging In

GForge has very deep and flexible access controls, and the data you receive from the API will usually depend on the user requesting it.  You can submit a separate user ID and password with each request, or get a session ID (from the /usersession endpoint).

Using curl:

curl -X POST https://USERNAME:PASSWORD@next.gforge.com/api/usersession

Results in:

<pre>{
    "SessionHash":"e3403h9ldbssr2...o781jne2"
}

The POST verb is used to create data on the server – in this case, a new session ID is created if the user and password match up.  You can then use the session ID in place of the password for further requests.  In a browser, the session ID will also be set in a cookie just like visiting the login page on a web site.

To “log out” and remove this session:

curl -X DELETE https://USERNAME:SESSION@next.gforge.com/api/usersession/SESSION

Result:

   {"result":"success"}

Note that you have to include the session ID for both the authentication and to specify which session to delete.

Get Some Data

Now that we have an authenticated user, we can use it to get data from the API.  How about the user profile for a friend?

Request:


curl https://myuser:e3403...jne2@next.gforge.com/api/user/my_friend

Result:


 {"id":99999,"unixName":"my_friend","password":null,"firstName":"My","lastName":"Friend",
 "email":"my_friend@email.tld","status":1,"externalId":null,"isGroup":"N",
 "ccode":"US","language":"en ",
 "img_url":"/images/custom_avatars/99999.jpg",
 "details_url":"/api/user/my_friend/details","api_url":"/api/user/my_friend"}

What’s Next?

Read the API docs, and see what you can get under the /api/user and /api/project endpoints.  There are a whole bunch of sub-entities within each one.  Then maybe move on to /api/tracker or even /api/trackeritem to see tasks.

For the especially brave, try /api/poll…

Got questions?  Comments?  Bugs? Leave a comment, or find me on Twitter @mtutty.

Announcing the First GForgeNext Beta

Today we are announcing the immediate availability the first GForgeNext beta. With GForgeNext we are taking what we have learned about project collaboration over 15 years and distilling it down to what you need right now.

Who is GForgeNext for?

This first beta is just that, a beta.  GForgeNext is a redesign of some of the key features we offer in GForge Advanced Server.  In other words, it is a minimum viable product (MVP) and it offers the following features:

  • The ability to create an unlimited number of private projects and quickly send project invitations to your team.
  • Git Support
  • A basic ticketing system that supports a kanban view and Git integration.  You can quickly attach screenshots and documents via drag-n-drop.
  • Team Chat which is integrated with Git and the Ticketing system.  Chat also support drag-n-drop of any file including rendering support for images and YouTube videos.
  • A REST-ful API
  • User’s can manage their own todo list across all their projects.
  • The ability to control who has access to various parts of your project.

We are offering GForgeNext absolutely free*, the only thing we require is that you give us feedback on a regular basis. To make the feedback loop easy we provide a feedback button on every page that allows you to report bugs and to share ideas and enhancements.

Ideal organizations will run projects with 5 or more team members and, while not required, we’d love to see some organizations in or around Iowa to open up the possibility of collecting onsite feedback.

Are you interested?  Please request access now.  Those users given access to this first beta will be able to invite other users to their projects.  All users participating in the beta, not just the leads, will be able to create their own projects.

Still not sure?  Further below we share some screenshots of an actual project using GForgeNext.  If you still have questions please send them to feedback@gforgegroup.com.

* We really do mean free.  The only caveat is we haven’t determined how long GForgeNext will be free but we do know it will be for at least two years and that customers that join us during this first beta will receive steep discounts whenever we do begin charging for access.

Who Shouldn’t use GForgeNext

GForgeNext’s current features are stable and can be used as-is with the expectation these features will always perform as expected.  In fact, we are using GForgeNext internally.  That said, there are some features we have planned that haven’t been implemented yet.  These features will be released throughout the coming year but if you require them immediately then you should not use GForgeNext:

  • Workflow support in the ticketing system.
  • Peer code reviews via Git
  • SVN support
  • A document management system
  • Team Chat in a separate window with support for multiple projects.
  • Custom roles and access control – GForgeNext currently offers the following pre-defined roles: Lead and Contributor but eventually you’ll be able to add new roles and customize their level of access.

For now, GForgeNext is only offered as an online service so customers who require the ability to run GForgeNext on their own, internal network will need to wait until later this year. Current customers using GForge Advanced Server will receive regular email updates on the progress of GForgeNext and we will share the date of the first stable release as it approaches along with guides for planning your upgrade.

GForgeNext Screenshots

Project Homepage

Project_Home_-_GForge_AS_-_GForge_Next_and_GForge_AS_by_GForge_Group___GForge_Discussions

Navigation via MegaMenu

Project_Home_-_GForge_AS_-_GForge_Next

Project Administration

Team_-_GForge_AS_-_GForge_Next

Browsing Tickets

GForge__6_4_2__Remaining__-_GForge_Next

Kanban View of Tickets

GForge__6_4_2__Remaining__-_GForge_Next

Editing a Ticket

__8999___Commit_M____-_GForge_AS_-_GForge_Next

Git Support

Git_SCM_-_GForge_AS_-_GForge_Next_and_GForge_AS_by_GForge_Group___GForge_Discussions

API Documentation

Entity__Trackeritem_-_GForge_API_and_GForge_AS_by_GForge_Group___GForge_Discussions

Git Workflow in GForge

While GForge has support for CVS and SVN, most of our customers have moved on to Git.  What gets buried in that integration is our customers have a choice on how to use Git and they can have GForge enforce some basic rules.  Today we are going to address implementing a common Git workflow in GForge.

For small projects with one or two developers you may not require workflow and in these instances you can happily clone, commit and push changes right to your master branch.  GForge has been engineered to accommodate even the smallest of projects so we support this model just fine.  Organizations with larger projects don’t want developers pushing code to their master branch because it typically represents the current, stable build.  Instead they opt for a review process of new code that is then systematically reviewed and tested before being pushed to master.  GForge’s Git integration supports this and to show how it works we’ll be using a real-world example.

Internally our work uses the same workflow for new development work and bug fixes:

  1. Task is created
  2. Task is prioritized and eventually assigned to a developer by a project lead.
  3. Developer does their work
  4. Developer requests a code review
  5. Code review is performed and, if successful, is published for testing
  6. QA confirms the code is working through a series of tests.

To support this, our tasks have the following workflow through statuses:

  1. Awaiting Assignment
  2. Accepted
  3. Ready for Merge (Code review)
  4. Fixed: Test for Release
  5. Fixed: Closed

The steps above represent the happy path for all tasks.  We have additional workflow rules to cover the not-so-happy path for things like failed code review or failed test results.  To make this work in Git we have the follow rules:

  1. Our master branch in Git is always our last stable release.  So while we are currently working on GForge v6.4.2 the master branch currently holds a snapshot of v6.4.1.
  2. We have an integration branch called gforge-next.  This holds all of the work that has gone through the above steps for v6.4.2
  3. Each task assigned out get it’s own work branch, i.e. #1234-bugfix-of-some-sort.  These work branches hold only the code required to satisfy the work described in a single, atomic, task.

So naturally there needs to be a way for a workbench to get into gforge-next and then eventually into our master branch.  To handle this our internal tracker has a custom field we’ve created called “work branch”.  When a developer starts work on a new task they will create a new work branch from gforge-next and give it a name i.e. #1234-bugfix-of-some-sort. When they commit their work to that work branch they will push it and then move task #1234 into “Needs Merge” status.  Another developer will checkout the work branch and perform the code review.  Assuming the code review is accepted, then the developer who did the code review will merge the work branch into gforge-next.  For all the other tasks in a given milestone this same process would happen.   Here’s a screenshot of a ticket awaiting a code review:

GForge_AS_by_GForge_Group___Projects___GForge_AS___Tracker___GForge___Edit_Tracker_Item

As that is happening we deploy the gforge-next branch to a server where we do our testing.  This means that as tasks hit the “Fixed: Text for Release” status, QA will grab the task and test the task works as expected.  Once the tests pass then the task is marked “Fixed: Closed”.

Finally as we close out a milestone, say completing v6.4.2, once all the tasks have been marked “Fixed: Closed” we will then prepare a new GForge release by merging gforge-next into master and then tagging that state of master with the version number being released.  Incidentally, once we have updated master we will then go in and remove all the work branches and then begin work on the next major milestone.

As you can see, we place no restrictions in how you use Git and you can implement any Git workflow you want.  If you have questions regarding this feel free to post a comment below or customers can send questions to support@gforge.com.